请写一段rougelike游戏的代码
时间: 2024-03-18 20:16:50 浏览: 18
以下是一个简单的roguelike游戏的代码示例,使用Python编写:
```python
import random
# 游戏地图
MAP_WIDTH = 10
MAP_HEIGHT = 10
game_map = [[0 for y in range(MAP_HEIGHT)] for x in range(MAP_WIDTH)]
# 玩家状态
player_hp = 20
player_attack = 5
player_defense = 3
player_x = 0
player_y = 0
# 敌人状态
enemy_hp = 10
enemy_attack = 3
enemy_defense = 1
enemy_x = random.randint(1, MAP_WIDTH - 1)
enemy_y = random.randint(1, MAP_HEIGHT - 1)
# 游戏循环
while player_hp > 0 and enemy_hp > 0:
# 显示地图和玩家状态
for y in range(MAP_HEIGHT):
for x in range(MAP_WIDTH):
if x == player_x and y == player_y:
print("P", end="")
elif x == enemy_x and y == enemy_y:
print("E", end="")
else:
print(".", end="")
print()
print("Player: HP={}, Attack={}, Defense={}".format(player_hp, player_attack, player_defense))
# 玩家行动
action = input("Move (WASD) or Attack (X)? ")
if action == "w":
player_y -= 1
elif action == "a":
player_x -= 1
elif action == "s":
player_y += 1
elif action == "d":
player_x += 1
elif action == "x":
damage = max(0, player_attack - enemy_defense)
enemy_hp -= damage
print("Player attacks enemy for {} damage.".format(damage))
# 敌人行动
if random.random() < 0.5:
# 敌人攻击玩家
damage = max(0, enemy_attack - player_defense)
player_hp -= damage
print("Enemy attacks player for {} damage.".format(damage))
else:
# 敌人移动
dx = player_x - enemy_x
dy = player_y - enemy_y
if abs(dx) > abs(dy):
if dx > 0:
enemy_x += 1
else:
enemy_x -= 1
else:
if dy > 0:
enemy_y += 1
else:
enemy_y -= 1
# 游戏结束
if player_hp <= 0:
print("Game over. You died.")
else:
print("Victory! You defeated the enemy.")
```
这个游戏简单地展示了一个10x10的地图,并在上面放置玩家和敌人。玩家可以通过移动和攻击来与敌人交互。游戏继续进行直到玩家或敌人的生命值降为0。