【遊び方】
IchigoJam基板のOUTポート1から6に、適当なLEDを付けてください。
できれば、LEDをOUT1~6の右回り順に円形に並べましょう。
なお、一応ディスプレイにも数を表示するので、LEDが付いていなくても遊べます。
1.IchigoJam基板のタクトスイッチ(SW1)を押すとルーレットが回転します。
2.もう一度押すと、徐々に回転速度が落ちてやがて止まります。
3.止まった箇所のLEDを点滅して、当たりを知らせます。
4.1.から繰り返します。
ルーレットが回転してから10秒以経つとBEEPを止めるようにしました(BEEP音苦情対策)。
季節柄、サイコロ代わりにいいかもしれません。
【変数表】
P OUTポート番号(1~6)※あえて初期化せず
F ルーレットの状態フラグ( 0:回転!BTN 1:回転BTN待ち 2:停止)
W ルーレット回転中のWAIT値
F=0or1の時は固定値で、F=2のとき徐々に値を増やす(だんだん遅くなる)
R ルーレットを停止するWAIT値
⬛おまけ1(LEDがあるなら、これで十分かも・・)
10 OUT 1<<(TICK()/2%6):IF !BTN() CONT ELSE WAIT180:CONT
⬛おまけ2
まったく同じロジックでプログラムコードの短縮版を画像の4枚目に追加(2017/11/29up)。
10 '6DOTルーレット[ボタンスタート] V1.0 TOMO(2017/11) 20 IF BTN()=1 THEN CONT 30 PRINT 40 PRINT 50 PRINT"Push the button(SW2)!" 60 LED 1 70 OUT P,TICK()/30%2 :IF BTN()=0 THEN CONT 80 OUT 0 90 CLT 100 LET F,0 110 LET W,2 120 @LOOP 130 OUT P,1 140 PRINT P; 150 IF F=0 AND BTN()=0 THEN LET F,1 160 IF F=1 AND BTN()=1 THEN LET F,2 :LET R,RND(20)+20 170 IF F=2 THEN LET W,W+2 :IF W>R THEN BEEP 5,20 :WAIT 30 :RUN 180 IF F=2 OR TICK()<600 THEN BEEP 190 WAIT W 200 OUT P,0 210 LET P,ABS(P)+1 220 IF P>6 THEN LET P,1 230 GOTO @LOOP
ところで、90行目のCLTLは、CLTのタイプミスかと思われます。
ルーレットのだんだん止まるところを再現するなど、プログラムも素敵ですが、それ以上に自作のハードウェアが素晴らしいです! サイコロを使うより何倍も楽しそうですね。短縮版まで用意していただいて、ありがとうございます。