from tkinter import * import tkinter.messagebox as msg root = Tk() root.title('井字棋') # labels Label(root, text="player1 : X", font="times 15").grid(row=0, column=1) Label(root, text="player2 : O", font="times 15").grid(row=0, column=2)
このコードでは、最初に tkinter
モジュールと tkinter.messagebox
モジュールをインポートしました。次に、root
という名前の Tk
オブジェクトを作成し、そのタイトルを設定します。ここではTic Tac Toeと名付けました。
次に、2 つの Label
オブジェクトを作成し、ルート ウィンドウの 1 行目 2 列目に配置します。 Label
オブジェクトのテキストはそれぞれ player1: X
および player2: O
で、フォント サイズは 15 ピクセルです。
最後に、msg
という名前の messagebox
オブジェクトを作成し、ルート ウィンドウに表示します。ユーザーがメッセージ ボックス内のボタンをクリックすると、メッセージ ボックスがユーザーのメイン ウィンドウに表示され、ユーザーが見ることができます。この例では、単にメッセージ ボックスを表示します。
button1 = Button(root, width=15, font=('Times 16 bold'), height=7, command=lambda: checker(1)) button1.grid(row=1, column=1) button2 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(2)) button2.grid(row=1, column=2) button3 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(3)) button3.grid(row=1, column=3) button4 = Button(root, width=15, height=7, font=('Times 16 bold'), command=lambda: checker(4)) button4.grid(row=2, column=1)
このコードは、Tkinter モジュールの Button コンポーネントの Python 実装です。 Tkinter では、Button ウィジェットを使用して、ユーザー イベントに応答してクリックできるボタンを作成できます。
9 つのボタン コンポーネントを宣言し、各コンポーネントのプロパティとメソッドを構成しました。各 Button コンポーネントのコード スニペットは、前の Button コンポーネントとは若干異なります。これは、このコードがウィンドウ、ラベル、ボタン、その他のウィジェットを含む完全な Tkinter アプリケーションであるためです。
この例では、Tkinter のレイアウト マネージャー Grid を使用して 9 つの Button コンポーネントを列に配置し、各ボタンの幅を 15 ピクセルに設定します。必要に応じて調整できるのは、Tkinter ウィンドウの Button コンポーネントの幅です。
最後に、各 Button コンポーネントに特定の操作を実行するラムダ関数を設定します。このラムダ関数は、Button コンポーネントの番号を表す 1 つのパラメーターを受け入れる名前のない関数です。この例では、各 Button コンポーネントにラムダ関数を設定して、指定された数値をチェックする再帰関数である Checker コンポーネントを呼び出します。 Checker コンポーネントの実装に関する具体的な詳細については、Tkinter 公式ドキュメントの個々の関数を参照してください。
ここではコードの一部のみを示します。残りの記述は同じです。
if digit == 1 and digit in digits: digits.remove(digit) ##player1 will play if the value of count is even and for odd player2 will play if count % 2 == 0: mark = 'X' panels[digit] = mark elif count % 2 != 0: mark = 'O' panels[digit] = mark button1.config(text=mark) count = count + 1 sign = mark if (win(panels, sign) and sign == 'X'): msg.showinfo("Result", "Player1 wins") root.destroy() elif (win(panels, sign) and sign == 'O'): msg.showinfo("Result", "Player2 wins") root.destroy()
このコードでは、カウンターと 2 つのマーカー (数字とマーク) を定義します。カウンタ数は、対応する操作を判断して実行するループの数を示します。
桁が 1 に等しく、桁が桁内にある場合、桁から桁が削除され、カウントのパリティに基づいてプレーヤー 1 または 2 のアクションが決定されます。 count が偶数の場合、プレーヤー 1 がゲームをプレイし、それ以外の場合はプレーヤー 2 がゲームをプレイします。
各ループで、count を 2 で割った余りが 0 の場合、mark は X に等しく、panel[digit] が mark に設定されます。 mark が O に等しい場合、panel[digit] を mark に設定します。
次に、ボタンコンポーネント button1 のテキストに mark を設定し、count を 1 加算し、mark に符号を設定し、符号の値に基づいてゲームの勝者を決定します。プレイヤー 1 がゲームに勝つと、「結果」メッセージが表示され、ウィンドウが閉じます。プレイヤー 2 がゲームに勝つと、「結果」メッセージが表示され、ウィンドウが閉じます。
各ループでは、符号の値に基づいてゲームの勝者が決定されます。ゲームにプレイヤー 1 が勝利し、符号が X に等しい場合、「結果」メッセージが表示され、ウィンドウが閉じます。プレーヤー 2 が勝ち、サインが O の場合、「結果」メッセージが表示され、ウィンドウが閉じられます。 ######効果############
以上がPython をベースにした簡単な三目並べゲームの作り方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。