【ゲーム制作】勉強始めて約3週間の初心者がEカードゲーム作ってみた #5

ユクサス

こんにちは、ユクサスです!

 前回は、第1回までのコードを解説しました。今回は第5回までのコードと、前回まで何度か出てきた悲劇についても話していこうと思います!

↓【ゲーム制作】勉強始めて約3週間の初心者がEカードゲーム作ってみた まとめはこちらから

あわせて読みたい
【ゲーム制作】勉強始めて約3週間の初心者がEカードゲーム作ってみた まとめ こんにちは、ユクサスです!  このページは、【ゲーム制作】勉強始めて約3週間の初心者がEカードゲーム作ってみた のまとめページです。  このシリーズもそこそこの回...

 前回と同じく、使用言語は『Python』で、『Google Colaboratory』でコードの作成・実行しました。それぞれに関する記事も書いてるのでよろしければどうぞ!

↓使用したプログラミング言語『Python』についてはこちら

あわせて読みたい
Pythonって何?初心者目線でPythonでできることを紹介! こんにちは、ユクサスです! いざ、「プログラミングを始めよう!」、と思っても一体何から始めればいいか悩んでいませんか? プログラミングを始めるのに、最初に決め...

↓コードを書くのに使用した環境『Google Colaboratory』はこちら

あわせて読みたい
【初心者必見!】グーグルコラボラトリーのメリットと使い方まで紹介しちゃいます! こんにちは、ユクサスです!  前々回の記事、初心者ブロガーの初級プログラミング#3では、Progateレッスン3で習った内容について書きました。そしてレッスン3の最後で...

↓このゲームを作るまでに学習した内容はこちら

ユクサス

3週間もあれば余裕で習得できるよ!笑

あわせて読みたい
初心者ブロガーの初級プログラミングシリーズ まとめ このページは、『初心者ブロガーの初級プログラミング』シリーズのまとめページです!  今はまだ記事数が少ないですが、後々記事が多くなった時のために先にまとめペー...
ユクサス

それでは、いきましょう!

目次

ゲームコードの概要

今回もまずゲームコードの概要を確認していこうと思います!

  1. 辞書として、数字を『キー』、カードを『値』として『皇帝デッキ』と『奴隷デッキ』を作成
  2. 出されたカードを『引数』とし、勝敗を『戻り値』として返す 『関数』 の作成
  3. ゲームの流れをコード

 前回に引き続いて、今回も3の「ゲームの流れをコード」を紹介していきます!

ゲームの流れ

 ゲームの流れも確認していきましょう。

  1. ゲームモード(対人戦・CPU戦)の選択
  2. 使用デッキ(皇帝デッキ・奴隷デッキ)の選択
  3. 勝敗が決まるまで、カードを出し続ける
  4. 勝敗が決まったら終了する

 前回は、3の「勝敗が決まるまで、カードを出し続ける」の中の第1回戦までを紹介しました。なので、今回はその続きから、紹介していきます。

ユクサス

ここまでできれば、ほとんど完成だよ!

第2回戦〜

 まずは完成してるコードを見ていきましょう!

ユクサス

とりあえず、第2回のコードを見せます

 今回も、CPU戦・プレイヤーの使用デッキは皇帝の場合の第2回戦のコードになってます。

ユクサス

次に説明を入れていくよ!

 基本的には、第1回戦と同じ処理を行います。しかし、第1回戦と違うところもちゃんとあります。見やすいように画像では、赤い枠で囲んでいます。

ユクサス

見比べられるように、第1回戦のコードも改めて紹介しときます!

 この記事では、前の記事で紹介した同じ処理については説明しまてません。

ユクサス

代わりに前の記事で、詳しく解説してるよ!

あわせて読みたい
【ゲーム制作】勉強始めて約3週間の初心者がEカードゲーム作ってみた まとめ こんにちは、ユクサスです!  このページは、【ゲーム制作】勉強始めて約3週間の初心者がEカードゲーム作ってみた のまとめページです。  このシリーズもそこそこの回...

消去したカードの追加

