ペンギン

プログラミング クラブ

パソコンに興味がある
ゲームで遊ぶのは好きだけど、ゲームを作ってみたい
音楽やアニメをパソコンで作ってみたい

第2回:「ポングゲームを作ろう」

概要

日程: 2016/7/31 (日) 9:30-11:30

課題: Scratchを使って「ポング」と言うクラシックゲームの作成


今回も皆でゲームを作りました。

PONG(ポング、ポン)のゲームは卓球(ピンポン)と同じ感じで、 ラケット(パドル)を使ってボールを相手に跳ね返るゲームです。 プレイヤーは自分のパドルをマウスで操作し、 相手のパドルはパソコンが動かすようになっています。

ポング

簡単なところから少しずつ作って、少し難しい算数を使ってボールやパドルの位置を操作し、 最後にパソコンのAI(エーアイ、人工知能)まで作りました。結構難しい内容でしたが、 皆でゲームを完成させることができました。おめでとうございます!

また、前回の同じように、色々なバリエーションが生み出されました。例えば、 ヒト対パソコンではなくヒト対ヒトで操作できるように工夫したり、 あるいは背景を変えて音を出したりする人もいました!

お礼

前回お手伝いいたいた方々(会場設営:Mさん、 インストラクター:Oさん)に加えて、 遠方からいらっしゃったYさんにインストラクターとして加わっていただきました。 心からお礼を申し上げます。

尚、WIFIのトラブルで持ってきたパソコンを使わず、 Scratchがインストールされているパソコンを使いました (Oさん、ありがとうございます!)。


以下、当日行った手順を記載しますので、復習などに参考にしてください。

詳細手順

1. ボールの作成

やりたいこと:ボールを作る

やり方:

猫を削除する スプライトをライブラリーから選択 コスチュームの準備

2. ボールの基本な動き

ボールの「スクリプト」タブで、ボールの動きのプログラムを作ってみよう。

やりたいこと:ボールをずっと動かし続けて、壁にぶつかったら跳ね返るようにする

やり方:

ボールのプログラム

3. パドルの作成

次はパドル(ラケット)が必要です。

やりたいこと:プレイヤーのパドルを作る

やり方:

パドルを描く スプライトの名前を変える

4. プレイヤーのパドルの動き

プレイヤーがパドルを動かせるようにしよう。

やりたいこと:マウスの動きに沿って、パドルを上下動かせるようにする。但し、x方向には動いて欲しくない。

やり方:

パドルを右側に置いて試してみよう。

パドルのプログラム

5. 相手(パソコン)のパドル作成

次に、相手(パソコン)のパドルを作成しよう。

やりたいこと:プレイヤーのパドルと同じものを作りたい。

やり方:

パドルを右側に置いて試してみよう。

パソコンのパドルを複製

6. パソコンのパドルの動き

パソコンのパドルは今、プレイヤーのパドルと全く同じ動きをしていておかしいですね。

このゲームに勝つにはどういう風にすれば良いでしょうか。

やりたいこと:パソコンがうまくプレイできるように、パソコンのパドルをボールの位置に沿って動くようにする。

やり方:

パソコンが上手にパドルを動かすようになった!

パソコンのパドルの動き

7. ボールが右に行きすぎると、負けるようにする

これまで、ボールはパドルに関係なく、壁に跳ね返っているので負けられない。

やりたいこと:ボールが右に行き過ぎたら、負けるようにする。

やり方:

ボールが右側に行き過ぎると、跳ね返るのではなく、ゲームを終了する

ヒント:x座標の値を常に確認するには、「x座標」の左側のチェックを入れる:そうすると値が常に画面に表示される

ボールが右に行き過ぎたら 右に行き過ぎたら全てを止める チェック 値が表示される

8. ボールがパドルに跳ね返るようにする

これだと、何をしても負けてしまう。

やりたいこと:ボールがパドルに跳ねるようにする。

やり方:

さて、次はどういう風に跳ね返るようにするか?

もしプレイヤーのパドルに触れたなら

9. 実験:どういう風に跳ね返るようにするか?

やりたいこと:ボールを跳ね返させるにはどうしたらよいか調べる

やり方:

ボールのスクリプト

観察したこと:

結果:

では、ボールのプログラムにもどろう。

向きを観察する

10. ボールがパドルに跳ね返るようにする

「もし…」の中側の処理を作りましょう。

やりたいこと:ボールがパドルに跳ねるようにする。

やり方:

さー、試してみよう。ゲームらしくなってきましたね。

パドルをボールのところに動かすと、跳ね返る。

パドルがないと、ゲームが終わる。

ボールがパドルに跳ね返る

11. ボールが右に行き過ぎたら、プレイヤーの勝ち

パソコンのパドルを一度止めてみよう。

パソコンのパドルのスクリプトで「ずっと…」を一時的に横にどかす。

プレイしてみて、どうなるの?

そうです。パソコンはパドルを動かさなくても負けない。

なぜでしょう? → ボールが跳ね返るから。

やりたいこと:ボールが左に行き過ぎるとゲームを終了する

やり方:

パソコンのパドルの動きを一時的に止める ボールが左に行き過ぎたら全てを止める

12. ボールがパソコンのパドルに跳ね返るようにする

今度は、パソコンが負けっぱなしだね。

やりたいこと:ボールがパソコンのパドルに触れたら、跳ね返るようにする

プレイヤーのパドルに触れた時と同じですね。

やり方:

これをテストしたいけど、パソコンのパドルは動かないね。

パソコンのパドルをマウスで動かす ボールがパソコンのパドルに跳ね返る パソコンのスクリプトを元に

13. プログラムを単純化しよう

この部分は、当日実施しなかったが、参考に。


次は、パソコンのプログラムを改善したけど、その前に、ボールのプログラムを読みやすくしよう。

やりたいこと:ボールのプログラムが複雑になっているので、読みやすくしたい

やり方:

もしならを1つにまとめる 新しいブロックを作る 新しいブロックを呼び出す

14. ボールがいつも真ん中からスタートするように

ゲームを始める前にいつもボールを動かすのは大変。

やりたいとこ:ゲームを始める時に、ボールを中央に置く。

やり方:

ボールを真ん中からスタートさせる

15. プレイヤーも勝てるようにする

これで遊んでみよう。

パソコンに勝てますか? なかなか勝てないですね。 なぜ?

→ パソコンの動きがうますぎて、いつもボールに追従しているからだね。

やりたいとこ:パソコンのパドルの動きをパソコンでも負けるようにしたい

これはゲームのAIと言ってArtificial Intelligence、つまり人工知能だ。

ゲームの中で一番難しい部分だ。

やり方:

やり方は色々あります。アイディアを出そう。

これは1つのやり方。

パドルをいつもボールのy座標と一致させるとうますぎるので、パドルとボールのy座標の距離を縮めることにしよう。

ボールまでの距離を計算する ボールまでの距離を縮める

16. 勝った時と負けた時の背景を変える

やりたいこと:勝った時に「おめでとう!」、また負けた時に「残念!」の背景を表示したい

やり方:

背景を作る 背景を状況に合わせて変える 勝った!