• 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 リミックスで学ぶ:ピンポンゲームに高速移動・パドル変形・跳ね返り角度制御の機能を追加

Scratch リミックスで学ぶ:ピンポンゲームに高速移動・パドル変形・跳ね返り角度制御の機能を追加

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

ピンポンゲーム(前回の記事でコード解析を実施した)に、パドルを高速移動できる機能と、パドルを楕円形に膨らませることで、ボールの跳ね返り角度を変える機能を追加します。「移動速度の変更(加速度を取り入れる)」「スプライトの進行方向角度の制御」「ブロック定義の使い方」などを学ぶことが出来ます。

今回作成するプロジェクト

以下のプロジェクトはScratchホームページで公開していますので、プログラム全体はそちらのページでご確認下さい。主要部分について、以降説明します。

パドルのダッシュ機能

機能の詳細説明

①ダッシュキーを押している間、パドルの移動速度が加速します。
② ダッシュキーを離すと、 パドルの移動速度は初期値に戻ります。
③ ダッシュキーを押した状態で方向転換すると、 パドルの移動速度は初期値に戻ります。

定義/変数

プレイヤー1のダッシュキー : 「↓(下矢印)」
プレイヤー2のダッシュキー : 「S」
vx : パドルの移動速度 (パドルスプライトのみ)
ax : パドルの加速度 (パドルスプライトのみ)

プログラム

パドル1のプログラムについて説明します。パドル2はパドル1と同様のプログラムなので、ここでの記載は省略します。プログラムが少し長いので見易くするために、ブロック機能を使って「加速度の設定」「右方向の速度設定と移動」「左方向の速度設定と移動」 の3つに分けます。

■パドル1の加速度
「もし<↓(下矢印)> を押されたなら」 ax1=1にします。
「そうでなければ」ax1=0にします。

■パドル1の移動速度
「もし<→>を押されたなら」 移動速度vxが0より大きい場合はvx=5にします。
 そして、移動速度を「vx=vx+ax」の式で更新し、x座標を<vx>ずつ変えます。
「もし<←>を押されたなら」 移動速度vxが0より小さい場合はvx=-5にします。
 そして、移動速度を「vx=vx-ax」の式で更新し、x座標を<vx>ずつ変えます。

パドルをふくらませる機能

機能の詳細説明

①ふくらみキーを押している間、パドルがY座標方向にふくらみます(楕円に変形する)。
②パドルとボールの接触位置によって、ボールの跳ね返り方向が変わります。パドルがふくらんでいないときは、ボールがパドルのどの部分にあたっても、同じ角度で跳ね返ります(平らな壁にあたって跳ね返るイメージ)。パドルがふくらんでいるときは、中心部分に当たると同じ角度で跳ね返し、中心から離れた部分に当たると、離れた分だけ角度をつけて跳ね返します(パドルが丸くなるため、その丸みの分だけ角度がつくイメージ)。

コスチューム

膨らんだパドル(楕円パドル)を追加する。

定義/変数

ふくらみキー : 「↑(上矢印)」
パドル1のx座標 : p1-x (すべてのスプライト)
パドル2のx座標 : p2-x (すべてのスプライト)

プログラム

■パドル1のコスチューム
長方形のコスチュームを「line」とします。
楕円形のコスチュームを「oval」とします。

■パドル1のコスチューム変更
パドル1の初期化が完了したら、メッセージを送ります。そのメッセージを受けて、コスチュームの変更ループ「ずっと」を実行します。その中で、先程定義した「ふくらみキー」が押されている場合は、コスチュームを「oval」にします。そうでなければ、コスチュームを「line」にします。

■ボールがパドル1と接触したときの跳ね返り角度
①パドルのコスチュームが楕円形のとき
 ボールがパドル1と接触したとき、もし↑矢印が押されていれば、楕円形だと判断し、ボールの角度を「80*((x座標 – p1-x) / 50)」の角度に向けます。 「x座標 – p1-x」はボールとパドル1の横方向の位置がどれだけずれているかを計算しています。パドルの横幅は101なので、差分は最大で±50となります。したがって、その計算結果を50で割ると、その計算結果は-1~+1の範囲に収まります。最大角度は80度に設定したいため、80を掛け算しています。
 パドル2も同様ですが、跳ね返り方向がパドル1とは逆なので、演算式に注意してください。演算式は、 「180+80*((p1-x – x座標 ) / 50)」 です。角度は、画面上方向が0度、右が90度、下が180度、左が270度(-90度)なので、紙に書いてよく考えて理解を深めて下さい。

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