相撲ゲーム 早さの値の交換をしてぶつかり合うゲーム

温度が上がると激(はげ)しく動く気体


スクラッチページにあります

気体の動きを作りましたが、ぶつかると跳ね返るようにしたい。
でもたくさんの分子を跳ね返すのは、ボクの力不足で、スクラッチでは難しい。
(他のもっと配列を自由に使える言語なら簡単かな・・・スクラッチでも、配列に座標いれて使えばできそう・・・)
そこで、2つだけ跳ね返るように、相撲ゲームを作ってみました。



準備(じゅんび)




変数をいくつか作ります。
加速度は、跳(は)ね返る量(りょう)を決(き)めています。
これを変えることで、ゲームの早さが調節(ちょうせる)でき、ゲームを作るのが簡単になります。
左右赤は、赤いスクラッチの左右の早さ
上下赤は、赤いスクラッチの上下の早さ
この2つで赤いスプライトの動きが決まります。
左右青は、青いスクラッチの左右の早さ
上下青は、青いスクラッチの上下の早さ
この2つで、青いスプライトの動きが決まります。
そして、記憶という変数をつかってで、赤と青の動きを交換(こうかん)します。
これは後から説明します。

赤いスプライトの動き

赤いスプライトと青いスプライトを用意します。
丸いボールの色をぬっただけです。
ぬらなくても、大丈夫(だいじょうぶ)です。
まず、初期設定として、次をします。
まず、はじめの場所を決める。
加速度:動かすキーが押(お)されたとき、これだけ早くうごくようになります。
左右赤:赤いボールの左右の早さです
上下赤:赤いボールの上下の早さです

次に、ずっとで始まります。
左向き矢印キーが押されたら、左向きの動きを、少し速くします。
左右赤が現在の早さで、それに加速度が加わりますので、おしているとどんどん早くなります。
右向き矢印キーが押されると、右向きの早さを少し早くします。
上向きキーも、下向きキーも同じことです。
そして、最後に、上下左右に動かします。

とちゅうに【もしうすい茶色に触れたら】土俵(どひょう)から出たと考えて、全てが止まるようにしました。



青いスプライトの動き


プログラムは赤とほとんど同じです。
コピーして、一部を直せば良いのです。

違うところは、2行目の、位置。座標が-40、y座標が-40と赤とは反対側の位置にします。
加速度は、もうグローバルなどこでも使える変数としてきまていますので、青い方には必要ありません。
でも、【ボールに触れたとき】という判断の中に【交換】というブロックをつくっていれました。
ここに入れて、赤と青を交換しますので、赤スプライトになくても、片方の青スプライトにあればいいのです。
(青でなくて、赤い方にあってもいいのですが、片方にあれば良いのです。)
スプライトは、z、x、c、sキーで動くようにしました。


交換の中身を見てみましょう

これが交換です

下の3行で赤の左右の動きと青の左右の動きを交換しておきます。
交換(swap;スワップ)と言う命令がある言語も多いのですが、簡単ですので、ここで交換の仕方を覚えましょう。

下のように変化視するのです。

これで20と30が交換されました。
そうして、次の3行で上下の動きを交換しているのです。
変数は数字や文字を入れる箱です。(他の言語ではもっと色々なものが・スプライトまでも・入ります。)
それがこんなふうに利用されるのです。
次進む