MISSILE
MATH
By TUONG (Tom) TRAN
By TUONG (Tom) TRAN
Many times it is very hard to get a youngster to do any type of school work. The program below is a combination education-alarcade type game. The game requires the child to use both his brains and arcade skill to get a good high score. The game needs 16K and a joystick. In the game different math equations move across the top of your screen, and with your joystick you position your number shooter over the answer at the bottom of the screen and pull back. This will then pick up the number and display it on the bottom of your Number Shooter.
Once you have the correct answer displayed on your shooter, position the answer (with joy stick), directly under the equation. Then push the red button and joystick forward, and the number will be fired at the equation. If the answer is correct you'll hear a big explosion and ten points will be added to your score. If you are incorrect then part of the equation will break off and fall on your Number Shooter and destroy it. This will subtract one life and ten points from your score.
The game begins by giving you a few options. They are EQUAT (Equations, as many as you wish), LEVEL(Up to 15), LIVES(Up to 15), START(Begin game). Each option is selected or changed by the movement of the joystick. Once the flashing arrow is beside the option you want, press the red button. This will then allow you to change the option by pushing the joystick up(for higher) or down (for lower). The higher the level that you choose, the faster the equations cross the screen. This makes it very difficult, because the child has to first think of the correct answer and then pick the number up with the joystick.
This game was written entirely in BASIC without any assembler subroutines whatsoever. This program shows how easy it is to make a good educational tool without having to learn assembly language. If you have any changes that might make this program more enjoyable,I'd be happy to hear of them. Have fun and remember this game is for Kids!(Right?)
10 REM ---BY--TOM--TUONG--TRAN---
15 REM ---FOR ROM ISSUE 5--------
20 DIM O$(1),B(3),L(14):B(1)=20:B(2)=1:B(3)=1:F=128:FOR Q=0 TO 14:L(Q)=0:NEXT Q:GOTO 810
30 C=0:GRAPHICS 0:X=20:SCREEN=PEEK(88)+256*PEEK(89):P=SCREEN+X+40*21
40 GRAPHICS 1:POKE 710,96:SETCOLOR 2,0,0:POKE 752,1
50 ? "↓":POKE 85,1:? :GOSUB 560
60 ? #6;"score equations":? #6:? #6:LEVEL=1:FOR W=1 TO 10:? #6;" >";W:NEXT W
70 GOSUB 80:GOTO 200
80 FOR Q=1 TO 50:NEXT Q:B(1)=B(1)-1:POSITION 9,2:? #6;" ":POSITION 9,2:? #6;B(1):IF B(1)<=0 THEN 810
90 I=1:A=INT(RND(0)*6):B=INT(RND(0)*5):RN=INT(RND(0)*2):IF RN=0 THEN D=A+B:O$="+":RETURN
100 IF B>A THEN TE=A:A=B:B=A
110 D=A-B:O$="-":RETURN
120 FOR PO=SD TO SD+27 STEP 5:VOL=14-PO/20:SOUND 0,PO,0,VOL:SOUND 1,PO,8,VOL:SOUND 2,PO+15,2,VOL:NEXT PO
130 SD=SD+20:RETURN
150 POSITION 1,13-LEVEL:SOUND 1,70-I-B(2)*2,8,B(2)/15*2+0.5
160 POKE 85,I:? #6;" ";:I=I+1
170 POKE 85,I:? #6;A;O$;B;">";
180 IF I>=13 THEN POKE 85,I-1:? #6;" ";:SCORE=SCORE-(11-LEVEL):SOUND 1,0,0,0:GOSUB 80:GOTO 470
190 RETURN
200 GOSUB 150
210 FOR Q=1 TO 15-B(2):GOSUB 310:NEXT Q
220 GOTO 200
230 IF T=11 THEN X=X-1:GOTO 260
240 IF T=7 THEN X=X+1:GOTO 260
250 IF T=13 THEN F=PEEK(P+40)
260 IF X<=1 THEN X=X+1
270 IF X>=38 THEN X=X-1:RETURN
280 POKE P+1,0:POKE P-1,0:POKE P,0:POKE P-40,0:P=SCREEN+X+40*21
290 POKE P-1,128:POKE P,F:POKE P+1,128:POKE P-40,128
300 RETURN
310 IF STRIG(0)=0 AND C=0 THEN H=P-60+(20-INT(X/2+0.5)):GOSUB 150:GOSUB 340
320 T=STICK(0):IF T<>15 THEN GOSUB 230:RETURN
330 FOR Q=1 TO 250-B(2)*12:NEXT Q:RETURN
340 SD=20:SOUND 1,0,0,0
350 C=C+1:H=H-20:SOUND 0,SD,4,5:SD=SD+5
360 IF PEEK(H)<>0 THEN SD=5:GOTO 400
370 IF C>20 THEN GOSUB 480:C=0:SOUND 0,0,0,0:RETURN
380 POKE H,F-128
390 GOTO 340
400 REM
410 SOUND 0,0,0,0:GOSUB 480:IF D=F-128-16 THEN 430
420 GOSUB 490:GOTO 200
430 GOSUB 570
440 POKE 85,I-1:? #6;" ";:GOSUB 80
450 SCORE=SCORE+10*LEVEL:IF SCORE>100*LEVEL AND LEVEL<10 THEN LEVEL=LEVEL+1
460 IF B(2)<15 AND SCORE>1000*B(2) AND LEVEL>=10 THEN B(2)=B(2)+1:LEVEL=1
470 C=0:POSITION 1,2:? #6;" ":POSITION 1,2:? #6;SCORE:RETURN
480 FOR W=C TO 1 STEP -1:POKE H+W*20,0:NEXT W:RETURN
490 A1=PEEK(H):FOR W,=1 TO 200:NEXT W
500 FOR W=0 TO C-1:POKE H+20*W,A1
510 FOR Q=X1 TO X1+10:X1=X1+10:SOUND 0,Q,10,8:NEXT Q:X1=0
520 POKE H+20*W,0:NEXT W:GOSUB 800
530 POKE P,0:POKE P-40,0:POKE 85,I-1:? #6;" ":C=0
540 FOR W=1 TO 10:POKE P+W,128:POKE P-W,128:GOSUB 120:POKE P+W,0:POKE P-W,0:NEXT W:GOSUB 600
550 ? "↑":? :FOR Q=1 TO B(3)":? " ";:NEXT Q:? "↑":B(3)=B(3)-1:IF B(3)<=0 THEN 810
560 ? ;:FOR Q=1 TO B(3):? "";:NEXT Q:POKE P,F:POKE P-40,128:POKE P+1,128:POKE P-1,128:I=1:RETURN
570 FOR W=0 TO 5
580 GOSUB 800
590 NEXT W
600 FOR Q=0 TO 3:SOUND Q,0,0,0:NEXT Q:SD=0:RETURN
610 GRAPHICS 2+16:S=PEEK(88)+PEEK(89)*256+20*5+1:? #6;" ****************";
620 ? #6;"** ":? #6;" missile-math":? #6:? #6;" BY: TOM TUONG TRAN ":? #6:? #6; ;B(1)
630 POKE S+20,30:? #6;;B(2):? #6;:";B(3):? #6;";:? #6:? #6;"******************":C=1
640 IF STRIG(0)=0 THEN 690
650 T=STICK(0):IF T=15 THEN 640
660 POKE S+C*20,0:IF T=14 AND C>1 THEN C=C-1:GOTO 680
670 IF T=13 AND C<4 THEN C=C+1
680 POKE S+C*20,30:FOR Q=1 TO 50:NEXT Q:GOTO 640
690 IF C=4 THEN V1=B(1):V2=B(2):V3=B(3):GOTO 30
700 FOR Q=S+C*20+1 TO S+C*20+7:POKE Q,PEEK(Q)-128:NEXT Q:FOR Q=1 T0 100:NEXT Q:S2=0
710 IF STRIG(0)=0 THEN 790
720 T=STICK(0):IF T=15 THEN 710
730 S1=0:IF T=14 THEN S1=1
740 IF T=13 AND B(C)>0 THEN S1=-1
750 IF C=1 AND (B(1)>=16 OR T=14)THEN 780
760 IF C>1 AND (B(C)<=14 OR S1=-1) THEN 780
770 GOTO 710
780 B(C)=B(C)+S1:POSITION 9,5+C:?#6;" ":POSITION 9,5+C:? #6;B(C):FOR Q=1 TO 20:NEXT Q:GOTO 720
790 FOR Q=S+C*20+1 TO S+C*20+7:POKE Q,PEEK(Q)+128:NEXT Q:FOR Q=1 T0 100:NEXT Q:GOTO 640
800 SETCOLOR 2,3,3:SETCOLOR 4,3,3:POKE 755,4:GOSUB 120:SETCOLOR 2,0,0:SETCOLOR 4,0,0:POKE 755,2:GOSUB 120:RETURN
810 GRAPHICS 1+16:IF B(1)<15 THEN B(1)=16
820 ? #6;:? #6;" missile-math":? #6:? #6:? #6;"2+5-4+3-2+1-8+ ":? #6:? #6
830 ? #6;:? #6:? #6;" BY:TOM TUONG TRAN":? #6
840 IF SCORE>HI THEN HI=SCORE:H1=HI:C1=1:GOSUB 920
850 ? #6:? #6;" HI-SCORE":?#6: POKE 85,(20-C1)/2:? #6;HI:? #6:? #6;" SCORE:";SCORE:? #6;" EQUATIONS:";B(1)
860 ? #6;" LEVEL:";B(2):? #6;" LIVES:";B(3):? #6:? #6;" ******************"
870 IF STRIG(0)=0 THEN 610
880 GOSUB 940:POSITION 2,5:? #6;L(1);"+";(2);"-";L(3);"+"";L(4);"-";L(5);"+";L(6);"-";L(7);"+";L(8)
890 FOR Q=1 TO 50:NEXT Q
900 POSITION 2,5:? #6;"-";L(1);"+";L(2);"-";L(3);"+";L(4);"-";L(5);"+";L(6);"-";L(7);"+":FOR Q=1 TO 50:NEXT Q
910 GOTO 870
920 H1=H1/10:IF H1<1 THEN RETURN
930 C1=C1+1:GOTO 920
940 FOR Q=8 TO 1 STEP -1:L(Q)=L(Q-1):NEXT Q:L(1)=INT(RND(0)*10):RETURN