• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • HOME
  • Arduino
    • Arduino初心者編
    • Arduino基礎編
    • Arduino応用編
    • Arduino実践編
  • Raspberry Pi
  • microbit
  • XBee
  • Scratch
  • Contact Us
  • Privacy Policy

STEMSHIP

ものづくりを通して、科学を学ぼう!

現在の場所:ホーム / Scratch / Scratch コード解析で学ぶ:ピンポンゲーム Extreme Pong

Scratch コード解析で学ぶ:ピンポンゲーム Extreme Pong

2020年1月22日 by STEMSHIP 1 コメント

今回解析するプロジェクト

「Extreme Pong」は、supertaylor04さん が作成したピンポンのようなゲームです。昔ながらのゲームですが、コンピュータ対戦や二人プレイ、スコア表示など、ゲームの基本となる要素が含まれています。このプロジェクトのプログラムの中身について説明します。

リンク:https://scratch.mit.edu/projects/10140853

Ball(ボール)スプライト

「旗印」が押されたとき、ゲームセレクト画面を表示するため、ボールを隠します。そして、変数「hits」を0にして、ボールの進行方向を0度にします。0度は画面上側の方向です。ちなみに、90度は右側、180度は下側、-90度は左側です。

もし、青色(プレイヤー1のパドルの色)に触れた場合、ボールの進行方向を-80度から80度までの範囲内の乱数に変えます。すなわち、ボールは上側方向に方向転換します。そして、変数hitsの値を1増加させます。

もし、赤色(プレイヤー2のパドルの色)に触れた場合、 ボールの進行方向を80度からー80度までの範囲内の乱数に変えます。すなわち、ボールは下側方向に方向転換します。そして、変数hitsの値を1増加させます。

このブロックでは、ボールの進行方向を変えるだけで、ボールは動きません。ボールの動きは別のブロックでプログラムしています。

「1」または「2」キーが押されたとき、ゲームがスタートします。このプロジェクトでは、「1」と「2」で別々のブロックになっていますが、内容は全く同じです。

初めに、ボールを表示して、x座標とy座標を0にします。ボールの進行方向は0度から360度の範囲内の乱数で決まります。

「ずっと」ループでは、もし画面の壁にあたったら、ボールは跳ね返ります。そして、「hits/5 + 2 」歩動かします。hitsはボールがパドルに当たるたびに1ずつ増えます。例えば、hitsが0~4のときはhits/5=0(割り算の余りは切り捨て)なので、2歩動きます。hitsが5~9のときは hits/5=1(割り算の余りは切り捨て)なので 、3歩ずつ動きます。

y座標が「150より大きい場合」は、ボールがプレイヤー2のパドルを通り越した場合です。そうなった場合、プレイヤー1のスコアを1増やします。ボールの進行方向を再度ランダムに設定して、x座標とy座標を0にして、変数hitsも0にしてボールの速度をもとに戻し、ゲームを再開します。

y座標が「ー150より小さい場合」は、ボールがプレイヤー1のパドルを通り越した場合です。そうなった場合、プレイヤー2のスコアを1増やします。ボールの進行方向を再度ランダムに設定して、x座標とy座標を0にして、変数hitsも0にしてボールの速度をもとに戻し、ゲームを再開します。

変数「paddle y position」は、常にボールのx座標とします。この変数は「すべてのスプライト用」で、パドル2のコンピュータ動作に使用します。説明は後で述べます。

Paddle(パドル)スプライト

パドルはプレイヤー1のパドルなので、スタート画面で「1」が押されても「2」が押されても、動きは同じにする必要があります。このプロジェクトでは、「1」と「2」で別々のブロックグループとなっていますが、その内容は同じです。

「1」または「2」のキーが押されると、ゲームスタート画面に移動するため、パドルの表示と座標の初期位置を設定します。

「ずっと」ループでは、キーが押されたときのパドルの動きをプログラムしています。「右向き矢印が押された」場合、 今の x座標に10を加算します(すなわち、画面の右側に動く)。反対に、 「左向き矢印が押された」場合、 今の x座標に10を減算します(すなわち、画面の左側に動く)。

Paddle2(パドル2)スプライト

パドル2は、「1」キーが押されたときに、対コンピュータとして動かします。 0.25 秒の時間をかけて、x座標を変数「paddle y position」に動かします。y座標はそのままです。 変数「paddle y position」 は、Ball(ボール)スプライトで値がBallのx座標が入力されています。変数名の付け方が間違っているので紛らわしいですね。すなわち、パドル2のx座標は、Ballのx座標に対して、0.25秒遅れて動きます。

パドル2は、「2」キーが押されたときに、プレイヤー2の動きをします。「d」キーが押された場合に右に動き、「a」キーが押された場合に左に動きます。

まとめ

今回解析した結果から以下のワザを学ぶことが出来ました。

  • ボールの動きを徐々に早くする方法
  • スコアの付け方
  • パドル2のコンピュータの動かし方

一方、紛らわしい変数名が使われていたり、ほとんど同じプログラムが2つのブロックで使用されているなど、いくつか改善余地がありましたので、リミックスで改良してみて下さい。

Filed Under: Scratch 関連タグ:ゲーム, ピンポン

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

最初のサイドバー

CONTACT US

  • Facebook
  • Twitter
  • Youtube

More to See

Arduinoベースのセンサノード:XBeeデータ収集ノードの製作

2021年9月27日 By STEMSHIP

Arduinoベースのセンサノード:Arduinoを使った温度センサの作製

2021年9月21日 By STEMSHIP

XBeeモジュールとBMP280センサを使用してデータ収集する

2021年5月31日 By STEMSHIP

XBeeモジュールでMicroPythonを使ってセンサを読み取る

2021年5月24日 By STEMSHIP

XBeeモジュールでセンサを読み取る:センサノードの設定と測定

2021年5月17日 By STEMSHIP

カテゴリー

  • Arduino (44)
    • Arduino初心者編 (15)
    • Arduino基礎編 (11)
    • Arduino実践編 (4)
    • Arduino応用編 (11)
    • Arduino番外編 (3)
  • MakeyMakey (1)
  • microbit (11)
  • Raspberry Pi (13)
  • Scratch (6)
  • STEM教育 (5)
  • XBee (15)
  • ものづくり教育 (2)
  • 子供の教育 (2)
  • 科学 (6)
  • 算数 (5)

Tags

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Footer

最近の投稿

  • Arduinoベースのセンサノード:スケッチ(プログラム)の作製
  • Arduinoベースのセンサノード:XBeeデータ収集ノードの製作
  • Arduinoベースのセンサノード:Arduinoを使った温度センサの作製
  • XBeeモジュールとBMP280センサを使用してデータ収集する
  • XBeeモジュールでMicroPythonを使ってセンサを読み取る

タグ

BLE DCモータ EEPROM ELEGOO ESP32 ESP8266 IoT LCD LED makeymakey MQTT Node-RED scratch STEM教育 WiFi XBee アニメーション オンラインゲーム カメラ クローン ゲーム コスチュームの変更 サーボモータ ステッピングモータ ステートマシン スピーカ タイマー ピンポン ブロック定義 ペン ライントレース ラジコン リスト 分数 割り込み 実験 工作 幼児 当たり判定 温度センサ 無線通信 物理 角度制御 重力 音楽

Search

2023年3月
月 火 水 木 金 土 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 10月    

Copyright © 2023 · STEMSHIP.COM