フルカラーLEDルーレット

IchigoJam のスカッシュゲーム を改良して、ルーレットゲームにしました。
赤色の当たり位置を狙って、タクトスイッチを押してルーレットを止めます。


‘simple Roulette

30 CLV:W=5:Q=10
40 F=0:C=1:R=RND(Q)
100 @MAIN
110 LET[ABS(P)*3],0,0,0

120 LET[R*3],0,99,0
130 P=P+1
140 LET[ABS(P)*3],C&1*50,C>>1&1*50,C>>2&1*50
150 WS.LED Q:BEEP
160 IF P==Q-1 P=1-Q
170 WAIT W
180 IF BTN() F=1
190 IF F==1 W=W+5+RND(5)
200 IF W<60 GOTO@MAIN



■プログラムの説明■
30行目40行目 変数の初期化です。
 当たり位置は乱数で決めます。

100行目 @MAIN
 ルーレットの往復を繰り返す、メイン処理です。
110行目 LET[ABS(P)*3],0,0,0
 前のボール位置を消灯に設定します。
120行目 LET[R*3],0,99,0
 ルーレットの当たり位置を、赤色(輝度99)に設定します。
130行目 P=P+1
 ボール位置を移動させて、現在のボール位置にします。
140行目 LET[ABS(P)*3],C&1*50,C>>1&1*50,C>>2&1*50
 新しいボール位置を、ボール色(輝度50)に設定します。
150行目 WS.LED Q:BEEP
 フルカラーLEDを、配列に設定した値で点灯させ、
 BEEP音を鳴らします。
160行目 IF P==Q-1 BEEP30:P=1-Q
 ボール位置が端に到達したら、方向を反転させます。
170行目 WAIT W
 ボール移動の待ち時間です。
180行目 IF BTN() F=1
 タクトスイッチが押されたら、ルーレットの動作モードを停止モードに切り替えます
190行目 IF F==1 W=W+5+RND(5)
 ルーレット停止モードであれば、ボール待ち時間を少しずつ増やします。
 これで、ボールがだんだん遅くなっていく動きになります。
200 IF W<60 GOTO@MAIN
 ボール待ち時間が60以下なら、@MAIN処理を繰り返します
 60以上なら、プログラムを終了します。


この教材は「Creative Commons — CC BY-SA 4.0」の下に提供されています。