py地牢游戏

小于:啊?啊!地牢!

于妈:又说梦话,吓死了!

于爸:沉睡中……

小于:起来工作了!

滴滴滴滴滴!(电话)

小于:嗯?谁呀?

老板:今日任务——地牢游戏。

 (嗯嗯,简单!)

小于:老板做完了!

电脑上的py文章:

首先,我们可以修改地牢布局,使用不同的字符表示不同类型的房间、怪物和宝藏。例如,'-'表示通道,'R'表示房间,'M'表示怪物,'T'表示宝藏,'E'表示出口。


dungeon = [
    ['S', '-', '-', '-', '-', 'E'],
    ['-', 'M', '-', '-', '-', '-'],
    ['-', '-', 'R', '-', 'M', '-'],
    ['T', '-', 'R', '-', 'M', '-'],
    ['-', '-', 'R', 'M', 'T', '-'],
    ['-', '-', '-', '-', '-', '-']
]

接下来,我们可以为不同类型的房间、怪物和宝藏创建相应的类,并在地牢布局中使用它们。这样可以更好地管理房间中的信息和行为。


class Room:
    def __init__(self):
        self.description = '一个普通的房间'

class Monster:
    def __init__(self, name, hp, atk, defe):
        self.name = name
        self.hp = hp
        self.atk = atk
        self.defe = defe

class Treasure:
    def __init__(self, value):
        self.value = value

dungeon = [
    ['S', '-', '-', '-', '-', 'E'],
    ['-', Monster('怪物1', 50, 5, 2), '-', '-', '-', '-'],
    ['-', '-', Room(), '-', Monster('怪物2', 60, 8, 3), '-'],
    [Treasure(20), '-', Room(), '-', Monster('怪物3', 70, 10, 5), '-'],
    ['-', '-', Room(), Monster('怪物4', 80, 15, 6), Treasure(30), '-'],
    ['-', '-', '-', '-', '-', '-']
]

然后,我们可以修改角色与怪物战斗的机制,根据怪物的类型和属性来决定战斗的结果。例如,可以引入攻击力和防御力的随机变化以增加战斗的不确定性。


def encounter_enemy():
    enemy = dungeon[x][y]
    enemy_hp = enemy.hp + random.randint(-5, 5)
    enemy_atk = enemy.atk + random.randint(-2, 2)
    enemy_def = enemy.defe + random.randint(-2, 2)
    print('你遇到了一个敌人!')
    print('敌人的血量:', enemy_hp)
    print('敌人的攻击力:', enemy_atk)
    print('敌人的防御力:', enemy_def)
    while enemy_hp > 0 and player['hp'] > 0:
        player_damage = max(0, player['atk'] - enemy_def)
        enemy_damage = max(0, enemy_atk - player['def'])
        print('你对敌人造成了', player_damage, '点伤害')
        enemy_hp -= player_damage
        if enemy_hp <= 0:
            print('你击败了敌人!')
            player['exp'] += random.randint(10, 20)
            if player['exp'] >= player['level'] * 50:
                level_up()
            return
        print('敌人对你造成了', enemy_damage, '点伤害')
        player['hp'] -= enemy_damage
        print('你的血量剩余:', player['hp'])
        if player['hp'] <= 0:
            print('你被敌人击败了!游戏结束。')
            exit()

老板:我叫你写py文章了?代码!

……

​
import random

class Room:
    def __init__(self):
        self.description = '一个普通的房间'

class Monster:
    def __init__(self, name, hp, atk, defe):
        self.name = name
        self.hp = hp
        self.atk = atk
        self.defe = defe

class Treasure:
    def __init__(self, value):
        self.value = value

def encounter_enemy():
    enemy = dungeon[x][y]
    enemy_hp = enemy.hp + random.randint(-5, 5)
    enemy_atk = enemy.atk + random.randint(-2, 2)
    enemy_def = enemy.defe + random.randint(-2, 2)
    print('你遇到了一个敌人!')
    print('敌人的血量:', enemy_hp)
    print('敌人的攻击力:', enemy_atk)
    print('敌人的防御力:', enemy_def)
    while enemy_hp > 0 and player['hp'] > 0:
        player_damage = max(0, player['atk'] - enemy_def)
        enemy_damage = max(0, enemy_atk - player['def'])
        print('你对敌人造成了', player_damage, '点伤害')
        enemy_hp -= player_damage
        if enemy_hp <= 0:
            print('你击败了敌人!')
            player['exp'] += random.randint(10, 20)
            if player['exp'] >= player['level'] * 50:
                level_up()
            return
        print('敌人对你造成了', enemy_damage, '点伤害')
        player['hp'] -= enemy_damage
        print('你的血量剩余:', player['hp'])
        if player['hp'] <= 0:
            print('你被敌人击败了!游戏结束。')
            exit()

def level_up():
    player['level'] += 1
    player['atk'] += random.randint(5, 10)
    player['def'] += random.randint(2, 5)
    player['max_hp'] += random.randint(10, 20)
    player['hp'] = player['max_hp']
    print('你升级了!现在是', player['level'], '级。')
    print('你的最大血量已增加至', player['max_hp'])

player = {
    'level': 1,
    'exp': 0,
    'hp': 100,
    'max_hp': 100,
    'atk': 10,
    'def': 5
}

dungeon = [
    ['S', '-', '-', '-', '-', 'E'],
    ['-', Monster('怪物1', 50, 5, 2), '-', '-', '-', '-'],
    ['-', '-', Room(), '-', Monster('怪物2', 60, 8, 3), '-'],
    [Treasure(20), '-', Room(), '-', Monster('怪物3', 70, 10, 5), '-'],
    ['-', '-', Room(), Monster('怪物4', 80, 15, 6), Treasure(30), '-'],
    ['-', '-', '-', '-', '-', '-']
]

x, y = 0, 0

while True:
    if x < 0 or x >= len(dungeon) or y < 0 or y >= len(dungeon[0]):
        print('你走出了地牢。游戏结束。')
        break

    room = dungeon[x][y]

    if room == 'S':  # 起始点
        print('你进入了地牢。')
    elif room == 'E':  # 出口
        print('你找到了出口!恭喜你逃脱了地牢。游戏结束。')
        break
    elif isinstance(room, Room):  # 普通房间
        print(room.description)
    elif isinstance(room, Monster):  # 怪物房间
        encounter_enemy()
    elif isinstance(room, Treasure):  # 宝藏房间
        player['exp'] += room.value
        print('你找到了宝藏!经验值增加', room.value, '点。')

    direction = input('请选择要走的方向(上/下/左/右):')
    if direction == '上':
        x -= 1
    elif direction == '下':
        x += 1
    elif direction == '左':
        y -= 1
    elif direction == '右':
        y += 1
    else:
        print('输入无效,请重新输入。')

​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值