pythonでコネクトフォー作ってみたPART2

おはようございます!にわこまです。

今回はpythonのpygameをつかって、コネクトフォーを作ってみました。本記事はPART2となるため、PART1を読みたい方はこちらからどうぞ

何かご指摘があればご連絡ください!

 

 

スポンサードサーチ


pygameでコネクトフォーつくってみた!

今回は、pythonでゲームを作るときに用いられるライブラリの1つである「pygame」をつかって、コネクトフォーを作りました。

 

コネクトフォーとは何ぞやという方のために少し説明します。

コネクトフォーとは、1対1のボードゲーム(アナログゲーム)です。6×7に分けられたグリッドに自分の色のディスクを交互に入れていき、先に縦横斜めで4つつなげた人の勝ちというルールです。

日本では、四目並べや五目並べと言われています。

 

今回は、約700行でプログラムを書くことが出来ました。コネクトフォーは動作が簡単であるため、pythonで何か作りたい人におすすめです。

また、いつもならdef(関数)だけで作っていますが、今回のプログラムは私の気分によりクラスを使って作っています。

 

コードの全文はこちらからどうぞ

 

pythonでクラスを使う参考になれたら幸いです。

 

 

コード

今回のコードは、「pythonでコネクトフォーつくってみたPART1」のコードに追加したり、削除したりして作成しました。

 

追加した部分

・DrawWindowクラスを新たに定義

・PlayerClassクラスへDrawWindowクラスの継承。また「from_pos_to_number」「draw_sentence」「draw_all」の3つの関数を新たに定義

・ComputerClassクラスへDrawWindowクラスの継承。また、「draw_sentence」「draw_all」の2つの関数を新たに定義

・DisplayOutputクラスへDrawWindowクラスの継承。また、「draw_title」「draw_select」「draw_winner」「draw_continue_or_end」「draw_end」の5つの関数を新たに定義

・その他

 

削減した部分

・コマンドプロンプトに表示していたprint文を削除

・DisplayOutputクラスの「opening」「ending」「output_field」の3つの関数を削除

・その他

 

追加した部分について、詳しく説明していきます。

DrawWindowクラス

新しく定義した「DrawWindow」について詳しく説明します。

DrawWindowは、文字や数字、ディスク、グリッドを表示するためのクラスです。

4つの関数が定義されています。

1つ目は、「draw_number」です。ディスクをどこの列に落とすか指定するために、グリッドの上部に数字を表示する関数です。赤い線で囲まれている数字のことです。

 

2つ目は、「draw_disc」です。ディスクを表示するための関数です。赤い線で囲まれている赤色の円や黄色の円がディスクを表しています。

 

3つ目は、「draw_field」です。6×7で区切るために線を引く関数です(グリッドを表示する関数)。赤い線で囲まれている格子状の線がグリッドを表しています。

 

4つ目は、「draw_all」です。上記3つの関数をまとめて表示するための関数です。基本的にはこの関数を使ってウィンドウに表示しています。

 

PlayerClassクラス

PlayerClassで新たに定義した3つの関数について説明します。

1つ目は「from_pos_to_number」です。クリックされた位置から数字に変換する関数です。引数にx軸の座標とy軸の座標をもらい、数字に変換します。

 

2つ目は「draw_sentence」です。プレイヤーのターンであることを知らせると共に、「0~7の数字を選ぶ」ように指示表示する関数です。赤い線で囲まれている部分のことです。

 

3つ目は「draw_all」です。上記2つの関数をまとめた関数です。プレイヤーの手番である時に表示するものをこの関数でまとめています。また、返却値はプレイヤーが選択した数字です。

 

ComputerClassクラス

ComputerClassで新たに定義した2つの関数について説明します。

1つ目は「draw_sentence」です。コンピュータのターンであることを示す文を表示する関数です。また、次に進むために「NEXT.」という文字を表示しています。

 

2つ目は「draw_all」です。draw_sentenceとその他コンピュータのターンに必要なものまとめた関数です。黒い下地に白い文字で「NEXT.」と書かれた部分をクリックすると次に進みます。

 

DisplayOutputクラス

DisplayOutputで新たに定義した5つの関数について説明します。

1つ目は「draw_title」です。タイトル画面を表示する関数です。

 

2つ目は「draw_select」です。先手か後手かを選ぶ画面を表示する関数です。

赤い円をクリックすると先手が選ばれ、赤いディスクがプレイヤーのディスクとなります。

黄色い円をクリックすると後手が選ばれ、黄色いディスクがプレイヤーのディスクとなります。

 

3つ目は「draw_winner」です。勝者を表示する関数です。プレイヤーが勝ったら「You won.」と表示され、コンピュータが勝ったら「Computer won.」と表示されます。

その後右下にある「NEXT.」をクリックすると、ウィンドウが更新されます。

 

4つ目は「draw_continue_or_end」です。勝敗が決まったのちに、続けるか終了するかの選択肢を表示する関数です。

「continue.」を選ぶとタイトル画面に戻ります。「end.」を選ぶとpygameが終了します。

 

5つ目は「draw_end」です。「end.」を選択した後に「See you next time.」を表示するための関数です。

 

 

スポンサードサーチ


使い方、遊び方

まず、こちらからコードを手にいれてください。

1.任意のフォルダーにファイルをダウンロードしてください

2.コマンドプロンプトを開いてください

windowsである場合は左下の検索ボックスに「cmd」と打ち込んでいただければコマンドプロンプトが表示されます。

3.ファイルを保存したフォルダーまで移動します。

4.「python ファイル名.py」と打ち込むとコネクトフォーを遊ぶことが出来ます。 ファイル名のところは保存したときの名前を入れてください。

パソコンにpythonとpygameが入っていないと遊ぶことが出来ません。

 

 

まとめ

今回は、pythonでゲームをつくるときに使われるライブラリの1つであるpygameをつかってコネクトフォーを作ってみました。

コネクトフォーは、ルールが単純であるため作りやすいゲームであると思います。

今回書いたコードも約700行で書く事ができたため、pythonで何か作りたいという人におすすめです。

 

最後までお読みいただきありがとうございます。


スポンサードサーチ