制作冰火人小游戏代码
时间: 2023-07-31 08:12:22 浏览: 380
这里是一个简单的 Python 冰火人小游戏:
```python
import random
# 定义地图大小
MAP_SIZE = 10
# 定义地图元素
EMPTY = '-'
FIRE = 'F'
ICE = 'I'
PLAYER = 'P'
# 定义游戏状态
ON_GOING = 0
WIN = 1
LOSE = 2
# 初始化地图
def init_map():
# 创建一个空的二维列表
map = [[EMPTY for i in range(MAP_SIZE)] for j in range(MAP_SIZE)]
# 在地图上随机生成火和冰,数量为地图大小的一半
for i in range(MAP_SIZE // 2):
x = random.randint(0, MAP_SIZE - 1)
y = random.randint(0, MAP_SIZE - 1)
if map[x][y] == EMPTY:
map[x][y] = FIRE
x = random.randint(0, MAP_SIZE - 1)
y = random.randint(0, MAP_SIZE - 1)
if map[x][y] == EMPTY:
map[x][y] = ICE
# 在地图中心生成玩家
map[MAP_SIZE // 2][MAP_SIZE // 2] = PLAYER
return map
# 打印地图
def print_map(map):
for i in range(MAP_SIZE):
for j in range(MAP_SIZE):
print(map[i][j], end=' ')
print()
# 移动玩家
def move_player(map, direction):
player_x, player_y = find_position(map, PLAYER)
if direction == 'w':
new_x = player_x - 1
new_y = player_y
elif direction == 's':
new_x = player_x + 1
new_y = player_y
elif direction == 'a':
new_x = player_x
new_y = player_y - 1
elif direction == 'd':
new_x = player_x
new_y = player_y + 1
else:
return False
if new_x < 0 or new_x >= MAP_SIZE or new_y < 0 or new_y >= MAP_SIZE:
return False
if map[new_x][new_y] == EMPTY:
map[new_x][new_y] = PLAYER
map[player_x][player_y] = EMPTY
elif map[new_x][new_y] == FIRE:
return LOSE
elif map[new_x][new_y] == ICE:
map[new_x][new_y] = PLAYER
map[player_x][player_y] = EMPTY
if check_win(map):
return WIN
return ON_GOING
# 查找指定元素的位置
def find_position(map, element):
for i in range(MAP_SIZE):
for j in range(MAP_SIZE):
if map[i][j] == element:
return i, j
return None
# 检查是否胜利
def check_win(map):
for i in range(MAP_SIZE):
for j in range(MAP_SIZE):
if map[i][j] == ICE:
return False
return True
# 游戏主循环
def main():
map = init_map()
print_map(map)
while True:
direction = input("输入方向(w/s/a/d): ")
result = move_player(map, direction)
print_map(map)
if result == WIN:
print("恭喜你获胜了!")
break
elif result == LOSE:
print("很遗憾你失败了!")
break
if __name__ == '__main__':
main()
```
运行以上代码后,控制台会打印出一个初始地图,然后要求输入方向(w/s/a/d)来移动玩家,直到游戏结束为止。玩家需要躲过火和收集冰,当收集完所有的冰之后,游戏胜利,当撞到火时,游戏失败。