用python实现扫雷游戏
时间: 2023-06-17 09:08:01 浏览: 61
好的,以下是一个简单的 Python 扫雷游戏的实现:
```python
import random
class Minesweeper:
def __init__(self, size=10, mines=10):
self.size = size
self.mines = mines
self.grid = [[0 for i in range(size)] for j in range(size)]
self.visible = [[False for i in range(size)] for j in range(size)]
self.generate_mines()
def generate_mines(self):
count = 0
while count < self.mines:
x = random.randint(0, self.size-1)
y = random.randint(0, self.size-1)
if self.grid[x][y] != -1:
self.grid[x][y] = -1
count += 1
self.calculate_numbers()
def calculate_numbers(self):
for i in range(self.size):
for j in range(self.size):
if self.grid[i][j] == -1:
continue
count = 0
if i > 0 and j > 0 and self.grid[i-1][j-1] == -1:
count += 1
if i > 0 and self.grid[i-1][j] == -1:
count += 1
if i > 0 and j < self.size-1 and self.grid[i-1][j+1] == -1:
count += 1
if j > 0 and self.grid[i][j-1] == -1:
count += 1
if j < self.size-1 and self.grid[i][j+1] == -1:
count += 1
if i < self.size-1 and j > 0 and self.grid[i+1][j-1] == -1:
count += 1
if i < self.size-1 and self.grid[i+1][j] == -1:
count += 1
if i < self.size-1 and j < self.size-1 and self.grid[i+1][j+1] == -1:
count += 1
self.grid[i][j] = count
def show(self):
print(" ", end="")
for i in range(self.size):
print(" " + str(i), end="")
print()
for i in range(self.size):
print(str(i) + " ", end="")
for j in range(self.size):
if not self.visible[i][j]:
print(".", end="")
elif self.grid[i][j] == -1:
print("*", end="")
elif self.grid[i][j] == 0:
print(" ", end="")
else:
print(str(self.grid[i][j]), end="")
print()
def check_win(self):
for i in range(self.size):
for j in range(self.size):
if self.grid[i][j] != -1 and not self.visible[i][j]:
return False
return True
def play(self):
while True:
self.show()
x = int(input("Enter x coordinate: "))
y = int(input("Enter y coordinate: "))
if self.grid[x][y] == -1:
print("Game over!")
break
self.visible[x][y] = True
if self.check_win():
print("You win!")
break
game = Minesweeper()
game.play()
```
这个实现使用了一个 `Minesweeper` 类来表示扫雷游戏,并提供了生成地图、计算数字、显示地图、检查胜利、玩游戏等方法。你可以直接运行这个文件来试玩。