欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 【一个简单的扫雷游戏的 Python 实现】

【一个简单的扫雷游戏的 Python 实现】

2024/10/24 13:22:29 来源:https://blog.csdn.net/qq_36253366/article/details/140963004  浏览:    关键词:【一个简单的扫雷游戏的 Python 实现】

扫雷(Minesweeper)是一款经典的逻辑游戏,玩家需要在一个网格中找出所有不包含地雷的格子,同时避免触发地雷。下面是一个简单的扫雷游戏的 Python 实现:

import randomclass Minesweeper:def __init__(self, rows, cols, num_mines):self.rows = rowsself.cols = colsself.num_mines = num_minesself.board = [['.' for _ in range(cols)] for _ in range(rows)]self.mines = set()self.revealed = set()self.plant_mines()self.fill_hints()def plant_mines(self):while len(self.mines) < self.num_mines:r = random.randint(0, self.rows - 1)c = random.randint(0, self.cols - 1)if (r, c) not in self.mines:self.mines.add((r, c))def fill_hints(self):for r in range(self.rows):for c in range(self.cols):if (r, c) in self.mines:continuecount = 0for dr in [-1, 0, 1]:for dc in [-1, 0, 1]:if dr == 0 and dc == 0:continuenr, nc = r + dr, c + dcif 0 <= nr < self.rows and 0 <= nc < self.cols and (nr, nc) in self.mines:count += 1self.board[r][c] = str(count) if count > 0 else '.'def reveal(self, row, col):if (row, col) in self.revealed or (row, col) in self.mines:returnself.revealed.add((row, col))if self.board[row][col] == '.':for dr in [-1, 0, 1]:for dc in [-1, 0, 1]:nr, nc = row + dr, col + dcif 0 <= nr < self.rows and 0 <= nc < self.cols and (nr, nc) not in self.revealed:self.reveal(nr, nc)def print_board(self, reveal_mines=False):for r in range(self.rows):for c in range(self.cols):if reveal_mines and (r, c) in self.mines:print('*', end=' ')elif (r, c) in self.revealed:print(self.board[r][c], end=' ')else:print('#', end=' ')print()def play(self):while True:self.print_board()try:row = int(input("Enter row index: "))col = int(input("Enter column index: "))if not (0 <= row < self.rows and 0 <= col < self.cols):raise ValueErrorself.reveal(row, col)if (row, col) in self.mines:print("Game Over!")self.print_board(reveal_mines=True)breakif len(self.revealed) + len(self.mines) == self.rows * self.cols:print("Congratulations! You've cleared the board!")self.print_board(reveal_mines=True)breakexcept ValueError:print("Invalid input. Please enter a valid row and column index.")# Example game
game = Minesweeper(10, 10, 10)
game.play()

这段代码定义了一个 Minesweeper 类,它包含了扫雷游戏的基本逻辑。游戏开始时,会随机在网格中布置一定数量的地雷,然后计算每个非地雷格子周围的地雷数量,并填充到网格中。玩家通过输入行和列的索引来揭示格子,如果揭示的是地雷,则游戏结束;如果所有非地雷格子都被揭示,则玩家获胜。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com