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]の流れ星を改造し,星の動きに乱数を取り入れてみましょう.
どんな風に乱数を使うと本物の流れ星のような動きになりますか?