1 REM *** LISTING 2 *** 2 P%=PAGE:IF P%=&E00 THEN 10 3 VDU21 4 *KEY0 *T.|MDELETE1,6|MF.I%=0 TO TOP-PAGE S.4:I%!&E00=I%!P%:N.|MPA.=&E00|MEND|MVDU6|MRUN|M 5 *FX138,0,128 6 END 10 CLS:COLOUR3:PRINT'TAB(7)"PRESS ANY KEY WHEN READY"; 20 KEY%=INKEY(8000) 30 PROCinit 40 REPEAT 50 MODE1 60 PROCdifficulty 70 MODE2 80 QUESTION=0 90 REPEAT 100 QUESTION=QUESTION+1 110 PROCquestion 120 UNTIL QUESTION=10 130 PROCend 140 UNTIL AA$<>"Y" 150 MODE7 160 END 170 DEF PROCinit 180 VDU26:CLS 190 HEAD$=CHR$226+CHR$227+CHR$11+CHR$8+CHR$8+CHR$224+CHR$225 200 MIDDLE$=CHR$230+CHR$231+CHR$11+CHR$8+CHR$8+CHR$228+CHR$229+CHR$11+CHR$8+CHR$8 210 BOTTOM$=CHR$234+CHR$235+CHR$11+CHR$8+CHR$8+CHR$232+CHR$233+CHR$11+CHR$8+CHR$8 220 TEDDY$=BOTTOM$+MIDDLE$+HEAD$ 230 WAISTCOATtop$=CHR$238+CHR$239+CHR$11+CHR$8+CHR$8+CHR$236+CHR$237 240 WAISTCOATbottom$=CHR$11+CHR$240+CHR$241+CHR$11+CHR$8+CHR$8 250 WAISTCOAT$=WAISTCOATbottom$+WAISTCOATtop$ 260 EYE$=CHR$11+CHR$11+CHR$11+CHR$11+CHR$11+CHR$242+CHR$243 270 WIPE$=CHR$11+CHR$244+CHR$244+CHR$11+CHR$8+CHR$8+CHR$244+CHR$244 280 BOWTIE$=CHR$11+CHR$11+CHR$11+CHR$245+CHR$246:REM +CHR$11+CHR$8+CHR$8+CHR$247+CHR$248 290 A%=0:D%=0:E%=0:F%=0:FLAG%=0 300 DIMA$(10),B$(10) 310 FORX%=1TO10:READ A$(X%):NEXT 320 FORX%=1TO10:READ B$(X%):NEXT 330 DATA"01280576","0000057602560576","006408320320083201920320","00640832032008320064032003200320","0064083201920832032008320064032003200320" 340 DATA"006408320320083201280576025605760064032003200320","00640832019208320000057601280576025605760064032001920320" 350 DATA"0064083201920832032008320128057602560576006403200192032003200320","006408320192083203200832000005760128057602560576006403200192032003200320" 360 DATA"00640832019208320320083200000576012805760256057603840576006403200192032003200320" 370 DATA"08960576","0768057610240576","083208321088083209600320","08320832108808320832032010880320" 380 DATA"0832083209600832108808320832032010880320","083208321088083208960576102405760832032010880320" 390 DATA"08320832096008320768057608960576102405760832032009600320" 400 DATA"0832083209600832108808320896057610240576083203200960032010880320","083208320960083210880832076805760896057610240576083203200960032010880320" 410 DATA"08320832096008321088083207680576089605761024057611520576083203200960032010880320" 420 ENDPROC 430 DEF PROCquestion 440 GCOL0,6:MOVE0,256:DRAW1280,256 450 VDU28,0,31,19,25 460 LOCALA%,B%,C% 470 A%=RND(G%):B%=RND(G%):C%=A%+B% 480 VDU5:MOVE544,992:PRINT"ADD" 490 MOVE520,1024:DRAW520,256:MOVE752,256:DRAW752,1024 500 L$=STR$(A%):LL$=STR$(B%) 510 GCOL0,7:IF LEN(L$)<2 THEN MOVE672,800:PRINT;A%; ELSE MOVE608,800:PRINT;A%; 520 VDU4:COLOUR7 530 PROCsound2(150):PRINTTAB(1-LEN(L$),27);L$; 540 PROCteddy(A$(A%)) 550 PRINT;" + ";LL$;:PROCsound2(100) 560 VDU5:GCOL0,7::MOVE536,704:PRINT;"+";:IF LEN(LL$)<2 THEN MOVE672,704:PRINT;B%;:VDU4 ELSE MOVE608,704:PRINT;B%;:VDU4 570 PROCteddy(B$(B%)) 580 PRINT;" makes "; 590 GCOL0,7:MOVE528,640:DRAW744,640:MOVE528,544:DRAW744,544:MOVE528,528:DRAW744,528 600 PROCon 610 *FX15,1 620 PROCsound2(50):INPUTAN% 630 IF AN%<1 OR AN%>20 THEN CLS:PRINT;A%;" + ";B%;" MAKES ";:GOTO620 640 PROCoff 650 LLL$=STR$(AN%) 660 VDU5:IF LEN LLL$<2 THEN MOVE 672,608:PRINT;AN%;:VDU4 ELSE MOVE608,608:PRINT;AN%;:VDU4 670 IF AN%=C% PROCoff:PROCcorrect:FLAG%=0:VDU26:CLS:ENDPROC 680 PROCcross 690 IF FLAG%=0 THEN PROCwrong:COLOUR7:GOTO530 ELSE CLS:COLOUR3:PRINT'"YOU'RE STILL WRONG!"''"TRY A NEW SUM":PROCwait(3):PROCsound2(RND(180)+50):VDU26:CLS:FLAG%=0:ENDPROC 700 ENDPROC 710 DEFPROCteddy(A$) 720 LOCALX%,Y% 730 VDU5 740 FORX%=1 TO LEN(A$) STEP 8 750 x%=VAL(MID$(A$,X%,4)):y%=VAL(MID$(A$,X%+4,4)) 760 MOVE x%,y% 770 GCOL0,3 780 PRINTTEDDY$ 790 V%=RND(7) 800 IF V%=3 THEN 790 810 GCOL0,V% 820 MOVE x%,y% 830 PRINTWAISTCOAT$ 840 GCOL0,15 850 MOVEx%,y% 860 PRINTEYE$ 870 V%=RND(7):IFV%=3THEN870 880 GCOL0,V% 890 MOVEx%,y% 900 PRINTBOWTIE$ 910 NEXT 920 VDU4 930 PROCoff 940 ENDPROC 950 DEF PROCcorrect 960 PROCoff:PROCtick:COLOUR3:PRINT'"WELL DONE!":RESTORE1930:PROCtune:PRINT'"THAT IS RIGHT":PROCwait(3):CLS:PROCwipe:VDU26:CLS 970 IF (FLAG%=0 AND D%=0) THEN E%=E%+1 980 D%=0 990 ENDPROC 1000 DEF PROCwrong 1010 PROCoff:D%=D%+1:IF D%>2 THEN PROCtell(A$(A%),B$(B%)):PROCwait(3):PROCsound2(RND(180)+50):PRINT'"TRY AGAIN":PROCwait(3):CLS:PROCwipe:ENDPROC 1020 IF D%=1 F%=F%+1 1030 COLOUR3:PRINT'"THAT IS WRONG!":PROCwrongsound:PRINT'"TRY AGAIN":PROCwait(3):CLS:PROCwipe:ENDPROC 1040 DEF PROCtell(A$,B$) 1050 FLAG%=1 1060 COLOUR3 1070 PRINT'"WRONG AGAIN!":PROCwrongsound:CLS:VDU24,550;650;720;800;:CLG:VDU24,608;560;720;620;:CLG:VDU26:VDU28,0,31,19,25:PRINT'"LETS COUNT THEM "''"TOGETHER":PROCwait(3) 1080 N%=1 1090 VDU5 1100 FORX%=1 TO LEN(A$) STEP 8 1110 x%=VAL(MID$(A$,X%,4)):y%=VAL(MID$(A$,X%+4,4)) 1120 MOVEx%,y% 1130 GCOL0,0 1140 PRINTWIPE$ 1150 IF N%<10 MOVEx%+28,y%+50 ELSE MOVEx%,y%+50 1160 GCOL0,7 1170 PRINT;N%; 1180 PROCsound(50+(N%*5)) 1190 PROCwait(3) 1200 N%=N%+1 1210 NEXT 1220 FOR X%=1 TO LEN(B$) STEP 8 1230 x%=VAL(MID$(B$,X%,4)):y%=VAL(MID$(B$,X%+4,4)) 1240 MOVEx%,y% 1250 GCOL0,0 1260 PRINTWIPE$ 1270 IF N%<10 MOVEx%+28,y%+50 ELSE MOVEx%,y%+50 1280 GCOL0,7 1290 PRINT;N%; 1300 PROCsound(50+(N%*5)) 1310 PROCwait(3) 1320 N%=N%+1 1330 NEXT 1340 D%=0:N%=0 1350 VDU4 1360 PROCoff 1370 CLS 1380 COLOUR7 1390 PRINTTAB(1-LEN(L$),27);L$;:VDU5:GCOL0,7:IF LEN(L$)<2 THEN MOVE672,800:PRINT;A%;:VDU4 ELSE MOVE608,800:PRINT;A%;:VDU4 1400 PROCoff:PROCsound2(180):PROCwait(2):PRINT;" + ";:VDU5:GCOL0,7::MOVE536,704:PRINT;"+";:VDU4 1410 PROCoff:PROCsound2(120):PROCwait(1):PRINT;LL$;:VDU5:IF LEN(LL$)<2 THEN MOVE672,704:PRINT;B%;:VDU4 ELSE MOVE608,704:PRINT;B%;:VDU4 1420 PROCoff:PROCsound2(80):PROCwait(2):PRINT;" makes "; 1430 C$=STR$(C%):PROCwait(2):PRINT;C%;:PRINT:VDU5:IF LEN C$<2 THEN MOVE 672,608:PRINT;C%;:ELSE MOVE608,608:PRINT;C%; 1440 VDU4:PROCoff:PROCsound2(90):PROCwait(4) 1450 COLOUR3 1460 ENDPROC 1470 DEFPROCtick:GCOL0,7:MOVE0,0:MOVE1024,160:DRAW1056,128:DRAW1104,216:ENDPROC 1480 DEFPROCcross:GCOL0,7:MOVE0,0:MOVE1024,208:DRAW1120,112:MOVE1024,112:DRAW1120,208:ENDPROC 1490 DEF PROCend 1500 CLS 1510 PRINT''''''" You have had 10"''" questions"''" You got ";E%;" right"''" and ";F%;" wrong." 1520 PROCon 1530 PRINT''''''"Another go (Y/N)?";:REPEAT:AA$=GET$:UNTIL AA$="Y" OR AA$="N" 1540 PROCoff 1550 E%=0:F%=0 1560 ENDPROC 1570 DEF PROCwipe 1580 VDU26 1590 PROCoff 1600 LOCALY% 1610 FORY%=0 TO 22:PRINTTAB(0,Y%)SPC(8);TAB(12,Y%)SPC(8);:NEXT 1620 VDU24,608;560;720;620;:CLG:VDU26 1630 VDU28,0,31,19,25 1640 ENDPROC 1650 DEFPROCoff:VDU23,1,0;0;0;0;:ENDPROC 1660 DEF PROCon:VDU23,1,1;0;0;0;:ENDPROC 1670 DEF PROCwait(W%) 1680 LOCALT% 1690 T%=TIME:REPEAT UNTIL TIME=T%+(W%*100):ENDPROC 1700 DEFPROCsound(S%):SOUND1,1,S%,1:ENDPROC 1710 DEFPROCsound2(S%):SOUND2,1,S%,1:ENDPROC 1720 DEF PROCdifficulty 1730 CLS 1740 VDU19,3,5,0,0,0 1750 COLOUR2 1760 PRINTTAB(2,5)"Level of difficulty:-" 1770 PRINTTAB(6,10)"1 - Random numbers upto 4" 1780 PRINTTAB(6,13)"2 - Random numbers upto 6" 1790 PRINTTAB(6,16)"3 - Random numbers upto 8" 1800 PRINTTAB(6,19)"4 - Random numbers upto 10" 1810 COLOUR3:PRINTTAB(2,26)"Please make your selection ";:REPEAT:DIFFICULTY%=GET-48:UNTILDIFFICULTY%>0 AND DIFFICULTY%<5 1820 G%=DIFFICULTY%*2+2 1830 ENDPROC 1840 DEF PROCwrongsound:FOR I%=190 TO 0 STEP-4:SOUND1,-15,I%,1:NEXT:ENDPROC 1850 DEF PROCtune 1860 REPEAT 1870 READ p%,d% 1880 IF p%=-1 THEN 1910 1890 SOUND 2,-15,p%,2*d%/3 1900 SOUND 1,-6,p%,2*d%/3 1910 UNTIL p%=-1 1920 ENDPROC 1930 DATA 13,5,33,10,49,5,41,5,49,5,41,5,33,10,49,5,41,10,49,5,33,5,41,5,49,5,41,10,49,5,33,20,-1,-1 1940 IF ERR=17 THEN *GDUMP 0 2 9 1950 CLS:PRINTERR 1960 STOP