REM MUSICAL LISTENING TRAINING RANDOMIZE TIMER ENVELOPE 1,0,8,0,8 PALETTE 0,0,63,42,21 TOUCHSCREEN GOSUB INIT GOSUB DRAWKEYBOARD text 0,6,"choose level" REPEAT UNTIL TOUCH GOSUB GETXY range=int((x+2)/2) if range<3 then range=3 TEXT 0,6,"LISTEN AND PLAY" T=1 GOSUB PLAYALL DO GOSUB TEST REPEAT UNTIL TOUCH GOSUB GETXY GOSUB GETN IF N>60 THEN PLAY 1,N,18 IF N-60=ANS THEN TEXT 0,8,"GOOD " SCORE=SCORE+1 ELSE TEXT 0,8,"WRONG " END IF GOSUB SHOWSCORE WAIT 80 T=T+1 IF T>RANGE+5 THEN IF SCORE>=RANGE*0.6 THEN TEXT 0,8,"LEVEL UP" RANGE=RANGE+1 ELSE TEXT 0,8,"TRY AGAIN" END IF IF RANGE>10 THEN TEXT 0,8,"YOU PASS THE TRAINING" END END IF GOSUB PLAYALL T=1 END IF WAIT 1 LOOP SHOWSCORE: LOCATE 0,10 PRINT"TEST=",T;" " print"SCORE=",SCORE;" " RETURN PLAYALL: SCORE=0 K$="01030506081012131517" FOR I=1 TO RANGE sprite 1,i*16-12,30,8 J=VAL(MID$(K$,I*2-1,2)) PLAY 1,60+J,18 WAIT 30 NEXT I WAIT 80 sprite off 1 RETURN TEST: R=INT(RND*RANGE)+1 ANS=VAL(MID$(K$,R*2-1,2)) PLAY 1,60+ANS,18 RETURN DRAWKEYBOARD: Y=1 REM WHITE KEY FOR X=0 TO 18 STEP 2 CALL DRAWKEY(X,Y,1) NEXT X REM BLACK KEY FOR X=1 TO 17 STEP 2 IF X=5 OR X=13 THEN X=X+2 CALL DRAWKEY(X,Y,0) NEXT X RETURN INIT: DIM KEYOFF(10),KEYOFFB(11) FOR I=0 TO 9 READ KEYOFF(I) NEXT I DATA 0,2,4,5,7,9,11,12,14,16 FOR I=0 TO 10 READ KEYOFFB(I) NEXT I DATA -99,1,3,-99,6,8,10,-99,13,15,-99 RETURN GETXY: X=TOUCH.X\8 Y=TOUCH.Y\8 RETURN GETN: N0=61-(Y\5)*12 IF Y MOD 5>2 THEN N=N0+KEYOFF(X\2) ELSE N=N0+KEYOFFB((X+1)\2) RETURN SUB DRAWKEY(X,Y,C) IF C=0 THEN CELL X,Y,0 CELL X,Y+1,1 CELL X+1,Y,2 CELL X+1,Y+1,3 ELSE CELL X,Y,4 CELL X,Y+1,4 CELL X,Y+2,4 CELL X,Y+3,5 CELL X+1,Y,6 CELL X+1,Y+1,6 CELL X+1,Y+2,6 CELL X+1,Y+3,7 END IF END SUB #2:MAIN CHARACTERS 00000000000000000000000000000000 00000000000000FF00000000000000FF 01010101010101010101010101010101 01010101010101FF01010101010101FF FFFFFFFFFFFFFFFF0000000000000000 FFFFFFFFFFFFFFFF00000000000000FF FFFFFFFFFFFFFFFF0101010101010101 FFFFFFFFFFFFFFFF01010101010101FF 00000000000000000000001818000000