SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

3D 100mダッシュ

IchigoJam Rのスピードを活かして、おなじみの100mダッシュゲームを3D視点にしてみました。スペースキーを連打してダッシュします。
ちなみにIchigoJam Sだと、3D表示が遅くて人間の連打に着いていけず、タイムが出ません。
動画はこちら。

【IchigoJam】3D 100mダッシュ

f:id:shiro0922:20210131181040p:plain

プログラム

ノーマル版

1kバイト目一杯で、タイトルやラベルが入りませんでした。

1 CLS:LC 9,0:?"***100m Dash***"
2 ?:?"TIME ";T/60;".";T%60/6;
3 IF T<S OR S=0 S=T
4 LC 12,2:?"Today Record ";S/60;".";S%60/6
5 DRAW 0,11,63,11
6 DRAW 31,12,0,43
7 DRAW 32,12,63,43
8 LC 10,12:?"------------"
9 LC 11,11:?"10"
10 LC 0,22:?"===============================";
11 LC 1,21:?"0"
12 LC 15,22:?CHR$(250);
13 WAIT 60
14 LC 13,20:?"READY?"
15 IF BTN(32) CONT
16 IF !BTN(32) CONT
17 LC 5,2:?"0.0  "
18 LC 13,20:?"      "
19 LC 13,20
20 FOR I=3 TO 1 STEP -1
21 ?I;" ";:BEEP
22 WAIT 60
23 NEXT
24 LC 13,20:?"      "
25 BEEP 10,30
26 L=16:CLT
27 IF !BTN(32) CONT
28 IF BTN(32) CONT
29 FOR R=16 TO 2 STEP -1
30 A=#9B1+R*31:C=PEEK(A)
31 COPY A+31,A,2
32 POKE A+33,C*(C=61 OR C=45)
33 COPY A+34,A+33,R*2-3
34 NEXT
35 LC 15,22:?CHR$(250);
36 L=L+1:C=0
37 IF L%100=0 C=61 ELSE IF L%10=0 && L<100 C=45
38 LC 15,7:?CHR$(C,C)
39 LC 15,7
40 IF L%100=1 ?"G" ELSE IF L%10=1 && L<100 ?L-1
41 T=TICK()
42 LC 5,2:?T/60;".";T%60/6
43 IF L<115 GOTO 27
44 LC 13,20:?"GOAL!"
45 BEEP 10,30
46 WAIT 120
47 RUN

展示用

  • 入力を外付けボタンに変更
  • トップレコードをプログラムの末尾に書きこんでSAVEします。電源を切っても消えません。
  • 最初に「POKE #FFE,3」で、仮のトップレコード(12.8秒)を入れて「SAVE 0」しておいてください。
1 @ARUN:CLS:LC9,0:?"***100m Dash***"
2 ?:?"TIME ";T/60;".";T%60/6;
3 S=PEEK(#FFE)*256+PEEK(#FFF)
4 LC12,2:?"Top Record ";S/60;".";S%60/6
5 DRAW0,11,63,11
6 DRAW31,12,0,43
7 DRAW32,12,63,43
8 LC10,12:?"------------"
9 LC11,11:?"10"
10 LC0,22:?"===============================";
11 LC1,21:?"0"
12 LC15,22:?CHR$(250);
13 WAIT60
14 LC13,20:?"READY?"
15 IFBTN()CONT
16 IF!BTN()CONT
17 LC5,2:?"0.0  "
18 LC13,20:?"      "
19 LC13,20
20 FORI=3TO1STEP-1
21 ?I;" ";:BEEP
22 WAIT60
23 NEXT
24 LC13,20:?"      "
25 BEEP10,30
26 L=16:CLT
27 IF!BTN()CONT
28 IFBTN()CONT
29 FORR=16TO2STEP-1
30 A=#9B1+R*31:C=PEEK(A)
31 COPYA+31,A,2
32 POKEA+33,C*(C=61 OR C=45)
33 COPYA+34,A+33,R*2-3
34 NEXT
35 LC15,22:?CHR$(250);
36 L=L+1:C=0
37 IFL%100=0C=61ELSEIFL%10=0&&L<100C=45
38 LC15,7:?CHR$(C,C)
39 LC15,7
40 IFL%100=1?"G"ELSEIFL%10=1&&L<100?L-1
41 T=TICK()
42 LC5,2:?T/60;".";T%60/6
43 IFL<115GOTO27
44 LC13,20:?"GOAL!"
45 BEEP10,30
46 WAIT120
47 IFT<SS=T:POKE#FFE,S/256:POKE#FFF,S%256:SAVE
48 RUN