スクラッチ
サッカーゲームPK戦を作ろう 先攻・後攻で交互にシュートしよう(4/6))
第4回は、前回にまでに作った、シュートとキーパーの動きを元に、
先攻・後攻で交互にシュート、キーパー操作をできるようにします!
これで、PK戦のゲーム部分はほぼほぼ完成します^^
(解説まとめはこちら)
www.papa-sensei.com
[目次]
自分の順番と今の順番
先攻、後攻で交互にシュートをうつ際に大事なのは、
・自分は先攻・後攻どっち?
・今は先攻がシュートうつ番?それとも後攻がシュートする番?
ということです。
自分が先攻で、今は先攻の攻撃なら、シュートをうつ。
逆に自分が先攻で、今は後攻の攻撃なら、相手がシュートしてくるのでキーパーを操作する。
ということになります。
まずはこの、「自分の順番」と「今の順番」をわかるようにしましょう。
順番を表す変数を用意する
背景のプログラム
背景のプログラムを修正していきます。
まずは、自分の順番・今の順番を表す変数を作り、スタート時に初期化しておきます!
[順番を表す値]
順番 | 値 |
---|---|
先攻 | 1 |
後攻 | 2 |
自分はシュートかキーパーどっち?
今の順番と自分の順番を比べる
今の順番を見て、
自分の順番だったらシュート、相手の順番であったらキーパーを操作します。
まず背景のブロック定義に「方向をえらぶ」定義を用意します。
このように、色々なところでよく使う動きは、ブロック定義にしておくと、同じプログラムを何度も書かずにすみ便利です!
「方向をえらぶ」定義の中では、
・もし 今の順番 = 自分の順番 だったらシュート準備
・もし 今の順番 ≠ 自分の順番 だったらキーパー準備
という動きを作ります。
例えば、自分の順番が先攻で、今の順番も先攻の番なら、シュート準備です!
シュート準備・キーパー準備のイベントは、方向下地のスプライトが受け取り、
それぞれの状態に合わせて「シュートしよう!」「キーパー操作しろ!」と表示が切り替わります。
今作った「方向をえらぶ」定義をスタート直後に「シュート準備」を送っていた場所と置き換えます。
選んだ方向にボールorキーパーを飛ばす
方向矢印を押した後、選んだ方向にボールorキーパーを飛ばします。
相手がえらんだ方向
まずは「相手がえらんだ」方向も変数として用意しておきます。
・自分は矢印で方向を選ぶ
・相手はランダムで方向を決める
自分が選んだ方向をボール・キーパーに伝える
次に、今の順番を見て、自分がシュートの番ならボールに、相手の攻撃番であれば、キーパーに選んだ方向を伝えます。
自分の順番 | ボールの方向 | キーパーの方向 |
---|---|---|
攻撃(自分の順番=今の順番) | (自分が)えらんだ方向 | 相手がえらんだ方向 |
防御(自分の順番≠今の順番) | 相手がえらんだ方向 | (自分が)えらんだ方向 |
ここまでで、先攻・後攻を見て、
自分が選んだ方向でシュート・キーパー操作ができるようになりました。
先攻・後攻を交代する
シュートを打ち終わった後、攻守を交代します。
交代
まずは「交代」のブロック定義を用意し、この中に交代のプログラムを作っていきます。
交代時にやることは次のことです!
・今の順番が先攻なら後攻に、後攻なら先攻に戻す
・再度シュートやキーパー操作ができるように、状態のリセットをする
・方向を選び直す
この交代を、シュートをうったあとに行えば、攻守が交代できます。
試合選手の見た目を変える
最後に、PK戦時にシュートする選手の見た目も先攻・後攻で変わるようにします。
選手のプログラム
選手はリセット・シュート時に今の順番をみて、
今の順番が先攻(1) なら、先攻のコスチュームに。
後攻(2)なら、後攻のコスチュームにしてあげるだけです。
これで、交互にシュートする際にユニフォームの色も変わります。
今回までの動き
シュート・キーパーの動きを交互にできるようになりました^^
交互にシュートできるだけでだいぶPK戦らしくなりましたね。
次回はゴールしたかの判定と、先攻・後攻を自分で選べるようにする部分を作ります!