こんにちは、ユクサスです!
今回でこのシリーズの最終回です!
ゲーム自体は前回の記事で完成させることができます。ですが、勉強を始めて約3ヶ月たったいまの知識を使って改めてコードを書き直しました。
今回はそれの解説とこのシリーズで伝えたいことを書き留めようと思います。
ぜひ、最後までお付き合いください!
この関連記事紹介も最後になります…
なんだか感慨深いものがあります…
↓【ゲーム制作】勉強始めて約3週間の初心者がEカードゲーム作ってみた まとめはこちらから
前回と同じく、使用言語は『Python』で、『Google Colaboratory』でコードの作成・実行しました。それぞれに関する記事も書いてるのでよろしければどうぞ!
↓使用したプログラミング言語『Python』についてはこちら
↓コードを書くのに使用した環境『Google Colaboratory』はこちら
↓このゲームを作るまでに学習した内容はこちら
3週間もあれば余裕で習得できるよ!笑
それでは、いきましょう!
改めて作ったコード
基本的な作りとゲーム流れは今までと同じです。
新しく用意したものと改変したところを中心に解説していきます
新しく設定した初期値
まずは、コードを見ていきます。
今回は、新たに4つの初期値を設定しました。
赤い枠で囲まれた部分です
カードの種類を表すリスト
このリストでは、カードの役職を表しています。
これを新たに設定することで、#5で紹介した悲劇を回避できます!
意外と簡単に回避することができました。
プレイヤーの出したカードを保存するリスト
これは、初期値として最初に空のリストを生成し、後にプレイヤーの出したカードを保存します。
- player_card はコンピュータ戦でのプレイヤーの出したカード
- player1_card は対人戦のプレイヤー1の出したカード
- player2_card は対人戦のプレイヤー2の出したカード
新しく設定した関数
勝敗を判定する関数だけ新しくしました。
前回までのjudge関数はこちら。
新しく設定したリストを使い、よりコンパクトでわかりやすくしました。
前回まで
- 番号で設定したカード毎に場合分け
⬇︎
今回から
- カードの種類毎に場合分け
実は、これによって#5で紹介した悲劇も回避できるようになりました!
悲劇の回避
まず、悲劇について改めて紹介します。
- 各回で出したカードを辞書から削除する
- 辞書が削除されたことにより、judge関数がうまく働かない
- 2回戦以降にエラー表示が出てるようになる
- 解決方法は各回の最後にカードを消去し、次の回の最初の辞書の表示の後に消したカードを再び辞書に戻す
簡単にまとめるとこんな感じです。
このエラーで私は何日も悩まされ、心が折れそうになりました
この悲劇の1番の原因は、judge関数が番号で設定したカード毎に場合分けしていたことです。
そもそも勝敗は3つの役職の組み合わせで判定するのに、なぜが辞書のカード毎に場合分けしていました。
今考えたら当たり前のことでした
でも、当時は全く気づかなかった…
しかし、今回からのjudge関数だとカードの種類で判定します。
なので、辞書から消去してもしっかり判定することができます!
ゲームの流れのコード
最後にゲーム流れのコードを紹介します。
基本的には同じですが、ここが1番変わったところかもしれません。
今まで
- 各回毎にコーディング
⬇︎
- その結果コードの行数がすごいことに…
今回から
- 各回の基本的なコードは同じ
⬇︎
- 繰り返し処理でコードを短縮
繰り返し処理を使うことにより、コードが圧倒的にコンパクトで見やすくなりました!
それでは、コードを見ていきましょう!
コンピュータ戦のコード
まず、コンピュータ戦の皇帝デッキ使用時のコードから解説していきます。
繰り返しには、while文を使いました。
まず最初に turn という変数を1で設定します。この変数は名前の通りターン数を表しています。
また、プレイヤーの出したカードは最初に紹介した player_card というリストに保存してきます。
そして、最後にjudge関数の結果によって場合分けしていきます。
- 勝敗が決定した時
- 勝敗が決まらない時
たったこれだけで、今までの処理と同じことができます!
使用したデッキが違うときは、今までと同じように一部を変えるだけです!
対人戦のコード
ここでは、プレイヤー1が皇帝デッキに時について解説していきます。
基本的に変わったところは、コンピュータ戦と同じです。
ただ、プレイヤー1が出したカードを player1_card に、プレイヤー2が出したカードを player2_card に入れるのを舞い違えないようにしましょう。
最後に辞書からの消すのも忘れずに!
改めてコードを作って
以上でコードの解説はおしまいです。
一緒にコードを作ってくれた方は今回のコードを作ってたら、そのコンパクトさに驚くと思います。
今までのが酷すぎましたから…
それでも、このゲームの解説は終わりです。本当にお疲れ様です。
最後にこのシリーズで伝えたいことをまとめますので、どうぞ見ていってください!
このシリーズで伝えたいこと
このシリーズは、「初心者でもこういうことができる!」・「大変だけど自分でコーディングするのは楽しい!」というのを特にプログラミング初心者さんに伝えたくて始めました。
これを伝えるために、解説は細く丁寧にやってきたつもりです。
うまく説明できたかな…
もし、何かありましたらコメントしていただけると嬉しいです。
プログラミングは難しいと言われるように、どんなに頑張ってもうまく進まないってこともあると思います。
ひどいときは、何日か経ってやっとわかるということもあります。
特に初心者さんは多いと思います
というより、私がそうです…
そうして心が折れてしまう前に、息抜きにでもこのシリーズでゲームを作って『プログラミングの楽しさ』を実感できてば幸いです。
今はまだこの記事だけですが、ゲーム制作の記事は今後もいろいろ書いていく予定です。
何か「こういうゲームを作ってほしい」などありましたら、リクエストお待ちしてます。
さいごに
最後にもう一度、一緒にゲームを作ってくれたは本当にお疲れ様です。そして、ありがとうございます。
そしてここまで作れれば、もう立派なプログラマーです!
これからも、みなさんと一緒に楽しんでプログラミングを勉強できる記事づくりに励みます。
何事も楽しむのがモットー
これからもどうぞよろしくお願いします。
では、また別の記事で!
コメント