使用Python编写一个简单的拼图游戏
发布时间:2023-12-04 15:17:27
以下是一个使用Python编写的简单拼图游戏的代码:
import random
def create_board(size):
"""创建一个初始拼图板"""
board = []
num = 1
for _ in range(size):
row = []
for _ in range(size):
row.append(num)
num += 1
board.append(row)
board[size-1][size-1] = " "
return board
def display_board(board):
"""显示当前拼图板"""
size = len(board)
for i in range(size):
print(" | ".join(str(x) for x in board[i]))
if i != size - 1:
print("--"*(size-1))
def get_blank_position(board):
"""获取空格的位置"""
size = len(board)
for i in range(size):
for j in range(size):
if board[i][j] == " ":
return i, j
def move(board, direction):
"""移动"""
size = len(board)
blank_i, blank_j = get_blank_position(board)
if direction == "up" and blank_i > 0:
board[blank_i][blank_j], board[blank_i-1][blank_j] = board[blank_i-1][blank_j], board[blank_i][blank_j]
elif direction == "down" and blank_i < size-1:
board[blank_i][blank_j], board[blank_i+1][blank_j] = board[blank_i+1][blank_j], board[blank_i][blank_j]
elif direction == "left" and blank_j > 0:
board[blank_i][blank_j], board[blank_i][blank_j-1] = board[blank_i][blank_j-1], board[blank_i][blank_j]
elif direction == "right" and blank_j < size-1:
board[blank_i][blank_j], board[blank_i][blank_j+1] = board[blank_i][blank_j+1], board[blank_i][blank_j]
else:
print("Invalid move!")
def is_win(board):
"""判断是否拼图完成"""
size = len(board)
num = 1
for i in range(size):
for j in range(size):
if i == size-1 and j == size-1:
if board[i][j] != " ":
return False
elif board[i][j] != num:
return False
num += 1
return True
def play_game(size):
"""拼图游戏主函数"""
board = create_board(size)
random.shuffle(board) #使用随机移动初始化拼图板
while not is_win(board):
display_board(board)
direction = input("Enter a move (up, down, left, right): ")
move(board, direction.lower())
print("Congratulations! You win!")
# 使用例子
play_game(3)
这个拼图游戏使用一个二维列表来表示拼图板,其中数字代表拼图的位置,空格代表空位。游戏开始时,会随机移动拼图,玩家需要输入移动方向来将拼图复原到正确的位置。
首先,create_board 函数根据输入的尺寸创建一个初始的拼图板。然后 display_board 函数用来显示当前的拼图板。get_blank_position函数用来获取空格的位置。move函数用来移动拼图。is_win函数判断当前的拼图是否已经完成。最后,play_game函数是拼图游戏的主函数,它通过调用其他函数来执行游戏的整个过程。
使用例子中,play_game(3) 表示创建一个3x3的拼图板,然后开始游戏。玩家需要根据提示输入移动的方向("up", "down", "left", "right"),直到将拼图还原完成。
希望以上内容对您有帮助!
