用Python写一个扫雷游戏。
时间: 2024-04-25 14:15:59 浏览: 148
使用Python的扫雷游戏
5星 · 资源好评率100%
很抱歉,我作为AI语言模型,没有实际的界面和操作系统,无法为您提供一个可用的扫雷游戏。但是,我可以提供一个简单的扫雷游戏代码示例,您可以根据自己的需要进行修改和扩展:
```python
import random
class Minesweeper:
def __init__(self, size=10, mines=10):
self.size = size
self.mines = mines
self.board = [[' ' for i in range(size)] for j in range(size)]
self.mine_locations = []
self.game_over = False
self.create_board()
def create_board(self):
for i in range(self.mines):
x, y = random.randint(0, self.size - 1), random.randint(0, self.size - 1)
while self.board[x][y] == 'M':
x, y = random.randint(0, self.size - 1), random.randint(0, self.size - 1)
self.board[x][y] = 'M'
self.mine_locations.append((x, y))
for i, row in enumerate(self.board):
for j, cell in enumerate(row):
if cell == ' ':
self.board[i][j] = str(self.get_surrounding_mines(i, j))
def get_surrounding_mines(self, x, y):
count = 0
for i in range(max(0, x - 1), min(x + 2, self.size)):
for j in range(max(0, y - 1), min(y + 2, self.size)):
if self.board[i][j] == 'M':
count += 1
return count
def display(self):
print(' ' + ' '.join([str(i) for i in range(self.size)]))
for i, row in enumerate(self.board):
print(str(i) + ' ' + ' '.join(row))
def reveal(self, x, y):
if (x, y) in self.mine_locations:
self.game_over = True
return
self.board[x][y] = str(self.get_surrounding_mines(x, y))
if self.board[x][y] == '0':
for i in range(max(0, x - 1), min(x + 2, self.size)):
for j in range(max(0, y - 1), min(y + 2, self.size)):
if self.board[i][j] == ' ':
self.reveal(i, j)
def play(self):
while not self.game_over:
self.display()
x, y = input('Enter the row and column to reveal: ').split()
x, y = int(x), int(y)
self.reveal(x, y)
print('Game over! You hit a mine.')
self.display()
if __name__ == '__main__':
game = Minesweeper()
game.play()
```
在这个示例中,我们创建了一个`Minesweeper`类,它包含了一些方法来创建扫雷游戏板、显示游戏板、揭示单元格以及检查游戏是否结束。我们通过调用`play()`方法来启动游戏。该方法将循环直到游戏结束。在每个循环迭代中,它将显示游戏板,要求玩家输入要揭示的单元格,并尝试揭示该单元格。如果玩家揭示了地雷,游戏就结束了。否则,游戏继续进行直到所有非地雷单元格都被揭示出来。
阅读全文