プログラミングゼミ:信号を守る車

オブジェクト(プログラミングゼミではキャラ)に視覚はない。

プログラミングゼミではアプリ側で当たり判定をサポートする(当たり判定調べる)命令はあるけれど、これは触覚(接触判定?)みたいなもので、当たらなければ(ぶつからなければ)判定できない。

信号のオブジェクト置いて➡️➡️に変化させてもそれだけでは、(車は)信号の変化を認識できない。

信号の変化を認識させる方法は複数ありますが、今回は「当たり判定」を利用してます。

交差点中央以外の道路上に、適時信号機オブジェクト出現(→消去)させ車と当たり判定が発生したら車の移動量を変化させる。

動画前半では当たり判定用の信号機の「いろのこさ」を0にして透明にしています(道路上に信号機があるのは不自然なので)。

動画後半では「いろのこさ」をデフォルト(255)にして、役割りを分かりやすくしています。

プログラム解説


車の動きを制御するプログラムです。
下記⬇️でポイントとなる部分を解説します。


①交差点内での速度(青信号時)をある程度ランダム性を持たせて設定しています。

(1)変数『速度』に『1』を入れます
(2)変数『速度2』に『1~3どれかの数値(ランダム)÷10』を入れます
(3)『速度』を『速度+速度2』にする

(3)を数式にすると
sokudo = sokudo + sokudo2
この式は左辺と右辺が同じ値にならないので本来「=」にはなりません。

プログラムの「=」は「等しい」という意味ではなく、左辺の変数に右辺の計算結果を入れるという意味なのです。



②道路上の信号オブジェクト(交差点中央は除く)に接触した際に車の動きを制御しています。

(1)黄信号:青信号時には一つの『ちょっとまつ』命令を二つにして「スピードの減速」を表現しています。
現実と違いプログラムではスピードを一瞬で0にできますが、それでは不自然です。

(2)赤信号:プログラムでは『0 すすむ』で車の動きを止めています。
これは『ちょっとまつ』系の命令はプログラムの処理を止めてしまい都合が悪かったから(面倒くさかったから)です。
移動量0=止まる」のようにちょっとした発想の転換がプログラミングには必要になります。