写一个简单的扫雷代码
以下是一个简单的扫雷代码,使用Python语言实现:
import random
初始化扫雷地图
def init_map(n, m, bomb_num): map = [[0 for j in range(m)] for i in range(n)] bomb_list = random.sample(range(n*m), bomb_num) for bomb in bomb_list: i = bomb // m j = bomb % m map[i][j] = -1 for x in range(max(0, i-1), min(n, i+2)): for y in range(max(0, j-1), min(m, j+2)): if map[x][y] != -1: map[x][y] += 1 return map
打印扫雷地图
def print_map(map): for i in range(len(map)): for j in range(len(map[0])): if map[i][j] == -1: print("*", end=" ") else: print(map[i][j], end=" ") print()
游戏主循环
def game_loop(map): n, m = len(map), len(map[0]) visited = [[False for j in range(m)] for i in range(n)] while True: print_map(visited_map(map, visited)) row = int(input("请输入行号:")) col = int(input("请输入列号:")) if map[row][col] == -1: print("您踩到地雷了,游戏结束!") break else: visited[row][col] = True if is_win(map, visited): print_map(map) print("恭喜您获胜了!") break
获取已访问地图
def visited_map(map, visited): visited_map = [[-1 for j in range(len(map[0]))] for i in range(len(map))] for i in range(len(map)): for j in range(len(map[0])): if visited[i][j]: visited_map[i][j] = map[i][j] return visited_map
判断是否获胜
def is_win(map, visited): for i in range(len(map)): for j in range(len(map[0])): if map[i][j] != -1 and not visited[i][j]: return False return True
if name == 'main': n = 10 m = 10 bomb_num = 10 map = init_map(n, m, bomb_num) game_loop(map)
原文地址: https://www.cveoy.top/t/topic/8Qs 著作权归作者所有。请勿转载和采集!