10 ! POLCAR.BAC 20 ! Ett Spel program av Magnus <8042> 1990 30 ! Programet anv{nder HRLOAD 40 ! 50 ! Om varibeln "Start" (rad 400) {ndras till 120 fungerar det med 512 kB 60 ! [ndrat till "GRED" etc f|r att fungera {ven med monokrom sk{rm, 70 ! "CHAIN 'MENY'" bort vid avslut <7759> 80 ! 90 ON ERROR GOTO 960 100 INTEGER : EXTEND 105 ATTRIBUTE 1 110 ; CHR$(12) 120 S=0 130 RANDOMIZE 140 ! Police car av magnus 1990-12-07 150 ; CUR(5,20) EL CYA;"POLICE CAR" 160 ; TAB(20) " Spel av Magnus !!!" : ; CUR(11,0);"" 170 ; TAB(20) "Du ska f|rs|ka k|ra p} den andra bilen" 180 ; TAB(20) "utan att k|ra av v{gen." 190 ; TAB(20) "Du styr din bil med siffertangenterna:" 200 ; TAB(20) "8 (upp) 2 (ner) 6 (H|ger) 4 (V{nster)." 210 ; CHR$(10,10) TAB(20) "Tryck tangent f|r att starta "; : GET A$ : ; CHR$(12) 220 POKE 64256,243,213,197,245,229,123,6,192,203,255,14,52,237,121,225,241 230 POKE 64272,193,209,251,201,0,0,0,0,243,213,197,245,229,123,6,192 240 POKE 64288,203,191,14,52,237,121,225,241,193,209,251,201 250 DEF FNInblk(Addr) 260 Z=CALL(64256,Addr) 270 RETURN True 280 FNEND 290 DEF FNUtblk(Addr) 300 Z=CALL(64280,Addr) 310 RETURN True 320 FNEND 330 DIM Graf$=0 340 POKE VAROOT(Graf$),4096,SWAP%(4096),49152,SWAP%(49152),4096,SWAP%(4096) 350 ! Skapa fil 360 FGPICTURE 0,0,4 370 FGCTL BLK+GRED+GGRN+GWHT 380 FGPOINT 0,0,0 : FGFILL 511,239 390 OPEN 'POLCAR.PIC' AS FILE 1 ! Bytt namn fr}n "BILD1.PIC" 400 Start=24 410 FOR X=Start+7 TO Start STEP -1 420 Z=FNInblk(X) 430 GET #1,Graf$ COUNT 4096 440 Z=FNUtblk(X) 450 NEXT X 460 ! ----------------------------------------------- 470 FGCTL BLK+GRED+GGRN+GWHT 480 ; CHR$(12) 490 X=225 : Y=50 : Ax=0 : Ay=1 : Av=1 500 X1=30 : Y1=140 : Bv=2 : Bx=1 : By=0 510 IF SYS(5)<>0 THEN 830 520 X1=X1+Bx : Y1=Y1+By 530 GOSUB 1000 540 X=X+Ax : Y=Y+Ay 550 GOSUB 1570 560 IF Av=2 THEN GOSUB 610 ELSE GOSUB 660 570 IF Av=2 THEN 720 580 FGPOINT X,Y+1,3 : FGPOINT X+1,Y+1 : FGPOINT X,Y-1 : FGPOINT X+1,Y-1 590 FGPOINT X,Y,1 : FGPOINT X+1,Y 600 GOTO 750 610 F=FGPOINT(X-2,Y) : IF F<>0 THEN 900 620 F=FGPOINT(X,Y) : IF F<>0 THEN 900 630 F=FGPOINT(X+1,Y) : IF F<>0 THEN 900 640 F=FGPOINT(X+3,Y) : IF F<>0 THEN 900 650 RETURN 660 F=FGPOINT(X,Y+1) : IF F<>0 THEN 900 670 F=FGPOINT(X+1,Y+1) : IF F<>0 THEN 900 680 F=FGPOINT(X,Y-1) : IF F<>0 THEN 900 690 F=FGPOINT(X+1,Y-1) : IF F<>0 THEN 900 700 F=FGPOINT(X,Y) : IF F<>0 THEN 900 710 RETURN 720 FGPOINT X-2,Y,3 : FGLINE X+3,Y 730 FGPOINT X,Y,1 : FGPOINT X+1,Y 740 GOTO 750 750 IF Av=2 THEN FGPOINT X-2,Y,0 : FGLINE X+3,Y : GOTO 780 760 FGPOINT X,Y+1,0 : FGLINE X,Y-1 770 FGPOINT X+1,Y+1 : FGLINE X+1,Y-1 780 IF Bv=2 THEN FGPOINT X1-2,Y1 : FGLINE X1+3,Y1 : GOTO 510 790 FGPOINT X1,Y1+1 : FGLINE X1,Y1-1 800 FGPOINT X1+1,Y1+1 : FGLINE X1+1,Y1-1 810 GOTO 510 820 ! vilke tangent 830 GET A$ 840 IF A$="4" THEN Ax=-1 : Ay=0 : Av=2 850 IF A$="6" THEN Ax=1 : Ay=0 : Av=2 860 IF A$="8" THEN Ay=1 : Ax=0 : Av=1 870 IF A$="2" THEN Ay=-1 : Ax=0 : Av=1 880 IF A$="5" THEN Ax=0 : Ay=0 890 GOTO 510 900 FOR A=0 TO 20 : OUT 34,9 : NEXT A 910 IF F<>2 THEN 970 920 ; CUR(9,10);EL;RED;"Du k|rde av v{gen ! !" 930 ; CYA "Du klarade ";S;" stycken bilar." 940 FGCTL BLK : INPUT "Vill du spela en g}ng till j/n ";A$ 950 IF A$="j" THEN S=0 : GOTO 470 960 END 970 ; CUR(9,10);EL;BLU;"Du k|rde in i bilen ! " 980 FGPOINT X1-5,Y1-3,0 : FGFILL X1+5,Y1+3 : S=S+1 : GOTO 480 990 ! --------------------------------------- 1000 ! Styr Program till andra bilen. 1010 IF Bx=-1 THEN 1070 1020 IF Bx=1 THEN 1230 1030 IF By=1 THEN 1350 1040 IF By=-1 THEN 1460 1050 RETURN 1060 ! --------------------------------- 1070 IF X1=30 THEN IF Y1=210 THEN Bx=0 : By=-1 : Bv=1 : RETURN 1080 IF X1=30 THEN IF Y1=15 THEN Bx=0 : By=1 : Bv=1 : RETURN 1090 IF X1>30 THEN 1120 1100 R=INT(RND*2) : IF R=1 THEN Bx=0 : By=-1 : Bv=1 ELSE Bx=0 : By=1 : Bv=1 1110 RETURN 1120 IF X1=400 THEN 1170 1130 IF X1=320 THEN 1170 1140 IF X1=230 THEN 1170 1150 IF X1=140 THEN 1170 1160 RETURN 1170 R=INT(RND*3) : IF R=1 THEN RETURN 1180 IF Y1<20 THEN 1210 1190 IF R=2 THEN Bx=0 : By=-1 : Bv=1 : RETURN 1200 IF Y1>200 THEN 1170 1210 IF R=0 THEN Bx=0 : By=1 : Bv=1 : RETURN 1220 GOTO 1170 1230 IF X1=400 THEN IF Y1=15 THEN Bx=0 : By=1 : Bv=1 : RETURN 1240 IF X1=400 THEN IF Y1=210 THEN Bx=0 : By=-1 : Bv=1 : RETURN 1250 IF Y1=210 THEN 1280 1260 IF X1<400 THEN 1120 1270 R=INT(RND*2) : IF R=1 THEN Bx=0 : By=-1 : Bv=1 : RETURN ELSE Bx=0 : By=1 : Bv=1 : RETURN 1280 IF X1=140 THEN 1320 1290 IF X1=230 THEN 1320 1300 IF X1=320 THEN 1320 1310 RETURN 1320 R=INT(RND*2) : IF R=0 THEN RETURN 1330 Bx=0 : By=-1 : Bv=1 : RETURN 1340 ! --------------------------------------- 1350 IF X1=30 THEN IF Y1=210 THEN Bx=1 : By=0 : Bv=2 : RETURN 1360 IF X1=400 THEN IF Y1=210 THEN Bx=-1 : By=0 : Bv=2 : RETURN 1370 IF Y1=210 THEN 1440 1380 IF Y1=70 THEN 1410 1390 IF Y1=140 THEN 1410 1400 RETURN 1410 R=INT(RND*3) : IF R=0 THEN RETURN 1420 IF R=1 THEN Bx=1 : By=0 : Bv=2 : RETURN 1430 IF R=2 THEN Bx=-1 : By=0 : Bv=2 : RETURN 1440 R=INT(RND*2) : IF R=0 THEN Bx=1 : By=0 : Bv=2 : RETURN 1450 IF R=1 THEN Bx=-1 : By=0 : Bv=2 : RETURN ELSE 1440 1460 IF X1<32 THEN IF Y1=15 THEN Bx=1 : By=0 : Bv=2 : RETURN 1470 IF X1>390 THEN IF Y1=15 THEN Bx=-1 : By=0 : Bv=2 : RETURN 1480 IF Y1=15 THEN 1490 ELSE 1370 1490 IF X1=140 THEN 1530 1500 IF X1=230 THEN 1530 1510 IF X1=320 THEN 1530 1520 RETURN 1530 R=INT(RND*2) : IF R=0 THEN Bx=1 : By=0 : Bv=2 : RETURN 1540 IF R=1 THEN Bx=-1 : By=0 : Bv=2 : RETURN 1550 GOTO 1530 1560 ! ---------------------------- Program at rita den andra bilen 1570 IF Bv=2 THEN 1610 1580 FGPOINT X1,Y1-1,3 : FGLINE X1,Y1+1 1590 FGPOINT X1+1,Y1-1 : FGLINE X1+1,Y1+1 1600 RETURN 1610 FGPOINT X1-2,Y1,3 : FGLINE X1+3,Y1 1620 RETURN