Unityに関連する記事です

 この手順では、プレイヤーのクリック処理の後に、コンピュータ側の×印を配置する機能の実装を行います。
すでに作成しているメソッドを利用しつつ、足りない部分の処理を追加してコンピュータ側の処理を完成させていきます。

 今回も、勝利条件を満たした場合には、Debug.Log メソッドにより、Console ビューに表示を行って、処理が正常に動作しているかを判定させます。
コンピュータ側が勝つ場合、引き分けの場合もありますので、それらを満たすロジックを構築し、考えていく必要があります。


<実装動画 .廛譽ぅ筺爾両〕>
動画ファイルへのリンク


<実装動画◆.灰鵐團紂璽燭両〕>
動画ファイルへのリンク


<実装動画 引き分け>
動画ファイルへのリンク


 以下の内容で順番に実装を進めていきます。

手順9 ーコンピュータ側の処理を実装するー
15.プレイヤーの番が終了したら、コンピュータ側の番となり、空いている Grid に×印をつけて、勝利判定する機能を実装する



 新しい学習内容は、以下の通りです。

 ・処理のアルゴリズムを考える



15.プレイヤーの番が終了したら、コンピュータ側の番となり、空いている Grid に×印をつけて、勝利判定する機能を実装する

1.設計


 処理のアルゴリズムを考えてみましょう。
アルゴリズムとは、問題を解決するための考え方であり、道筋です。
ゲームにおいては、実装したい処理の結果を元に、その状態になるためにはどのような道筋を立てていけばいいのか、その手順を考えていく必要があります。
 
 今回の場合、

 1.プレイヤーの番が終了したら、コンピュータ側の番になる
 2.空いている Grid を見つけて × 印をつける
 3.プレイヤーの時と同じように、勝利判定をおこなう
 4.再度、プレイヤーの番になる

 この処理を順番通りにどのようにすれば設計できるのか、実行結果として導きだせるのかを考えてみてください。

 1.プレイヤーの番が終了したら、ということは、プログラムにおいてはどのタイミングになるかを見直してみてください。
そのタイミングのあとで、現在は再度プレイヤーの番になっていますが、すぐにプレイヤーの番にはしないように、
別のプログラムに移行するようにすれば、1.のコンピュータ側の番になる、という処理を付け加えることが出来ます。

 2.空いている Grid を見つけて〜、という部分は、ランダムに Grid の抽選を行い、その Grid に持ち主(オーナー)が居ない場合には、
すでに作成してある印をつけるメソッドを実行するようにします。このメソッドには引数の設定がありますので、
オーナーの設定を×印として引数を渡すことにより、プレイヤーのときと同じように印をつける処理を行うとともに、印の種類を×に設定できます。

 メソッドは引数を上手く活用することで、同じ処理であっても振る舞いを変えることが出来ます。
この概念、感覚を身につけていきましょう。

 3.の処理については、すでに勝利判定の処理はメソッドとして作成してありますので、この部分は作成不要です。
2.の処理が終了したあとに勝利判定のメソッドを実行すれば完成出来ます

 ここまで完成して、始めて、プレイヤーの番に戻るようにします。

 処理のイメージが沸いているようであれば、そのイメージを言語化し、プログラムを書いてみましょう。


2.GameManager スクリプトを修正する


 勝敗が確定したかを判定するための機能を有する JudgeWinner メソッドは前回も説明したように、
勝利判定を行うメソッドになりますので、プレイヤーと同じように×印を記述したあとに実行するようにします。

 TODO の部分を実装していますが、まずは処理の内容を見ずに、自分で考えた処理を書いてみてください。
力がついているかどうか確認することが出来ます。


GameManager.cs

 <= クリックすると開きます。



3.アルゴリズムを読み解く


 ざっとみただけでは、変数ベースで処理が記述されているため、実際にどのような内容になっているのか非常にわかりにくいと思います。
処理内には書いてありませんが、自分で Debug.Log メソッドなどを利用して、各変数の値(i や x)を調べてみると、Grid のどのマス目を調べているのかが分かってきます。

 またこの記述だけがアルゴリズムではありませんので、他にも考えてみるといいでしょう。


4.ゲームを実行して動作を確認する


 処理が完成しましたので、最初から今回学習した内容を振り返り、処理の内容の理解を深めてください。


<実装動画 .廛譽ぅ筺爾両〕>
動画ファイルへのリンク


<実装動画◆.灰鵐團紂璽燭両〕>
動画ファイルへのリンク


<実装動画 引き分け>
動画ファイルへのリンク


 デバッグにあたっては、上記3つのゲーム終了パターンを確認してください。



<課題 ゲーム終了状態になったらクリックしても〇印を配置できないよう制御する>


 この課題に取りくんでみましょう。

 ゲーム終了状態は、bool 型の isGameUp 変数の状態で判断することが出来ます。


<完成目標動画 .廛譽ぅ筺爾勝利したら、クリックしても〇印をおけない>
動画ファイルへのリンク

<完成目標動画◆.灰鵐團紂璽燭勝利した場合も、クリックしても〇印をおけない>
動画ファイルへのリンク



 動画では2パターンありますが、どちらもプレイヤーのクリックに対して、処理が許可されない状態であることが分かります。

 よって、処理の実装自体は isGameUp 変数を利用した処理(1行だけ追加する、という意味ではありません)を1箇所に書き加えることにより対応できます。
処理の流れを読み解いて、よく考えてみてください。


<ヒント 考えても処理のイメージが浮かばない場合>
 
 下記の構文を、いずれかの処理に書き加えてください。処理をきちんと読み解けていれば、書き込む場所が理解できるはずです。

<= クリックすると開きます。




 ヒントを見ても、どうしてもわからない場合には、下記に回答例を確認してください。


GameManager.cs

 <= クリックすると開きます。



ゲームを実行して動作を確認する


 処理が完成したら、ゲームを実行して制御が正常に行われているかどうかを確認します。

 処理の内容が理解できるように、繰り返し学習して読み解けるようにしましょう。



 以上でこの手順は完成です。

 次は 手順10 −UI の作成− です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます