Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2019/04/03 18:55:37

MixJuice GET URL : kidspod.club/mj/781

Ichigo音ゲー

上から落ちてくるドレミに合わせてスイッチを押せ!

OUT2に圧電サウンダを接続 IN2に抵抗分圧アナログキーを接続します。
プログラムを見るでサイトへリンク

otoset.basで配列にデータを書き込んでから、IchigoJamOtoGe-.basを実行

一番下の段にドレミが来たときに鍵盤キーを押すと、曲になります。
タイミングが合うほど高得点。フライングはできません。

MMLを作成して差し替えると別の曲にできます。
CcDdEFfGgAaBH で1オクターブの音階を表す。
-は音を伸ばす。_は休符。得点には関係ありません。

変数Lが音符1つ分の時間 1/60秒単位

曲データが長いとメモリ不足になります。
続きのプログラムを20行の初期設定を消して、次のスロットにセーブ
80行を LRUNFILE()+1にして、続けて実行します。

https://www.mercari.com/jp/items/m62066473870/
プリント基板をメルカリに出品しました。

SOURCE CODE

10 'OtoSet
20 POKE#800,20,215,0
30 POKE#808,24,188,0
40 POKE#810,2,196,222,0
50 POKE#818,6,218,0
60 POKE#820,10,208,0
70 POKE#828,12,204,167,0
80 POKE#830,16,191,0
90 POKE#838,26,196,222,0
100 POKE#840,22,188,98,0
110 POKE#850,4,196,222,35,0
120 POKE#858,8,208,98,0
130 POKE#868,14,204,167,35,0
140 POKE#870,18,215,98,0
150 LET[60],3822,3608,3405,3214,3034,2863,2703,2551,2408,2273,2145,2025,1911
160 LET[80],50,100,200,300,350,400,500,600,650,750,850,900,1000

10 'IchigoOtoGe-
20 CLS:H=50:P=2:V=0:L=30
30 M="B-A-G-EAG-E-":GSB@PL
40 M="DDG-G-A-----":GSB@PL
50 M="B-B->D-<BBA-G-":GSB@PL
60 M="EED-A-G-----":GSB@PL
70 M="________________________":GSB@PL
80 LC0,0:?"SCORE:";V*10/L:END
90 @PL:O=20:I=0:U=0
100 @RD:C=PEEK(M+I):I=I+1
110 IFC=34RTN
120 IFC=60U=60:GOTO@RD
130 IFC=61U=61:GOTO@RD
140 IFC=62U=62:GOTO@RD
150 SCROLL2
160 LC0,24:?" ~9A ~96 ~96 ~96 ~96 ~96 ~96 ~96 ~96 ~96 ~96 ~96 ~96 ~9B";
170 LC0,6:?CHR$(U):U=0
180 IFC=45:LCZ,6:?"|":GOTO@T
190 X=-1
200 IF(C>=65)*(C<=72)X=C-65
210 IF(C>=97)*(C<=103)X=C-89
220 IFX>=0:Z=PEEK(#800+#8*X):LCZ,6:?STR$(#801+#8*X)
230 @T:CLT
240 D=SCR(0,22)
250 IFD=60O=O/2
260 IFD=61O=20
270 IFD=62O=O*2
280 J=0
290 @S:J=J+1:IFSCR(J*2,22)>124GOTO@LP
300 IFJ=13J=0:GOTO@LP:ELSEGOTO@S
310 @LP:K=ANA(2)
320 IF(K>1000)*(F>=0)OUTP,0:F=-1
330 IF(F>=0)+(K>1000)GOTO@K:ELSEF=0
340 @L:IFK>[80+F]F=F+1:GOTO@L
350 IFF<>J-1GOTO@K
360 IFF>=0G=[60+F]/O:PWMP,G*H/100,G
370 W=L-TICK():LCJ*2-1,22:?"+";W:V=V+W
380 @K:IFTICK()<LGOTO@LP:ELSEGOTO@RD

10 'IchigoOtoGe- MML
20 CLS:?""
30 L=8:N=1:H=20:P=2
40 M="C-F-F-G-G-A--aH-a-":GSB@PL
50 M="A-A-G-G-F---__":GSB@PL
60 M="C-F-F-G-G-A--aH-a-":GSB@PL
70 M="A-A-G-G-F---__":GSB@PL
80 M="HaA_A_A_aAG_G_G_":GSB@PL
90 M="HaA_A_A_aAG_G_G_":GSB@PL
100 M="H-A-F-G-G-F-----":GSB@PL
110 END
120 @PL:O=20:I=0
130 @RD:C=PEEK(M+I):I=I+1:F=0
140 IFC=34OUTP,0:RTN
150 IFC=60O=O/2:GOTO@RD
160 IFC=61O=20:GOTO@RD
170 IFC=62O=O*2:GOTO@RD
180 IFC=95GSB@RE:GOTO@RD
190 IFC=45GSB@WT:GOTO@RD
200 IFC=67F=3822
210 IFC=99F=3608
220 IFC=68F=3405
230 IFC=100F=3214
240 IFC=69F=3034
250 IFC=70F=2863
260 IFC=102F=2703
270 IFC=71F=2551
280 IFC=103F=2408
290 IFC=65F=2273
300 IFC=97F=2145
310 IFC=66F=2025
320 IFC=72F=1911
330 IFF>0GSB@NT
340 GOTO@RD
350 @RE:OUTP,0:WAITL:GOTO@P
360 @NT:F=F/O:PWMP,F*H/100,F
370 @WT:IFPEEK(M+I)=45WAITL:ELSEWAITL-N:OUTP,0:WAITN
380 @P:IFINKEY()=8OUTP,0:END:ELSERTN

COMMENT