7 レーシングゲームを作ってみよう

このプロジェクトでは,前回のプロジェクトで扱った例題を仕上げ,簡単なレーシングゲームを完成させます. 車の操作性を高めるために「計算」を使って,ハンドルの効き具合を調整することに挑戦します. また,ゲーム性を高めるために敵の車を追加します.敵の車の動きを不規則にするために「乱数」を使ってみましょう.

プログラミングに関するキーワード

Squeakに関するキーワード

7.1 計算

計算

M先生
さて,だいぶゲームらしくなってきたよね.
Sくん
もう少しハンドルのききが悪くてもよいかもしれませんね.ハンドルを切りすぎると車が横を向いてしまうことがあります.
M先生
そうだね.どうしたらいいかな.
Tさん
今はハンドルの向きの値と車の向きの値が同じだからそうなるんだよね.
Sくん
ハンドルの向きの値を割れればいいですね.
M先生
じゃあ,ハンドルの向きの値を少し割って,車が曲がる量を少なくしてみようか. 部品フラップの中に計算式のタイルが入っているはずだよね.
Sくん
はい.

M先生
割り算の「 計算式タイル 」を取り出してごらん. 数値の部分,つまり両方の項に変数タイルを入れることができるよ.

Sくん
はい.今回は左辺はハンドルの向きですね.
Tさん
どのくらいの数で割ればいいんでしょうか?
M先生
まずは10で割ってみようか.あとはお好みで調整すればいいよ.

Sくん
10で大丈夫なようですね.ハンドルの効き具合を調整することができました.

Tさん
先生,2つ以上の数値や変数の計算をする場合はどうしたらいいんですか?
M先生
計算式タイルを入れ子にすればいいんだ.
Sくん
入れ子ってなんだっけ?
Tさん
なるほど.こういうことですね.

Sくん
あっ.計算式タイルに計算式タイルを入れることができるんだ.場合分けタイルのときと同じだね.
No. 6-1 やってみよう!

スライダを使って,車のスピードを調整するアクセルを作ってください.秒速0から800ドットの車を作ってみましょう.


ヒント

スライダーについての解説が 節[スライダ] にあります. スライダーの値は0から1の範囲をとりますから,計算を使って希望の数値にする必要がありますね.



7.2 乱数

M先生
もっとゲームらしくしたいね.
Sくん
ゲームといったら敵キャラですよ.敵の車が襲ってくるというのはどうですか?
Tさん
野蛮なんだから....
M先生
いい案だね.じゃあ,敵の車を作って走らせてみようか.
Sくん
後ろから敵の車が追い抜いてくるのを避けながら運転するのがいいですかね.敵はイカツイ感じの車にしようっと.できました.

Sくん
敵の車のスクリプトはこんな感じでOKですね.

Tさん
ただ,一定のスピードで敵の車が走ってきては面白くないですよね.
M先生
そういう場合は「 乱数 」を使うとよいね. 部品フラップに「 乱数タイル 」があるよね.
Sくん
これですね.

M先生
そう.乱数タイルの数値は,繰り返しのたびに毎回違う値に変更されるんだ.タイルの数値はその値の範囲を示している. この数字が180なら,1から180の間のどれかの数値に変更されるということだよ.
Sくん
なるほど.じゃあ50位に設定して,うわー結構いやらしい動きになりますね.

M先生
うん.あと一息だね.もう少し面白くできないかな?
Tさん
敵の車が出てくる場所も一定じゃない方がおもしろいんじゃない?
Sくん
ナイスアイデア!じゃあ,道路の幅は100だから,乱数の値を100に設定すれば....あれ?うまくいかないな.

Tさん
これだと,だめだよ.乱数の値に道路の左端のX座標を足さないと.

M先生
その通り,計算とのあわせ技だね.
No. 6-2 やってみよう!

敵の車に衝突すると,自分の車がハンドルで操縦できなくなるようにして,ゲームを完成させましょう.


ヒント

車のスクリプトを停止させるためには,スクリプトの操作カテゴリの命令タイルを使う必要があります. スクリプトの操作カテゴリの命令の解説が 節[スクリプトの操作] にあります.



No. 6-3 考えてみよう!

例題では,敵の車が登場するタイミングは一定です. 敵の車の速度や走行位置だけでなく,登場するタイミングが不定期になるようにしてみましょう.



練習問題

7.1

-20から20の範囲の乱数を発生させる方法を考えましょう.

できたら,例題の敵の車をランダムに動かして,邪魔するように改造してみましょう.

7.2

節[6.1]と同じ要領で,先端で虫がつまめる虫取りピンセットを作ってください. ピンセットの先端に虫がくっつくようにするのがポイントです.

スタートボタンを押すと,画面内のランダムな位置に虫が登場し,ランダムに逃げ回るというゲームに挑戦してみましょう.

7.3

以下のスクリプトを見ただけで,楕円はどんな軌跡を描くのかを予想してみましょう.

 ※プログラムを組み立てて実行してはダメですよ.

7.4

ブロック崩しゲームを作りましょう.

まず,下図のようにスライダとパドルを作り,スライダにあわせてパドルが動くようにしてください. スライダの動く幅とパドルの動く幅が違うところに注意しましょう.

できたら,ブロックとボール,壁をつくり,ブロック崩しゲームを完成させましょう.

7.5

正多角形を書くプログラムを作りましょう.正多角形の一つの外角は360/N(頂点の数)で求められます.

できたら,スライダで頂点の数を変えられるようにしてみましょう.

ここで利用した外角の公式が何故成り立つのかも考えてみましょう.

7.6

節[5.1]の流れ星を改造し,星の動きに乱数を取り入れてみましょう. どんな風に乱数を使うと本物の流れ星のような動きになりますか?