Tkinter UI を使用して Python で古典的なポン ゲームを作成する

1704466432
2024-01-05 11:24:34

SSaurel のブログで 2024 年の幕開けをするには、古典的なゲーム Pong を Python でコーディングするより良い方法はないでしょうか?

このステップバイステップのチュートリアルでは、ユーザー インターフェイスに Tkinter ライブラリを使用して、これを実行することをお勧めします。 ここでは、Python で簡単なゲームをプログラミングし、ユーザー インタラクションを管理する方法を示します。



ボールのデザインから始めましょう

ボールを設計するには、その位置と速度を定義する必要があります。 次に、このボールを表す四角形の座標の変化に応じてその位置を変更するメソッドを定義する必要があります。

ボールが 2 つの水平エッジのいずれかに触れたら、画面の中央からボールを​​再開する必要があります。 これは再起動メソッドで行われ、Python の Random ライブラリのランダム メソッドを使用して x 方向と y 方向をランダムに選択します。

最後に、作業の大部分はボールの移動方法で行われる必要があります。

いくつかのシナリオに対処する必要があります。 1つ目は、ボールが高さで外側のエッジに触れたときです。 この場合、ボールの方向を縦軸で反転する必要があります。 これは、ボールの現在の y 速度に -1 を乗じることによって行われます。

2つ目は、ボールが左右のパドルに接触したときです。 この場合、X 軸上の現在の速度を反転する必要があります。 これは、x での速度に -1 を乗じることによって行われます。

3 番目と 4 番目のケースでは、左側のプレーヤーと右側のプレーヤーに得点が入ります。 ボールが左側のエッジに触れると、右側のプレイヤーが 1 点を獲得します。 ボールが右側のエッジに触れると、左側のプレイヤーが 1 点を獲得します。

最後に、ボールの x 位置と y 位置を再生し、現在の速度を追加します。

これにより、Ball オブジェクトについて次のことがわかります。



パドルの設計に移りましょう

パドルをモデル化するには、Paddle オブジェクトを定義します。

この Paddle オブジェクトには、幅と高さに加えて、x 座標と y 座標が含まれます。 各パドルには、0 に初期化されたスコアが割り当てられます。また、最初にパドルを表す四角形を作成し、Tkinter ライブラリの create_rectangle メソッドによって返されたその ID を保存します。 この ID はパドルの座標を変更するために使用されます。

この ID を使用してパドルの座標を変更するには、draw メソッドを使用します。

トップメソッドとダウンメソッドはそれぞれパドルを上下に動かします。 変位には VELOCITY 定数が使用されます。 この定数は、ボールの位置が変更されるたびに使用されます。

最後に、 collideright メソッドと collideleft メソッドを使用して、パドルとボールがそれぞれ右と左に衝突するかどうかをテストします。 衝突が発生した場合、True を返します。これは、Pong ゲーム用に定義する Pong クラスで使用されます。

これにより、Paddle オブジェクトの次のコードが得られます。



ボールとパドルのオブジェクトを使用してポン ゲームをデザインします。

上記でモデル化された 2 つのオブジェクトを使用して、Pong オブジェクトのモデリングに進むことができます。

Pong オブジェクトには、2 つのパドルのスコアと、これらのスコアを表すためにキャンバス上に描画されたオブジェクトが保存されます。 これらは、スコアが更新されるたびに書き換えられる前に削除されます。 これにより、スコアが更新されるたびにキャンバス全体を削除する必要がなくなります。

ゲームのレンダリング中、ブール値は True に設定されます。

4 つのブール値は、各プレーヤーに選択された上/下キーが押されるかどうかを定義するために使用されます。 押すとパドルが作動します。 Paddle オブジェクトと Ball オブジェクトは Pong オブジェクト コンストラクターで作成されます。 キャンバスの Pack メソッドを呼び出してから、drawmiddlelines、drawbord、move メソッドをそれぞれ呼び出してゲームを開始します。

drawmiddlelines メソッドは、画面中央の線を垂直に描画します。

ドローボード メソッドはすべてのゲーム要素を描画します。 Tkinter ゲーム ウィンドウが閉じられたときにアプリケーションが確実に停止するように、OS ライブラリの _exit メソッドで使用される小さな回避策に注目してください。

ドローポイント メソッドは、画面上で 2 人のプレーヤーのスコアを描画するために使用されます。

move メソッドは X ミリ秒ごとに呼び出され、Pong ゲームの状態を更新します。 Python の Threading ライブラリの Timer オブジェクトを使用して、この繰り返しの呼び出しを処理します。 このメソッドでは、パドルを移動する必要があるかどうかを確認します。 その場合、私たちはそれに応じて行動します。

ボールの move メソッドを呼び出した後、返された状態を取得します。 状態が True の場合、ボールはボードの中心から再開する必要があることを意味します。 これを行うには、Pong オブジェクトの restart メソッドを呼び出します。この中では、Ball オブジェクトの restart メソッドのみを呼び出します。 では、なぜ別の方法を採用するのでしょうか? 将来的にゲームを改善し、再起動する動作をさらに追加するため。 この時点でサウンドを発することを選択できます…

keypress メソッドと keyrelease メソッドに関しては、キーボード イベントと に関連付けられています。 これにより、複数のキーボードのキーを同時に管理できるようになります。 左側のパドルには z / s キーを選択し、右側のパドルには o / l キーを選択します。

最後に、killtimer メソッドを使用してレンダリング フェーズを終了し、タイマーが実行中の場合はキャンセルします。

これにより、Pong オブジェクトの次のコードが得られます。



Pong ゲーム用のオブジェクトの組み立て

プログラムの最後の部分は、tk オブジェクトの TK メソッドを呼び出して UI のルートを作成するだけです。 Pong ゲームのインスタンスは、ボードのサイズとマージンをパラメーターとして渡すことによって作成されます。 これらはプログラムの開始時に定数として定義されます。

次に、 イベントと イベントを UI ルートにバインドし、Pong オブジェクト インスタンスの keypress メソッドと keyrelease メソッドをそれぞれ呼び出します。 最後に、Tkinter ウィンドウの十字のクリックに反応する WM_DELETE_WINDOW イベントをリッスンすることを忘れないでください。 これにより、タイマーが適切に終了し、Pong ゲームに関連付けられたプロセスが停止されることが保証されます。

これにより、Tkinter UI を使用した Python の Pong ゲームの次の完全なコードが得られます。


ポン ゲームの結果は以下でご覧いただけます。


このチュートリアルは、YouTube の SSaurel チャンネルで視聴することもできます。



Github 上のプログラム コードの最後には、ゲーム オーバーの制限を定義するなど、改善のためのアイデアもいくつか提案しました。 2 番目のパドルの AI を定義することもできます。 最後に、各オブジェクト間の依存関係を改善するために、必然的にいくつかの作業を行う必要があります。 これにより、独自の Python Pong ゲームをコーディングできるようになります。

コードを作成するのはあなた次第です。

#Tkinter #を使用して #Python #で古典的なポン #ゲームを作成する

Related News

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent News

Editor's Pick