フルカラーLEDルーレットゲーム

フルカラーLEDスカッシュ」を少し改良して、ルーレットゲームにしました。
RUNすると、ルーレットのように、ボールが音をたてて動きます。
タクトスイッチを押すと、ボールがだんだん遅くなって止まります。
赤の「当たり位置」を狙って止めてください。

フルカラーLEDの使い方は、テキスト「LEDでナナイロづくり」の「ルーレット」も参考になります。


‘Simple Roulette フルカラーLEDルーレット

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
 ボール位置(配列)を消灯に設定します。
 Pが負数の場合もあるので、ABSで指定します。
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
 新しいボール位置に、ボール色を設定します。
 このプログラムでは緑(C=1)ですが、他の色も試してみてください。
150行目 WS.LED Q:BEEP
 配列に設定した値でフルカラーLEDを点灯し、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)
 停止モードならば、ボールの移動時間を増やしていき、だんだん遅くしていきます。
 毎回ボールの停止位置が異なるように、RND命令も加えるのがポイントです。
200 IF W<60 GOTO@MAIN
 ボールの移動時間が60(1秒)より短いなら、@MAIN処理を繰り返します。
 60以上なら、プログラムを終了してコマンドプロンプトになります。
 ルーレットが動いている時(F==0)は、Wの値が5のままなので、
 ルーレットはいつまでも動き続けます。
 停止モード(F==1)になると、いつかはWの値が60以上になるので、
 ルーレットが停止するというしくみです。



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