小于:啊?啊!地牢!
于妈:又说梦话,吓死了!
于爸:沉睡中……
小于:起来工作了!
滴滴滴滴滴!(电话)
小于:嗯?谁呀?
老板:今日任务——地牢游戏。
(嗯嗯,简单!)
小于:老板做完了!
电脑上的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('输入无效,请重新输入。')