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

ユクサス

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

 前回は、初期値の設置などについて書きました。みてない人はこちらを先に見るのをオススメします!

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

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

 今回は、実際に設定した関数について紹介していこうと思います!

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

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

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

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

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

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

ユクサス

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

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

ゲームコードの概要

ユクサス

 一応、ゲームコードの概要を改めて紹介するよ!

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

 1については前回の記事で書いたので、今回は、2にあたる『出されたカードを『引数』とし、勝敗を『戻り値』として返す 『関数』 の作成を詳しくご紹介していこうと思います!

関数の生成

 まずは、今回作った関数を見てみましょう。

 今回、生成した関数はこの4つです。関数自体は作ろうと思えばいくらでも作ることは可能です。しかし、勉強を始めてから3週間の私はこの4つが限界でした笑

ユクサス

あまり、効果的なものはないかも…

ユクサス

次に、簡単な説明を入れていくよ!

 少し説明を入れてみました。難しい処理は行ってないので、見ただけですぐに理解できる方もいるかもしれません。

 では、次に1つずつ詳しくみていきましょう。

処理の遅延

 ここでは、処理の遅延を行なっています。

 通常コードを実行すると、上から順番に処理されていき、全ての処理が終わるまでノンストップで進んで行きます。

 しかし、それだと出すカードを入力してすぐに結果がわかってしまい、カードを出してかた結果の開示までの「ドキドキ」や「余韻」を味わえないと思い、処理の遅延を図る関数を作成しました。なので、このコードは必ずしも必要なコードではないですね笑

 具体的な処理の説明としては、timeライブラリのtime.sleep()を用いています。timeライブラリは、前回も紹介した通り、「コードの実行・処理の時間」にかかわります。そして、time.sleep()は、()内に数字を引数として渡すことで、指定した秒数だけ処理を一時停止させることができます。

 ただ、毎回time.sleep()を打ち込むのは少し大変だなと思ったので、短い単語のblank()とすることで打ち込む量を減らしたものになってます。

 なので、実際にはtime.sleep()という処理をblank()という名前に変えただけの関数です。

ユクサス

必要性はあまりないかな…

勝敗の判定

 次は、勝敗を決定する関数です。

 ここではEカードゲームのルールに乗っ取って、勝敗を判定させました。Eカードゲームのルールなどについては、#1の方でまとめてあります。

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

あわせて読みたい
【ゲーム制作】勉強始めて約3週間の初心者がEカードゲーム作ってみた #1 こんにちは、ユクサスです! 今回からいよいよゲームについての記事を書いていこうと思います! ↓【ゲーム制作】勉強始めて約3週間の初心者がEカードゲーム作ってみた ...

 また、戻り値として返しているのは下のようなものになっています。

 引数に皇帝側が出したカードと奴隷側が出したカードを渡すことで、戻り値に勝敗を返すようにしています。

 1番組み合わせとして多い、「お互い市民を出して、引き分けになる」という条件をelseでまとめて、残りの処理だけ1つずつ条件分けしていき、勝敗を判定させます。

 どういう風に場合分けすれば、コードの量が1番少なるかを考えることで、コードの見やすさなどが大きく変わってくると思います!

 今回皇帝デッキと奴隷デッキを辞書型で作ったので、素直に全部の組み合わせで条件分岐させました。

ユクサス

もっといい方法があると思うけど、当時の私は素直に全部場合分けをしました笑

 実は、勝敗をこのように条件分岐させて判定させたことによって、悲劇を生むことになります…

 その話は、そこの説明のときに詳しく話します。また、今ではもっといい関数の作り方を考えています。これも後ほど紹介する予定です!

結果発表

 次にお互いが出したカードを公開する関数を作りました。

 出したカードを引数にして、どちらが何を出したかを表示します。

 処理自体は簡単ですが、何度も同じ処理が出てきたので、最初にopen()という関数とすることでコードをコンパクトにしようと思い、作成しました。

 今改めてこの関数を見たら、後付けで作ったこともあり良くないところがありました。

 それは、仮引数を雑に付けていることです!

 この関数では、仮引数にAとBを使用しています。でも、AとBはどこか他のどころで出てきたのを覚えてますか?

 そうです。丁度一つ前のところで出てきました。

画像に alt 属性が指定されていません。ファイル名: aa1d52f9ff4a32716f45ac89466a0748-1024x238.png

 ここでは、Aを皇帝の勝ち、Bを市民の勝ち’ という変数に定義しています。

 今回は仮引数として、AとBを用いたのでコードの実行には支障はありませんでした。しかし、雑に変数などを設定していると、予期せぬエラーが起こった時に何が原因か分かりにくくなるので、極力避けるといいと思います!

最後に

ユクサス

 今回はここら辺で締めようと思います。

 ブログの記事として自分のやってきたことを紹介することで、もちろん制作当時はベストを尽くしてコーディングしていましたが、「ここは良くないな」や「こうすれば良かったな」というのが見えてきました。

 ブログの記事を書くという作業で、自分のプログラミングのスキルも向上することができていて、一石二鳥ですね!笑

 私のブログを通して、読者の方にそう感じてもらえたら嬉しいです!

 次回はゲームの流れについて説明していく予定です!

 では、次の記事で会いましょう!

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

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

 何かわからないことや、質問があればお問合せフォームやコメント、ツイッターからでもどうぞ!

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

コメント

コメントする

CAPTCHA


目次
閉じる