5 INTEGER : EXTEND 10 Min=30 20 Flytt=3 30 RANDOMIZE 40 DIM X(400),Y(400) 50 FGCTL BLK+BLK+BLK+BLK 60 FGPOINT 0,0,0 : FGFILL 511,239,0 80 ; CHR$(12) 90 Z=FNStart 100 IF Res$="h" OR Res$="H" THEN 130 110 FGCTL BLK+RED+GRN+WHT+YEL+MAG+CYA+BLU 120 GOTO 140 130 FGCTL BLK+RED+GRN+WHT 140 FGPOINT 0,220 : FGFILL 220,0,3 150 FOR Yr=0 TO 220 STEP 10 160 FGPOINT 220,Yr,1 : FGLINE 0,Yr,1 170 NEXT Yr 180 FOR Xr=0 TO 220 STEP 10 190 FGPOINT Xr,220,1 : FGLINE Xr,0,1 200 NEXT Xr 210 Xm=0 : Ym=220 220 FGPAINT Xm+1,Ym-1,2 230 FOR R=1 TO Min 240 ; CUR(1,1) "Wait a minute or two, Mines: " R 250 Y(R)=INT(RND*22)+1 260 X(R)=INT(RND*22)+0 270 Y(R)=Y(R)*10 : X(R)=X(R)*10 280 IF R=1 THEN 320 290 FOR J=1 TO R-1 300 IF Y(R)=Y(J) AND X(R)=X(J) THEN 250 310 NEXT J 320 NEXT R 330 ; CUR(1,1) "Mines: " Min " " 340 GET P$ 350 FGPAINT Xm+1,Ym-1,Flytt 360 IF P$=Up$ THEN Ym=Ym+10 370 IF P$=Dow$ THEN Ym=Ym-10 380 IF P$=Lef$ THEN Xm=Xm-10 390 IF P$=Rig$ THEN Xm=Xm+10 400 IF Xm<0 THEN Xm=0 410 IF Xm>210 THEN Xm=210 420 IF Ym<10 THEN Ym=10 430 IF Ym>220 THEN Ym=220 440 IF P$=Ser$ THEN Z=FNReturn 450 IF Xo=1 THEN Xo=0 : GOTO 100 460 Flytt=FGPOINT(Xm+1,Ym-1) 470 FGPAINT Xm+1,Ym-1,2 480 GOTO 340 490 DEF FNReturn 500 IF FGPOINT(Xm+6,Ym-8)=3 AND FGPOINT(Xm+4,Ym-8)=3 THEN Rutor=Rutor+1 510 FOR R=1 TO Min 520 IF Xm=X(R) AND Ym=Y(R) THEN Z=FND|d 530 NEXT R 540 Q=0 550 FOR R=1 TO Min 560 IF X(R)=Xm+10 AND Y(R)=Ym THEN Q=Q+1 570 IF X(R)=Xm+10 AND Y(R)=Ym-10 THEN Q=Q+1 580 IF X(R)=Xm+10 AND Y(R)=Ym+10 THEN Q=Q+1 590 IF X(R)=Xm-10 AND Y(R)=Ym THEN Q=Q+1 600 IF X(R)=Xm-10 AND Y(R)=Ym-10 THEN Q=Q+1 610 IF X(R)=Xm-10 AND Y(R)=Ym+10 THEN Q=Q+1 620 IF X(R)=Xm AND Y(R)=Ym-10 THEN Q=Q+1 630 IF X(R)=Xm AND Y(R)=Ym+10 THEN Q=Q+1 640 NEXT R 650 Z=FNSiffra 660 IF Rutor=484-Min THEN Z=FNKlar 670 RETURN 0 680 FNEND 690 DEF FND|d 700 S=2 : Z=FNShow 710 FGCTL BLK+BLK+BLK+BLK 720 FGPOINT 0,0,0 : FGFILL 511,239 730 ; CUR(1,1) " " 740 ; CUR(5,20) EL DBLE RED "G A M E O V E R !" 750 ; CUR(8,30) WHT "Thanks for playing MINES!" 760 ; CUR(10,28) "Do you want to play again? Y/N: "; : GET Z$ 770 IF Z$="Y" OR Z$="y" THEN CHAIN "MINES.bac" 780 IF Z$="n" OR Z$="N" THEN ; CHR$(12) : CHAIN "NULL:" 790 GOTO 760 800 END 810 RETURN 0 820 FNEND 830 DEF FNSiffra 840 IF Q=1 THEN FGPOINT Xm+4,Ym-3,1 : FGPOINT Xm+5,Ym-2 : FGLINE Xm+5,Ym-8,1 : FGPOINT Xm+4,Ym-8,1 : FGPOINT Xm+6,Ym-8,1 850 IF Q=2 THEN 860 ELSE 880 860 FGPOINT Xm+3,Ym-3,1 : FGPOINT Xm+4,Ym-2,1 : FGLINE Xm+6,Ym-2,1 : FGPOINT Xm+7,Ym-3,1 : FGPOINT Xm+7,Ym-4,1 : FGPOINT Xm+6,Ym-5,1 : FGPOINT Xm+5,Ym-5,1 870 FGLINE Xm+3,Ym-7,1 : FGPOINT Xm+3,Ym-8,1 : FGLINE Xm+7,Ym-8,1 880 IF Q=3 THEN 890 ELSE 910 890 FGPOINT Xm+3,Ym-2,1 : FGLINE Xm+7,Ym-2,1 : FGPOINT Xm+7,Ym-3 : FGLINE Xm+5,Ym-5,1 : FGPOINT Xm+6,Ym-5,1 : FGPOINT Xm+7,Ym-6,1 : FGPOINT Xm+7,Ym-7,1 900 FGPOINT Xm+3,Ym-7,1 : FGPOINT Xm+4,Ym-8 : FGLINE Xm+6,Ym-8,1 910 IF Q=4 THEN FGPOINT Xm+6,Ym-8 : FGLINE Xm+6,Ym-2,1 : FGLINE Xm+3,Ym-5,1 : FGPOINT Xm+3,Ym-6 : FGLINE Xm+7,Ym-6,1 920 IF Q=5 THEN 930 ELSE 950 930 FGPOINT Xm+7,Ym-2 : FGLINE Xm+3,Ym-2,1 : FGLINE Xm+3,Ym-4,1 : FGLINE Xm+6,Ym-4,1 : FGPOINT Xm+7,Ym-5 : FGLINE Xm+7,Ym-7,1 : FGPOINT Xm+6,Ym-8 940 FGLINE Xm+4,Ym-8,1 : FGPOINT Xm+3,Ym-7,1 950 IF Q=6 THEN 960 ELSE 980 960 FGPOINT Xm+7,Ym-2 : FGLINE Xm+5,Ym-2,1 : FGLINE Xm+3,Ym-4,1 : FGLINE Xm+3,Ym-7,1 : FGPOINT Xm+4,Ym-5 : FGLINE Xm+6,Ym-5,1 : FGPOINT Xm+4,Ym-8 970 FGLINE Xm+6,Ym-8,1 : FGPOINT Xm+7,Ym-6,1 : FGPOINT Xm+7,Ym-7,1 980 IF Q=7 THEN FGPOINT Xm+3,Ym-2 : FGLINE Xm+7,Ym-2,1 : FGPOINT Xm+7,Ym-3 : FGLINE Xm+4,Ym-6,1 : FGLINE Xm+4,Ym-8,1 990 IF Q=8 THEN 1000 ELSE 1020 1000 FGPOINT Xm+4,Ym-2 : FGLINE Xm+6,Ym-2,1 : FGPOINT Xm+7,Ym-3,1 : FGPOINT Xm+7,Ym-4,1 : FGPOINT Xm+3,Ym-3,1 : FGPOINT Xm+3,Ym-4,1 : FGPOINT Xm+4,Ym-5 1010 FGLINE Xm+6,Ym-5,1 : FGPOINT Xm+7,Ym-6,1 : FGPOINT Xm+7,Ym-7,1 : FGPOINT Xm+3,Ym-6,1 : FGPOINT Xm+3,Ym-7,1 : FGPOINT Xm+4,Ym-8 : FGLINE Xm+6,Ym-8,1 1020 IF Q=0 THEN FGPOINT Xm+2,Ym-2,0 : FGFILL Xm+8,Ym-8,0 1030 RETURN 0 1040 FNEND 1050 DEF FNStart 1060 ; CUR(5,20) RED EL DBLE "M " GRN "I " BLU "N " YEL "E " WHT "S" 1070 ; CUR(10,23) EL "Programmed by:" 1080 ; CUR(12,3) EL RED FLSH "Jonas Hallerby & Nicklas Cederholm" 1090 ; CUR(16,26) BLU EL "1993-08-16" 1100 ; CUR(23,23) EL WHT "Push space !"; : GET Push$ 1110 IF Push$=" " THEN 1130 ELSE 1100 1120 ; CHR$(12) 1130 ; CHR$(12) 1140 INPUT "High or Low resolution H/L: "Res$ 1150 IF Res$="H" OR Res$="h" OR Res$="l" OR Res$="L" THEN 1160 ELSE ; CHR$(12) : GOTO 1140 1160 ON ERROR GOTO 1180 1170 GOTO 1200 1180 ; CUR(2,0); 1190 RESUME 1160 1200 INPUT "Number of mines 10-400: "Min 1210 IF Min>400 THEN Min=400 1220 IF Min<10 THEN Min=10 1230 ; "Left button: "; : GET Lef$ 1240 ; 1250 IF Lef$=CHR$(13) THEN Lef$="4" 1260 ; "Right button: "; : GET Rig$ 1270 ; 1280 IF Rig$=CHR$(13) THEN Rig$="6" 1290 ; "Up button: "; : GET Up$ 1300 ; 1310 IF Up$=CHR$(13) THEN Up$="8" 1320 ; "Down button: "; : GET Dow$ 1330 ; 1340 IF Dow$=CHR$(13) THEN Dow$="2" 1350 ; "Search-button: "; : GET Ser$ 1360 ; 1370 ; CHR$(12) 1380 ; "Right button: " Rig$ 1390 ; "Left button: " Lef$ 1400 ; "Up button: " Up$ 1410 ; "Down button: " Dow$ 1420 IF Ser$=CHR$(13) THEN Se$="Return" : GOTO 1440 1430 IF Ser$=" " THEN Se$="Space" ELSE Se$=Ser$ 1440 REM 1450 ; "Search-button: " Se$ 1460 ; : ; "Is this correct? Y/N: "; : GET H$ 1470 IF H$="N" OR H$="n" THEN ; CHR$(12) : GOTO 1230 1480 ; CHR$(12) 1490 ; CUR(24,1) "MINES Programed by Jonas Hallerby & Nicklas Cederholm 1993-08-16" 1500 RETURN 0 1510 FNEND 1520 DEF FNKlar 1530 S=1 1540 Z=FNShow 1550 RETURN 0 1560 FNEND 1570 DEF FNShow 1580 FOR W=1 TO Min 1590 FGPOINT X(W)+3,Y(W)-3,1 : FGPOINT X(W)+7,Y(W)-3,1 : FGPOINT X(W)+3,Y(W)-7,1 : FGPOINT X(W)+7,Y(W)-7,1 : FGPOINT X(W)+4,Y(W)-4 : FGFILL X(W)+6,Y(W)-6,1 1600 NEXT W 1610 FOR G=1 TO 10000 1620 NEXT G 1630 IF S=2 THEN 1690 1640 IF S=1 THEN FGCTL BLK+BLK+BLK+BLK : FGPOINT 0,0,0 : FGFILL 511,239,0 1650 ; CUR(5,20) "Play again? Y/N: "; : GET R$ 1660 IF R$="Y" OR R$="y" THEN CHAIN "mines.bac" 1670 IF R$="n" OR R$="N" THEN ; CHR$(12) : CHAIN "NULL:" 1680 GOTO 1650 1690 RETURN 0 1700 FNEND