1 REM +++++++++++++++++++++++++++++++++ 2 REM ! Program .... DOGFIGHT 3 REM ! Utg}va ok{nd 4 REM ! Gjort av n}gon fr}n S{ter 5 REM ! {ndrat av m}nga 7 REM ! Minne 16 Kbytes 8 REM ! Ins{nt av Niclas Wiberg 9 REM +++++++++++++++++++++++++++++++++ 10 REM Ni {r tv} stycken och har en 11 REM varsin prick som ni styr omkring 12 REM p} sk{rmen. 13 REM Ni skall f|rs|ka skjuta ned 14 REM varandra med styrbara raketer 15 REM som ni avlossar. 16 REM Utf|rliga instruktioner finns. 17 REM Enligt den person jag fick pro- 18 REM grammet av, s} {r programmet 19 REM fritt f|r kopiering. 20 REM 100 GOSUB 1240 110 ; CHR$(12%); : ONERRORGOTO 110 120 ; "Hur l}nga skott "; : INPUT A8% 130 ; : ; "Skall hinderna f|rsvinna vid tr{ff (J/N) ? "; 140 GET \9$ : IF \9$="j" OR \9$="J" ; "JA" : GOTO 160 150 IF \9$="n" OR \9$="N" ; "NEJ" ELSE 130 160 ; : ; "Vilken sv}righetsgrad (1=sv}rast) "; : INPUT A9% 170 ; : ; "V{lj hur banan skall se ut :" : ; 180 ; "1 - Slumpvis hinder" 190 ; "2 - Inga hinder alls" 200 ; "3 - Full sk{rm" 210 ; "4 - Rita sj{lv" : ; "?"; 220 GET A$ : ONERRORGOTO 220 : \9%=VAL(A$) : IF \9%<1% OR \9%>4% 220 230 OUT 6%,0% : ; CHR$(12%) : FOR X%=1% TO 21% : ; CUR(X%,0%);CHR$(151%) : NEXT X% : RANDOMIZE 240 ; CUR(0%,15%)"@=OMSTART" 250 FOR X%=4% TO 36% : ; CUR(1%,X%)"" : ; CUR(20%,X%)"" : NEXT X% 260 FOR X%=1% TO 20% : ; CUR(X%,2%)"j" : ; CUR(X%,37%)"5" : NEXT X% 270 ON \9% GOTO 440,470,430,280 280 ; CUR(4%,5%)"F\RFLYTTA DIG MED W" 290 ; CUR(5%,5%)" A D" 300 ; CUR(6%,5%)" X" 310 ; CUR(8%,5%)"TRYCK R F\R RITA OCH S F\R SUDDA" 320 ; CUR(9,5%); : POKE 65013%,0% : GET A$ : FOR R%=4% TO 8% 330 ; CUR(R%,4%)" "; : NEXT R% 340 [8%=10% : [9%=12% 350 ; CUR([8%,[9%); : GET A$ : IF A$="R" [7%=1% ELSE IF A$="S" [7%=0% 360 IF [7% ; ""; ELSE ; " "; 370 IF A$="W" AND [8%>2% [8%=[8%-1% 380 IF A$="X" AND [8%<19% [8%=[8%+1% 390 IF A$="A" AND [9%>4% [9%=[9%-1% 400 IF A$="D" AND [9%<36% [9%=[9%+1% 410 IF A$<>CHR$(13%) 350 420 GOTO 470 430 FOR R%=2 TO 20 : ; CUR(R%,3%)STRING$(35%,127%); : NEXT R% : GOTO 470 440 IF A7% 460 ELSE ; : ; " Hur m}nga """" p} sk{rmen "; : ONERRORGOTO 440 : INPUT A7% 450 ; CUR(22%,0%)CHR$(23%)STRING$(39%,32%); 460 FOR X%=1% TO A7% : ; CUR(RND*17%+3%,RND*24%+9%)"" : NEXT X% 470 ; CUR(19%,4%)"(j" : ; CUR(19%,34%)"5$" 480 IF T%<2% THEN 500 490 ; CUR(0%,6%)"+" : T%=T%-2% 500 IF T%>0% THEN ; CUR(0%,34%)"+" 510 ; CUR(0%,2%)P% : ; CUR(0%,35%)P1% 520 X%=58% : Y%=9% : X1%=58% : Y1%=72% 530 X0%=0% : Y0%=0% : X2%=0% : Y2%=0% : Z0%=0% : Q0%=0% : Z2%=0% : Q2%=0% 540 Z%=X% : Q%=Y% : Z1%=X1% : Q1%=Y1% 550 T%=0% : FOR F%=1% TO A9% 560 IF 128% AND INP(56%) THEN D%=INP(56%) AND 127% ELSE D%=0% 570 IF D0%=D% THEN 820 ELSE D0%=D% 580 IF D%>96% AND D%<129% THEN D%=D%-32% 590 D%=INSTR(1%,"WXADSO.K\LQZECI,P-@",CHR$(D%)) 600 IF D%=0% THEN 820 610 ON D% GOTO 620,630,640,650,660,670,680,690,700,710,720,740,750,760,770,780,790,800,810 620 X0%=-1% : Y0%=0% : GOTO 830 630 X0%=1% : Y0%=0% : GOTO 830 640 X0%=0% : Y0%=-1% : GOTO 830 650 X0%=0% : Y0%=1% : GOTO 830 660 X0%=0% : Y0%=0% : IF A%=0% THEN 830 ELSE A%=A8%+10% : GOTO 830 670 X2%=-1% : Y2%=0% : GOTO 830 680 X2%=1% : Y2%=0% : GOTO 830 690 X2%=0% : Y2%=-1% : GOTO 830 700 X2%=0% : Y2%=1% : GOTO 830 710 X2%=0% : Y2%=0% : IF A1%=0% THEN 830 ELSE A1%=A8%+10% : GOTO 830 720 Z0%=-1% : Q0%=-1% : GOTO 830 730 GOTO 830 740 Z0%=1% : Q0%=-1% : GOTO 830 750 Z0%=-1% : Q0%=1% : GOTO 830 760 Z0%=1% : Q0%=1% : GOTO 830 770 Z2%=-1% : Q2%=-1% : GOTO 830 780 Z2%=1% : Q2%=-1% : GOTO 830 790 Z2%=-1% : Q2%=1% : GOTO 830 800 Z2%=1% : Q2%=1% : GOTO 830 810 GOTO 100 820 Q=PI 830 ; CUR(0,15)'@=OMSTART' : NEXT F% 840 L%=X% : M%=Y% : L1%=X1% : M1%=Y1% 850 X%=X%+X0% : Y%=Y%+Y0% : X1%=X1%+X2% : Y1%=Y1%+Y2% 860 IF NOT DOT(X%,Y%) THEN 870 : X%=L% : Y%=M% 870 CLRDOT L%,M% : SETDOT X%,Y% 880 IF NOT DOT(X1%,Y1%) THEN 890 : X1%=L1% : Y1%=M1% 890 CLRDOT L1%,M1% : SETDOT X1%,Y1% 900 IF Z0%=0% OR Q0%=0% THEN 970 : IF A%>0% THEN 920 910 Z%=X%+3%*Z0% : Q%=Y%+3%*Q0% : IF DOT(Z%,Q%) THEN 960 920 CLRDOT Z%,Q% : IF A%>A8% THEN 960 930 Z%=Z%+Z0% : Q%=Q%+Q0% : A%=A%+1% : OUT 6%,3% 940 IF DOT(Z%,Q%) THEN 960 950 SETDOT Z%,Q% : GOTO 970 960 X3%=Z% : Y3%=Q% : A%=0% : Z0%=0% : Q0%=0% : GOSUB 1050 970 IF Z2%=0% OR Q2%=0% THEN 1040 : IF A1%>0% THEN 990 980 Z1%=X1%+3%*Z2% : Q1%=Y1%+3%*Q2% : IF DOT(Z1%,Q1%) THEN 1030 990 CLRDOT Z1%,Q1% : IF A1%>A8% THEN 1030 1000 Z1%=Z1%+Z2% : Q1%=Q1%+Q2% : A1%=A1%+1% : OUT 6%,195% 1010 IF DOT(Z1%,Q1%) THEN 1030 1020 SETDOT Z1%,Q1% : GOTO 1040 1030 X3%=Z1% : Y3%=Q1% : GOSUB 1050 : A1%=0% : Z2%=0% : Q2%=0% 1040 IF T%>0% THEN 230 ELSE 550 1050 FOR F%=1% TO 2% 1060 FOR C%=-1% TO 1% : OUT 6%,75% : FOR B%=-2% TO 2% 1070 IF DOT(X3%+C%,Y3%+B%) THEN CLRDOT X3%+C%,Y3%+B% ELSE SETDOT X3%+C%,Y3%+B% 1080 NEXT B% : NEXT C% : FOR B%=-1% TO 1% 1090 IF DOT(X3%-2%,Y3%+B%) THEN CLRDOT X3%-2%,Y3%+B% ELSE SETDOT X3%-2%,Y3%+B% 1100 IF DOT(X3%+2%,Y3%+B%) THEN CLRDOT X3%+2%,Y3%+B% ELSE SETDOT X3%+2%,Y3%+B% 1110 NEXT B% : IF DOT(X%,Y%) THEN 1130 1120 T%=T%+1% : P1%=P1%+1% 1130 IF DOT(X1%,Y1%) THEN 1150 1140 T%=T%+2% : P%=P%+1% 1150 IF NOT DOT(Z%,Q%) AND A%>0% THEN A%=60% 1160 IF NOT DOT(Z1%,Q1%) AND A1%>0% THEN A1%=60% 1170 IF X3%<6 OR X3%>59 OR Y3%<8 OR Y3%>73 THEN 1200 1180 IF \9$="N" OR \9$="n" THEN 1200 1190 ; CUR(INT(X3%/3%),INT(Y3%/2%));" "; 1200 NEXT F% : OUT 6%,0% : IF P1%=10% OR P%=10% 1210 ELSE RETURN 1210 A$=" GAME OVER " : FOR N%=1% TO LEN(A$) : POKE 32181%+N%,ASC(MID$(A$,N%,1%))+128% : NEXT N% 1220 ; CUR(22%,5%); : GET A$ 1230 ; "Vill du spela igen ? "; : GET A$ : IF A$="J" OR A$="j" 100 ELSE CHAIN "MENY" 1240 ; CHR$(12%)TAB(14%)"DOGFIGHT" 1250 ; CHR$(23%)TAB(14%)"########" 1260 ; : ; " DOGFIGHT {r ett krigsspel som g}r ut p}"; 1270 ; "ni (tv} stycken) skall f|rs|ka skjuta" 1280 ; "ned varandra. Ni kan flytta om kring era"; 1290 ; "prickar (tanks?) vertikalt och horison- talt p} sk{rmen." 1300 ; : ; " Ni kan avlossa skott (missiler,robotar)"; 1310 ; "diagonalt fr}n er egen ""prick"". Med" 1320 ; "samma knappar som ni avlossar skotten" 1330 ; "med, kan ni ocks} styra dem diagonalt." 1340 ; : ; " Ni har dessutom en knapp som dels stan-"; 1350 ; "nar er prick, dels ""spr{nger"" skottet," 1360 ; "om du har n}got s}dant ute. Skottet" 1370 ; "spr{ngs dessutom automatiskt om det" 1380 ; "tr{ffar n}gonting (helst motst}ndaren)" 1390 ; "eller efter en viss utsatt tid." 1400 GOSUB 1560 1410 ; CHR$(12%)TAB(14%)"DOGFIGHT" 1420 ; CHR$(23%)TAB(14%)"########" 1430 ; : ; " Med dessa knappar styr ni och skjuter :" 1440 ; TAB(5%)"v{nster"TAB(27%)"h|ger" 1450 ; CHR$(23%)TAB(5%)"#######"TAB(27%)"#####" 1460 ; TAB(6%)"Q W E"TAB(27%)"I O P" 1470 ; TAB(6%)"A S D"TAB(27%)"K L \" 1480 ; TAB(6%)"Z X C"TAB(27%)", . -" 1490 ; : ; TAB(3%)"Som allts} betyder :" : ; : A$=" skott " 1500 ; TAB(8%)A$"upp"A$ 1510 ; : ; TAB(18%)"stopp" 1520 ; TAB(10%)"v{nster + h|ger" 1530 ; TAB(18%)"sm{ll" 1540 ; : ; TAB(8%)A$"ned"A$ 1550 GOSUB 1560 : GOTO 110 1560 ; : ; : ; TAB(10%)"Tryck "CHR$(23,8); 1570 GET A$ : IF A$<>CHR$(13) 1570 ELSE RETURN