インターフェイスを備えたシンプルなデジタル Huarong Road ゲームを迅速に実装するための純粋な Python コード

        Number Huarong Road は、数字のマス目の位置を移動して正しい順序に並べることを目的とした古典的なパズル ゲームです。ゲーム ボードは、1 から 15 までの番号が付けられた正方形と空白の正方形を含む 4x4 のグリッドで構成されます。

        ゲームが開始されると、数字のマス目がランダムにシャッフルされ、マス目に埋められます。プレイヤーは空白のマスの位置を利用し、番号の付いたマスの位置を入れ替えながら、小さいマスから大きいマスの順に並べていきます。プレイヤーはキーボードの上下左右の矢印キーを使用して、数字の四角を空白の四角の位置に移動できます。

        プレイヤーの目標は、番号の付いたすべてのマス目を正しい順序でグリッドに配置し、最短のステップ数でゲームを完了することです。ゲームの難易度はデジタル ブロックの最初のシャッフルに依存し、場合によってはゲームを完了するために複雑な一連の動きが必要になる場合があります。

        「Digital Huarong Road」は、プレイヤーの論理的思考、空間認識、問題解決能力を鍛えることができる、シンプルでありながら挑戦的なゲームです。これは一般的な知能競争イベントでもあり、教育やエンターテイメントの分野で広く使用されています。

主な依存ライブラリは tkinter で、完全なソース コードは次のとおりです。

import tkinter as tk
import random

# 初始化游戏板
def initialize_board():
    board = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, None]]
    return board

# 打乱游戏板
def shuffle_board(board, moves=100):
    directions = ['up', 'down', 'left', 'right']
    for _ in range(moves):
        direction = random.choice(directions)
        move(board, direction)

# 移动数字
def move(board, direction):
    i, j = get_blank_position(board)
    if direction == 'up' and i > 0:
        board[i][j], board[i-1][j] = board[i-1][j], board[i][j]
    elif direction == 'down' and i < 3:
        board[i][j], board[i+1][j] = board[i+1][j], board[i][j]
    elif direction == 'left' and j > 0:
        board[i][j], board[i][j-1] = board[i][j-1], board[i][j]
    elif direction == 'right' and j < 3:
        board[i][j], board[i][j+1] = board[i][j+1], board[i][j]

# 获取空格位置
def get_blank_position(board):
    for i in range(len(board)):
        for j in range(len(board[i])):
            if board[i][j] is None:
                return i, j

# 检查游戏是否完成
def is_game_over(board):
    return board == [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, None]]

# 更新游戏界面
def update_board():
    for i in range(4):
        for j in range(4):
            if board[i][j] is not None:
                button = buttons[board[i][j]]
                button.grid(row=i, column=j)
            else:
                buttons[None].grid(row=i, column=j)

# 处理键盘事件
def key_press(event):
    key = event.keysym.lower()
    if key == 'up':
        move(board, 'up')
    elif key == 'down':
        move(board, 'down')
    elif key == 'left':
        move(board, 'left')
    elif key == 'right':
        move(board, 'right')
    update_board()
    if is_game_over(board):
        label.config(text="恭喜你,游戏完成!", fg="green")

# 创建游戏界面
def create_gui():
    global board, buttons, label

    window = tk.Tk()
    window.title("数字华容道")

    board = initialize_board()
    shuffle_board(board)

    buttons = {}
    for i in range(1, 16):
        buttons[i] = tk.Button(window, text=str(i), width=10, height=5, command=lambda i=i: button_click(i))

    buttons[None] = tk.Button(window, text="", width=10, height=5, state=tk.DISABLED)

    update_board()

    label = tk.Label(window, text="请使用键盘上下左右方向键移动数字", fg="black")
    label.grid(row=4, columnspan=4)

    window.bind('<KeyPress>', key_press)
    window.mainloop()

if __name__ == '__main__':
    create_gui()

実行結果は次のとおりです。数値を入力せずにキーボードの矢印キーを使用して中央のブロックを移動するだけです。



主に PyQt5 ライブラリに依存するデジタル Huarongdao ゲームの迅速な実装に関する私の他の記事も参照してください。

Python がデジタル華龍島ゲームを迅速に実装_華龍島プログラム_ASS-ASH のブログ - CSDN ブログ

コード量は約2倍(89→165)になりましたが、ゲームインターフェースの美しさはある程度向上しました。

おすすめ

転載: blog.csdn.net/qq_38563206/article/details/134338127