Ichigo64環境(IchigoJam+IchigoDot)用の連打ゲームです。
IchigoDotに標準添付の連打ゲームとは、動作が若干違います。
- 起動するとタイトル画面が出ます。
- ダウンカウント後、64個のドットが表示されます。ボタンを押して1個ずつ消してください。
- 64個のドットを全部消すと、所要時間が0.1秒単位で表示されます。例えば12.3秒かかった場合は、数字で「2.3」と表示され、画面一番下の行で10の位のドットが1個点灯します。最大89.9秒まで表示されます。
- ボタンを押すと、タイトル画面に戻ってリプレイされます。
作者の私はいい中年なので(^_^;)、通常のIchigoJamのタクトスイッチだとギリギリ9秒台です。
Ichigo64 Portableだとボタンが押しやすいので、7秒台が出せます。
IchigoDotでよく起きる、ボタンのチャタリング動作を確認したくて作りました。
が、連続消去されないようにプログラム内でボタンのON/OFFをちゃんと読んでいるせいか、そもそもBASICの速度がチャタリングに追いついていないのか、ドットが連続消去されることはありません。
ドットの消去動作は、高速化とコード短縮のため「MATLED PUSH」コマンドで消しています。(消すというより、1個少ない列を左へスクロールしています)。
IchigoDotの連打ゲームは左から右へドットが消えるのですが、このゲームでは逆に右から左へドットが消えます。
※10/17 Ver2.0
1ボタンでの操作は変わりませんが、画面表示をかなり変えました。
- PUSH方向を「上」にしました。
- ダウンカウント&終了後のタイム表示を、ローダーと同じ数字フォントにしました。
- タイム表示で16進数表示をやめ、10秒以上かかった場合は10の位をドット数で表すようにしました。
1 '*Renda64 2 WAIT60:UART1:CLS:? 3 CLV:?"MATLED SHOW 455166002E743464":PLAY"L8RGREFG":WAIT120 4 LET [10],7,5,5,5,7 5 LET [15],1,1,1,1,1 6 LET [20],7,1,7,4,7 7 LET [25],7,1,7,1,7 8 LET [30],5,5,7,1,1 9 LET [35],7,4,7,1,7 10 LET [40],4,4,7,5,7 11 LET [45],7,1,1,1,1 12 LET [50],7,5,7,5,7 13 LET [55],7,5,7,1,1 14 FORN=3TO1STEP-1:GSB29:GSB31:BEEP20,10:WAIT50:NEXT 15 FORI=0TO7:?"MATLED PUSH 255":NEXT:BEEP20,30:CLT:P=#FF 16 FORY=0TO7:P=P<<1:FORX=0TO7 17 IF!BTN()GOTO17 18 BEEP10,5:?"MATLED PUSH ";P 19 IFBTN()GOTO19 20 NEXT:NEXT 21 T=TICK()/6:IFT>899T=899 22 N=T/100:[7]=0:IFN=0GOTO24 23 FORB=0TON-1:[7]=[7]+(1<<B):NEXT 24 N=(T%100)/10:GSB30 25 N=T%10:GSB29 26 [5]=8:GSB31 27 BEEP30,60:WAIT60 28 IFBTN()GOTO3 ELSEGOTO28 29 FORY=0TO4:[Y]=([Y]&#F8)+[10+N*5+Y]:NEXT:RTN 30 FORY=0TO4:[Y]=([10+N*5+Y]<<4)+([Y]&7):NEXT:RTN 31 ?"MATLED SHOW ";:FORB=0TO7:IF[B]<16?0; 32 ?HEX$([B]);:NEXT:?:RTN
Renda15(9/13追加)
通常のIchigoJam用に移植しました。
IchigoDotを持っていない方も、マトリックスLEDで遊ぶ雰囲気を味わってみてください。
1 '*Renda15 2 CLS:LET[0],0,#A7,#F4,#62,16,#F5,20,3:GSB31:PLAY"G8R8E8F8G8":WAIT120 3 CLV:FORN=3TO1STEP-1:GSB11:BEEP20,10:WAIT30:NEXT:WAIT20 4 O=#E9:LC0,0:FORY=0TO7:?CHR$(O,O,O,O,O,O,O,O):NEXT:BEEP20,30:CLT 5 LC0,0:FORY=0TO7:FORX=0TO7 6 IF!BTN()GOTO6 7 BEEP10,5:?CHR$(#E8); 8 IFBTN()GOTO8 9 NEXT:?:NEXT:N=TICK()/6:GSB12:BEEP30,60:WAIT60 10 IFBTN()GOTO2 ELSEGOTO10 11 D=4:M=N:GSB14:GSB31:RTN 12 IFN>159N=159 13 D=0:M=N/10:GSB14:D=4:M=N%10:GSB14:[3]=#80:GSB31:RTN 14 GSBLINE()+M+1:RTN 15 LET[D],#3E,#41,#3E,0:RTN 16 LET[D],#42,#7F,#40,0:RTN 17 LET[D],#62,#59,#46,0:RTN 18 LET[D],#22,#49,#36,0:RTN 19 LET[D],#0C,#0A,#7F,0:RTN 20 LET[D],#2F,#49,#31,0:RTN 21 LET[D],#3E,#49,#32,0:RTN 22 LET[D],#03,#71,#0F,0:RTN 23 LET[D],#36,#49,#36,0:RTN 24 LET[D],#26,#49,#3E,0:RTN 25 LET[D],#7E,#09,#7E,0:RTN 26 LET[D],#7F,#49,#36,0:RTN 27 LET[D],#3E,#41,#22,0:RTN 28 LET[D],#7F,#41,#3E,0:RTN 29 LET[D],#7F,#49,#41,0:RTN 30 LET[D],#7F,#09,#01,0:RTN 31 LC0,0:FORB=0TO7:FORC=0TO7:A=([C]&(1<<B))>0:?CHR$(#E8+A);:NEXT:?:NEXT:RTN