ユクサス

 まずは、第2回戦から追加された処理自体の説明の説明から!

 まず、このゲームでよりリアリティを出すために、『使ったカードを捨てる』というのを表現しようとしました。これをコード上では、第1回戦の終わりに辞書型のデッキから要素を消去する、という方法で表現しました。

 今回のコードはこの消去したカードを改めて、辞書型のデッキに追加しています。

 辞書とリストの要素の追加

  • 辞書

辞書名[キー] = 値

  • リスト

リスト名.append(要素)

ユクサス

折角なので、リストの要素の追加も一緒に確認!

 辞書は、1つの要素に対して「キー」と「値」という属性を持たせるので、それぞれを設定することで1つの要素を追加します。

 逆に、リストは要素は要素として保存されるので、リスト名に「.append()」をつけて()の中に要素を入れるだけで簡単に追加できます。

 他のやり方や、1度に複数追加する方法もありますが、今回は1つの要素の追加だけ紹介します。

ユクサス

話が脱線して長くなると良くないので…笑

『悲劇』なぜこの処理を追加したか

 では、なぜこの処理を第2回戦から加えたのかを説明していきます。そして、それを説明するのに悲劇をお話しします…

ユクサス

これを解決するのに、1番時間がかかりました…

 まず、この処理をないままコードを実行すると次のようなエラーが出てきます。

 第2回戦のカード選択のところまでは正常に動きますが、その後に『KeyError 1』というエラーが出てきます。

 エラーの意味を簡単にいうと、「1というキーは設定されてないよ」です。

ユクサス

エラーの意味がシンプルだけど、全然解決できなかった…笑

 私は、最初にエラーの出た自作関数の「judge」を調べました。

 その結果、第1回戦ではちゃんと機能していましたが、念のためにコードを書き直しました。

ユクサス

それでも、同じエラーが出ました…

 次に、「KeyError 1」の『1』に着目しました。

ユクサス

この『1』は何の1は一体何なのかを調べました

 画像の通り、第2回戦では『2』を選択しているので第2回戦の選択が関係していないとわかります。そして、何回か同じエラーを見ているうちに、第1回戦で出したカードの番号(キー)ということがわかりました。

ユクサス

 次に、なぜ第1回戦で出したカードの番号(キー)がエラーになるのかを考えました

 答えはすぐにわかりました。そうです、第1回戦が引き分けの時に出したカードをデッキ(辞書)から削除していたからです。

 「judge」の場合分けの時点で、辞書の要素がないためにエラーが起こっていました。

ユクサス

スラスラ書いてるけど、ここに辿り着くまでに1週間くらいかかってる…笑

 そして、このエラーを回避するために、残りの手持ちカードを表示した後に消去したカードを改めて追加しています。

 これが悲劇の全貌です。原因は単純でしたが、ホントに全然わからなかったですし、途中で諦めそうにもなりました…

第3回戦〜

 次に第3回戦以降を紹介しようと思います。

ユクサス

第3回戦以降は今までのコードと同じ!

 同じコードなので説明は省きますが、参考に第3回戦のコードを紹介します。

 基本的には同じコードで、追加するカードと消去するカードが回を重ねるごとに1個ずつ増加していきます。

 また、第1回戦の時はコンピュータの出したものについても消去と追加をしていましたが、コンピュータ先に出す順番が決まっているので、わざわざそんなことする必要がないです。

 なので、それ以降はプレイヤーの出したカードについてだけ消去と追加を毎回行なっています。

ユクサス

後から気づいてそのままだったかも…

最後に

ユクサス

今回はここまで!

 今回までで、CPU戦・皇帝デッキ使用の場合のコードの紹介が終わりました!

 次回からは、他の場合についてのコードを紹介していきます!

ユクサス

基本のコードは一緒なので、もしかしたらこの後のコードがわかるかも…

 ぼちぼちこのシリーズが終わりに近づいてきて、なんだか少し寂しいです笑

 中身は案外簡単なコードなので、ぜひ記事を読みながら作ってみてほしいです!

ユクサス

一緒に作ってみよう!

ユクサス

では、また次の記事で!

 ユクサスのアカウントで BlogMap も登録してます!記事を読んで、気に入っていただけたら「購読通知」と「いいね」をポチってもらえると、嬉しいです!ぜひ、お気軽にどうぞ!

BlogMapのページはこちらから⇨https://blogmap.jp/details/4997

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次
閉じる