こんにちは、ユクサスです!
今回の記事で、作成したコードの紹介・解説は最後になると思います。新しく紹介することは少ないかもしれませんが、もうひと踏ん張り頑張っていきましょう!
ラストスパートで一気に完成を目指そう!
↓【ゲーム制作】勉強始めて約3週間の初心者がEカードゲーム作ってみた まとめはこちらから
前回と同じく、使用言語は『Python』で、『Google Colaboratory』でコードの作成・実行しました。それぞれに関する記事も書いてるのでよろしければどうぞ!
↓使用したプログラミング言語『Python』についてはこちら
↓コードを書くのに使用した環境『Google Colaboratory』はこちら
↓このゲームを作るまでに学習した内容はこちら
3週間もあれば余裕で習得できるよ!笑
それでは、いきましょう!
#2〜#5までのおさらい
まずは今までの内容を軽くおさらいしていきましょう。
#1はEカードゲームの紹介だから省略するよ!
全体の流れ
- 辞書として、数字を『キー』、カードを『値』として『皇帝デッキ』と『奴隷デッキ』を作成
- 出されたカードを『引数』とし、勝敗を『戻り値』として返す 『関数』 の作成
- ゲームの流れをコード
- ゲームモード(対人戦・CPU戦)の選択
- 使用デッキ(皇帝デッキ・奴隷デッキ)の選択
- 勝敗が決まるまで、カードを出し続ける
- 勝敗が決まったら終了する
❶は#2で、❷は#3、❸については、#4と#5で詳しく解説しています。
わからないことがあったら、確認してみよう!
このゲームの完成
実は、#5まででこのゲームは8割は完成しています。
じゃあこのゲームの完成形は一体何?
私が設定したこのゲームの最終形は、『デッキを選べて、CPU戦と対人戦がプレイ可能』です。
今まで紹介した内容は、CPU戦・皇帝デッキ使用の時です。ここからは今までの内容を応用して、他のパターンの場合について紹介していきます。
今までの内容が理解できていれば大丈夫です!
他のパターンのコード
今まで紹介してきたパターンを含めると全部で、パターンは4通りあります。
- CPU戦
- プレイヤー:皇帝デッキ
- プレイヤー:奴隷デッキ
- 対人戦
- プレイヤー1:皇帝デッキ プレイヤー2:奴隷デッキ
- プレイヤー1:奴隷デッキ プレイヤー2:皇帝デッキ
それぞれのパターンについて、CPU戦・皇帝デッキのコードと比較しながら紹介していきます!
それでは、いってみよう!
CPU戦・奴隷デッキ
まずは、1番近い『CPU戦・奴隷デッキ』から紹介していきます!
まずはコードを見てみよう
今でのコードも、一緒に並べます。
上が『CPU戦・奴隷デッキ』、下が『CPU戦・皇帝デッキ』のコードです。
基本的に、ほとんど一緒!
次にわかりやすいように、違う部分だけ強調します。
この3つが『CPU戦・皇帝デッキ』と違うところです。
手札の表示
当たり前ですが使うデッキが違うので、ここの表示もちゃんと変えていきます。
落ち着いて、1個ずつ確認していこう!
勝敗判定・結果開示
ここでは、関数に与える引数が異なっています。
まずは、関数『judge』から見ていきましょう
自作関数『judge』は、引数を二つ受け取るようにしています。
- 第1引数 → 皇帝デッキのカード
- 第2引数 → 奴隷デッキのカード
次に『open』を見ていきましょう
自作関数『open』も引数を二つ受け取るようにしています
- 第1引数
- 『open』 → プレイヤーが出したカード
- 『open1』 → プレイヤー1が出したカード
- 第2引数
- 『open』 → コンピューターが出したカード
- 『open1』 → プレイヤー2が出したカード
これは完全に関数の作りかたが悪かったのですが、『judge』と『open』で引数の受け取り方が変わります。
これをパターンに応じて、適切に引数を与えていきます。
関数を使うときは、どのように作ったかを確認しよう!
勝利の条件分岐
ここでは使用するデッキによって、条件分岐の結果が変わってきます。
関数『judge』で次のように、勝敗を戻り値として受け取るようにしています。
デッキごとの勝利条件を確認していきましょう。
- 皇帝デッキ → AとBのとき勝利
- 奴隷デッキ → C のとき勝利
- D → 試合継続
条件分岐でどのような処理をさせるかを考えよう!
今まで出てきたことを、どのように組み合わせるかを考えていきます。
対人戦
次に対人戦のコードについて解説していきます。
初めにCPU戦と大きく違うところを先に紹介するよ!
入力を隠す
ここで、やっと出てきたのが『getpass』です。
ライブラリの紹介で出てきたものの、今まで全く出てこなかった『getpass』が対人戦でやっと登場しました。
私はこの『getpass』を使って、入力を隠すようにしました。
お互いが何を出したかわかっていたら、つまらないですからね笑
画像のようにgetpass.getpass(prompt=)とすると、入力した文字が画面では次のように表示されます。
入力した後は、文字数もわからないように点で表示され、入力中は黒丸で表示されます。
これで、ゲームの公平性が保たれますね!
変数の変更
CPU戦では出したカードについて、次のように変数として設定していました。
- CPU戦
- プレイヤーの出したカード : 「player_card」
- コンピュータの出したカード : 「computer_card」
変数をそのままでももちろん実行できますが、わかりやすいように次のように変更しています。
- 対人戦
- プレイヤー1の出したカード : 「player1_card」
- プレイヤー2の出したカード : 「player2_card」
後から見てもわかるようにしよう!
対人戦・プレイヤー1皇帝デッキ
まずはコードから!
比較用に、CPU戦・皇帝デッキのコードも貼ります
新しく紹介することは少ないですが、1番重要な引数のところだけ取り上げようと思います。
引数
先ほど説明した通り、関数によって引数の受け取り方が違うので、そこに気をつけてコーディングする必要があります。
今回の場合は、次のようになります。
- 『judge』
- 第1引数:プレイヤー1のカード(皇帝デッキ)
- 第2引数:プレイヤー2のカード(奴隷デッキ)
- 『open』
- 第1引数:プレイヤー1のカード
- 第2引数:プレイヤー2のカード
しっかり確認しながら進もう!
対人戦・プレイヤー1奴隷デッキ
やっぱりまずは、コードから!
比較用のコードも!
ここまでくればもう説明なしでもわかるかもしれませんが、念の為引数についてだけ解説していきます!
引数
今回の場合は次のようになります。
- 『judge』
- 第1引数:プレイヤー2のカード(皇帝デッキ)
- 第2引数:プレイヤー1のカード(奴隷デッキ)
- 『open』
- 第1引数:プレイヤー1のカード
- 第2引数:プレイヤー2のカード
色をつけたところが、先ほどと違う部分になります。
最後の最後でミスしないように気をつけよう!
そして、ここまで完成すれば…
Congratulation!
おめでとうございます!
これで、Eカードゲームの完成です!もう説明することは全部終わりました!
おめでとう!そして、お疲れ様!
全てのコードを見せたわけではないですが、ここまでくればもう自力で完成できます!
何度見返しても大丈夫!
完成させてみよう!
ぜひ友達や家族と『僕が・私が作ったゲームだよ』っと言ってプレイしてみて欲しいです!
さいごに
一緒にコードを作ってくれた方、本当にありがとうございます。そして、お疲れ様です。
このシリーズでは、全6回で私が作ったみたEカードゲームについて詳しく紹介してきました。
もちろん、コードの見本はないです…
それでも…、たとえ時間がかかっても、初心者でも簡単なゲームは作れるよ!っていうのを伝えたくてこのシリーズを始めました。
このシリーズが沢山のプログラミング初心者に届くことを祈ってます
解説は今回で全て終わりましたが、次回は勉強して知識が増えた今、その知識を活かして改めてこのゲームをコーディングして、
それの紹介とこのシリーズで伝えたいことを改めてまとめて、最終回としようと思います!
何か分からないことや、質問があればコメントなどで気軽にどうぞ。
では、また次の記事で!
ユクサスのアカウントで BlogMap も登録してます!記事を読んで、気に入っていただけたら「購読通知」と「いいね」をポチってもらえると、嬉しいです!ぜひ、お気軽にどうぞ!
BlogMapのページはこちらから⇨https://blogmap.jp/details/4997
コメント