帮我写一个扫雷游戏代码
时间: 2023-08-20 10:15:06 浏览: 64
好的,下面是一个简单的扫雷游戏代码,使用 Python 语言编写:
```python
import random
# 初始化地图
def init_map(row, col, num):
map = [[0 for i in range(col)] for j in range(row)]
count = 0
while count < num:
x = random.randint(0, row - 1)
y = random.randint(0, col - 1)
if map[x][y] == 0:
map[x][y] = 9
count += 1
for i in range(row):
for j in range(col):
if map[i][j] != 9:
count = 0
for x in range(max(0, i - 1), min(row, i + 2)):
for y in range(max(0, j - 1), min(col, j + 2)):
if map[x][y] == 9:
count += 1
map[i][j] = count
return map
# 显示地图
def show_map(map):
for i in range(len(map)):
for j in range(len(map[0])):
if map[i][j] == 9:
print('*', end=' ')
elif map[i][j] == 0:
print('.', end=' ')
else:
print(map[i][j], end=' ')
print()
# 挖开格子
def dig(map, x, y):
if map[x][y] == 9:
return False
elif map[x][y] == 0:
map[x][y] = -1
for i in range(max(0, x - 1), min(len(map), x + 2)):
for j in range(max(0, y - 1), min(len(map[0]), y + 2)):
if map[i][j] != -1:
dig(map, i, j)
else:
map[x][y] = -1
return True
# 判断是否胜利
def is_win(map):
for i in range(len(map)):
for j in range(len(map[0])):
if map[i][j] > 0:
return False
return True
# 主函数
def main():
row = 10
col = 10
num = 10
map = init_map(row, col, num)
while True:
show_map(map)
x = int(input('请输入行坐标(0-9): '))
y = int(input('请输入列坐标(0-9): '))
if dig(map, x, y):
if is_win(map):
print('你赢了!')
break
else:
print('你输了!')
show_map(map)
break
if __name__ == '__main__':
main()
```
这个扫雷游戏中,使用数字 0-8 表示周围雷的数量,数字 9 表示雷,符号 \* 表示未挖开的方格,符号 . 表示已挖开但周围没有雷的方格。玩家通过输入行列坐标来挖开方格,如果挖到雷就输了,如果所有没有雷的方格都被挖开就赢了。
阅读全文