enumerate写一个拼图程序
时间: 2023-12-07 13:03:43 浏览: 47
这里是一个使用Python的enumerate函数来实现拼图游戏的简单示例:
```python
import random
# 拼图游戏的类
class PuzzleGame:
def __init__(self):
self.size = 3
self.board = [[str(i + j * self.size + 1) for i in range(self.size)] for j in range(self.size)]
self.board[self.size-1][self.size-1] = " "
# 打印出当前拼图的状态
def print_board(self):
for row in self.board:
print("|".join(row))
# 移动拼图块
def move(self, tile):
for i, row in enumerate(self.board):
for j, item in enumerate(row):
if item == tile:
if i > 0 and self.board[i-1][j] == " ":
self.board[i][j], self.board[i-1][j] = self.board[i-1][j], self.board[i][j]
return True
elif i < self.size-1 and self.board[i+1][j] == " ":
self.board[i][j], self.board[i+1][j] = self.board[i+1][j], self.board[i][j]
return True
elif j > 0 and self.board[i][j-1] == " ":
self.board[i][j], self.board[i][j-1] = self.board[i][j-1], self.board[i][j]
return True
elif j < self.size-1 and self.board[i][j+1] == " ":
self.board[i][j], self.board[i][j+1] = self.board[i][j+1], self.board[i][j]
return True
else:
return False
# 判断是否完成拼图
def is_solved(self):
flat_board = [item for row in self.board for item in row]
return flat_board == [str(i) for i in range(1, self.size*self.size)] + [" "]
# 主程序
if __name__ == "__main__":
game = PuzzleGame()
game.print_board()
# 打乱拼图
moves = 50
for i in range(moves):
tile = random.choice([item for row in game.board for item in row])
game.move(tile)
# 开始游戏
while not game.is_solved():
tile = input("请输入要移动的数字(q退出):")
if tile == "q":
break
if game.move(tile):
game.print_board()
else:
print("无法移动此块,请重新输入。")
if game.is_solved():
print("恭喜,你完成了拼图!")
```
该程序使用一个类来表示拼图游戏,并提供了打印当前拼图状态、移动拼图块和判断是否完成拼图的方法。程序先打印出初始的拼图状态,然后随机移动若干次拼图块来打乱拼图。接下来,程序会要求用户输入要移动的数字,然后尝试移动这个块。如果移动成功,程序会打印出新的拼图状态;如果移动失败,程序会提示用户重新输入。如果用户成功完成拼图,程序会输出恭喜信息。