ホームページ  >  記事  >  バックエンド開発  >  Python をベースにした簡単な三目並べゲームの作り方

Python をベースにした簡単な三目並べゲームの作り方

WBOY
WBOY転載
2023-05-19 14:29:371396ブラウズ

基本フレームワーク

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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。