1683664111
2023-05-09 11:42:41
あなたを示すチュートリアルを提案した後 Python でサイトマップ ジェネレーターを作成するプログラムの開発方法、私は小さなゲームの作成で Python 言語への復帰を続けています。
ここでの目標は、Python に標準で付属している Tkinter GUI ライブラリの使用方法を示すことです。 私が選んだゲームは革新的ではありませんが、私たちが開発しようとしているプログラムが完成したら、少しだけプレイできるほど興味深いものです。
このゲームは Flipping Bits と呼ばれます。
あなたがプログラマーなら、キャリアの中で少なくとも 1 回は開発したことがあると思いますが、まだ開発していない場合は、そのギャップを埋めるチャンスです。
ランダムに生成された 0 と 1 で構成される正方格子 (2 次元) から、次の 2 種類の操作を実行して目的の格子を取得することを目標とします。
- 列をクリックすると、列のすべての 0 と 1 が逆になります。 この操作は、列の反転と呼ばれます。
- 行をクリックすると、その行のすべての 0 と 1 が逆になります。 この操作は行の反転と呼ばれます。
ターゲット グリッドを取得したら、このパズルを解きます。
具体的には、3×3 次元の初期グリッドを次に示します。
0 1 0
1 0 0
1 1 1
取得するグリッドは次のとおりです。
1 0 1
0 1 1
0 0 1
最初のグリッドの列 1 をクリックすると、次の構成になります。
1 1 0
0 0 0
0 1 1
等々。
プログラムのモデリング
私たちのプログラムは2つのクラスに分かれています。
最初のものは フリッピングビットゲーム 列と行を反転するだけでなく、新しいグリッドを生成するメソッドでゲーム自体をモデル化するクラス。
2番目のクラスが呼び出されます FlippingBitsGUI. グラフィカルな部分だけでなく、ユーザーとの対話も管理することで、ゲームのグラフィカルな部分をモデル化します。 ここでは特に、列と行のクリックと、プレーヤーに勝ったことを伝えるメッセージについて考えます。
0 を具体化するには、黄色を使用します。 青色は番号 1 用に予約されます。
グリッドの正方形を表示する場合、その正方形のターゲット カラーの小さな正方形を左上隅に配置する必要があります。 これにより、プレイヤーは Flipping Bits Game を解決するために到達すべき目標を知ることができます。
FlippingBitsGame クラスの作成
のコンストラクタで フリッピングビットゲーム クラス、定義します レベル データメンバーとして。 これは、正方形グリッドのサイズに対応します。 次に、到達するグリッドと現在のグリッドをそれぞれ格納する 2 つの 2 次元配列を定義します。
ブール値を定義します 解決した グリッドが解決されているかどうかを示します。 最後に、後で定義するメソッド newgame を呼び出します。 新しいゲームを作成できるようになります。
次に、 フリップコル メソッドと フリップロウ 方法。
の フリップコル メソッドは、解決されるグリッド内の列のセルのすべての値を反転します。 の フリップロー メソッドは、グリッドの行のセルの値に対して同じ仕事をします。
これらのメソッドが呼び出されると、0 は 1 になり、1 は 0 になります。
これにより、これら 2 つのメソッドの次のコードが得られます。
ターゲットとプレーヤーがプレイするグリッドとの間に異なるグリッドを作成するために、 シャッフル 行と列で異なる反転操作をランダムに実行するメソッド。
これにより、次のコードが得られます。
の 新しいゲーム その後、メソッドを定義できます。 新しいゲームは、グリッドが解決済みとしてマークされている場合にのみ作成できます。 これを行うには、解決されたデータ メンバーの値を確認します。
次に、現在のものとは異なるターゲット グリッドを作成するために反復します。 このためには、 シャッフル メソッドを呼び出して、現在のグリッドをターゲット グリッドにコピーします。
現在のグリッドがまだ解決されていない場合、作業は終了です。 それ以外の場合は、反復が続行されます。 すでに解決済みのグリッドをプレイヤーに提案するのは残念です…
このクラスのコードを完成させるために残っています フリッピングビットゲーム メソッドで 解決済み 現在のグリッドが到達するグリッドに対応しているかどうかを確認します。
これにより、次のコードが得られます フリッピングビットゲーム クラス:
FlippingBitsGUI クラスの作成
私たち フリッピングビットゲーム クラスが終了し、次に進む時間です FlippingBitsGUI 解決するグリッドの状態をユーザーに表示するだけでなく、相互作用を管理するクラス。
インタラクションとは、クリックして列または行をフリップしてグリッドを解決し、左上隅に小さな四角として表示されるターゲット グリッドに到達することを意味します。
のコンストラクタで FlippingBitsGUI クラスを使用して、ゲームのインスタンスを作成します。 フリッピングビットゲーム クラス。
入力パラメータとして、ゲームがレンダリングされる Canvas を作成できる GUI のルートを取得します。 最後に、画面にグリッドを表示する drawboard メソッドを呼び出します。
この内 ドローボード メソッドを呼び出してキャンバスをリセットします。 消去 キャンバス オブジェクトのメソッド。
正方形に表示するボックスの数に関連して、正方形のサイズを計算します。 また、左上隅に表示される小さな正方形のサイズも計算します。
次に、グリッドを格納できるように、テーブルの各セルを反復処理する必要があります。 各セルに対して、セルの値が 0 の場合は黄色、それ以外の場合は青色で塗りつぶされた四角形を描画します。
メソッドの最後で、ユーザーがゲームを解決したかどうかを確認します。 解決済み の方法 フリッピングビットゲーム 物体。 ゲームが解決された場合、クリックするだけで新しいゲームを生成できることをユーザーに伝えるメッセージを表示します。
これにより、次のコードが得られます ドローボード 方法:
列を反転するには、ユーザーのクリックを管理する必要があります。 特に難しいことはありませんが、クリックを列または行の番号に変換するには注意が必要です。
明らかに、何よりもまず、グリッドがまだ解決されていないことを確認します。 そうである場合、このクリックは、新しいセットを生成する必要があることを意味します。
次に、ユーザーがクリックした座標を取得します。 これらの座標がグリッドの外側にあることを確認します。 クリックがグリッドの右側または左側にある場合、線が反転します。 次に、 フリップロー 上のメソッド フリッピングビットゲーム 実例。
クリックがグリッドの上部または下部にある場合、列が反転します。 次に、 フリップコル 上のメソッド フリッピングビットゲーム 実例。
これらの操作が完了したら、 ドローボード GUIを再描画するメソッド。
これにより、次のコードが得られます オンクリック 方法:
クラスの組み立て
最後に、クラスを組み立ててゲームを起動する必要があります。 私たちは、 根 への呼び出しを介して Tk の方法 tk Tkinter からのオブジェクト。 私たちは作成します FlippingBitsGUI レベルを 5 に設定します。マウスの左ボタンを オンクリック の方法 FlippingBitsGUI 物体。 を呼び出してアプリケーションを起動します。 メインループ Tkinter ルートのメソッド。
これにより、ゲームの次の完全なコードが得られます。
私たちのフリッピング ビット ゲームの実行中
Flipping Bits Game を実行できるので、チュートリアルの最良の部分はここにあります。
これが私たちを待っている最初の表示です。
残された唯一のことは、解決策を見つけることです。 数回クリックすると、多かれ少なかれ論理的推論 (:P) に応じて、次の解決されたグリッドが得られます。
![](https://www.ssaurel.com/blog/wp-content/uploads/2023/05/FlippingBits-solved-1024x744.jpg)
このチュートリアルを YouTube で見る
#Tkinter #を使用して #Python #でフリッピング #ビット #ゲームを作成する #Android #Android