home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
RUN Flagazine Extra: Supplement 2: Soundwriter
/
run-supplement-2.zip
/
HEXA.BAS
< prev
next >
Wrap
BASIC Source File
|
1991-07-12
|
6KB
|
156 lines
1000 REM HEXAPAWN DOOR NICO BAAIJENS
1010 COMMON MENUFL%:DIM B(19,9),M(19,4),S(9),P$(3)
1015 W=0:L=0:RANDOMIZE TIMER:KEY OFF:CLS:GOSUB 2330
1020 DEF FNR(X)=-3*(X=1)-(X=3)-4*(X=6)-6*(X=4)-7*(X=9)-9*(X=7)+FNS(X)
1030 DEF FNS(X)=-X*(X=2 OR X=5 OR X=8)
1040 DEF FNM(Y)=Y-INT(Y/10)*10
1050 P$=CHR$(179)+CHR$(32)+CHR$(219):GG=2
1060 FOR I=1 TO 19:FOR J=1 TO 9:READ B(I,J):NEXT J:NEXT I
1070 FOR I=1 TO 19:FOR J=1 TO 4:READ M(I,J):NEXT J:NEXT I
1080 X=0:Y=0:LOCATE 1,1:COLOR 13,0:PRINT STRING$(34,196);" HEXAPAWN ";STRING$(34,196):PRINT " U - PC"
1090 S(4)=0:S(5)=0:S(6)=0
1100 S(1)=-1:S(2)=-1:S(3)=-1
1110 S(7)=1:S(8)=1:S(9)=1
1120 GOSUB 2250
1130 GOSUB 2460:LOCATE 4,33:COLOR 14,0:PRINT "U bent aan zet!";
1140 LOCATE 20,35:PRINT " Van veld: ";:GOSUB 2500:M1=VAL(I$)
1150 LOCATE 21,35:PRINT "Naar veld: ";:GOSUB 2500:M2=VAL(I$)
1160 GOSUB 2460
1170 IF M1=INT(M1) AND M2=INT(M2) AND M1>0 AND M1<10 AND M2>0 AND M2<10 THEN 1200
1180 PRINT "ILLEGAL COORDINATES"
1190 GOTO 1130
1200 IF S(M1)=1 THEN 1220
1210 LOCATE 20,35:BEEP:PRINT "Onmogelijk...":GOSUB 2480:GOTO 1130
1220 IF S(M2)=1 THEN 1210
1230 IF M2-M1<>-3 AND S(M2)<>-1 THEN 1210
1240 IF M2>M1 THEN 1210
1250 IF M2-M1=-3 AND (S(M2)<>0) THEN 1210
1260 IF M2-M1<-4 THEN 1210
1270 IF M1=7 AND M2=3 THEN 1210
1280 S(M1)=0
1290 S(M2)=1
1300 GOSUB 2250
1310 IF S(1)=1 OR S(2)=1 OR S(3)=1 THEN 2020
1320 FOR I=1 TO 9
1330 IF S(I)=-1 THEN 1360
1340 NEXT I
1350 GOTO 2020
1360 FOR I=1 TO 9
1370 IF S(I)<>-1 THEN 1460
1380 IF S(I+3)=0 THEN 1480
1390 IF FNR(I)=I THEN 1450
1400 IF I>3 THEN 1430
1410 IF S(5)=1 THEN 1480
1420 GOTO 1460
1430 IF S(8)=1 THEN 1480
1440 GOTO 1460
1450 IF S(I+2)=1 OR S(I+4)=1 THEN 1480
1460 NEXT I
1470 GOTO 2020
1480 FOR I=1 TO 19
1490 FOR J=1 TO 3
1500 FOR K=3 TO 1 STEP -1
1510 T((J-1)*3+K)=B(I,(J-1)*3+4-K)
1520 NEXT K
1530 NEXT J
1540 FOR J=1 TO 9
1550 IF S(J)<>B(I,J) THEN 1590
1560 NEXT J
1570 R=0
1580 GOTO 1670
1590 FOR J=1 TO 9
1600 IF S(J)<>T(J) THEN 1640
1610 NEXT J
1620 R=1
1630 GOTO 1670
1640 NEXT I
1650 PRINT "ILLEGAL BOARD PATTERN"
1660 STOP
1670 X=I
1680 FOR I=1 TO 4
1690 IF M(X,I)<>0 THEN 1730
1700 NEXT I
1710 LOCATE 19,35:PRINT "PC geeft op";
1720 GOTO 2020
1730 Y=INT(RND(1)*4+1)
1740 IF M(X,Y)=0 THEN 1730
1750 IF R<>0 THEN 1800
1760 LOCATE 4,33:PRINT " PC is aan zet ";
1770 S(INT(M(X,Y)/10))=0
1780 S(FNM(M(X,Y)))=-1
1790 GOTO 1830
1800 LOCATE 4,33:PRINT " PC is aan zet "
1810 S(FNR(INT(M(X,Y)/10)))=0
1820 S(FNR(FNM(M(X,Y))))=-1
1830 GOSUB 2470:GOSUB 2250
1840 IF S(7)=-1 OR S(8)=-1 OR S(9)=-1 THEN 2070
1850 FOR I=1 TO 9
1860 IF S(I)=1 THEN 1890
1870 NEXT I
1880 GOTO 2070
1890 FOR I=1 TO 9
1900 IF S(I)<>1 THEN 1990
1910 IF S(I-3)=0 THEN 1130
1920 IF FNR(I)=I THEN 1980
1930 IF I<7 THEN 1960
1940 IF S(5)=-1 THEN 1130
1950 GOTO 1990
1960 IF S(2)=-1 THEN 1130
1970 GOTO 1990
1980 IF S(I-2)=-1 OR S(I-4)=-1 THEN 1130
1990 NEXT I
2000 GOSUB 2460:LOCATE 20,35:PRINT "Padstelling. PC wint";:GOSUB 2480
2010 W=W+1:GOTO 2050
2020 GOSUB 2460:LOCATE 20,35:PRINT "PC verliest...":GOSUB 2480
2030 M(X,Y)=0
2040 L=L+1
2050 GG=GG+1:LOCATE GG,1:PRINT L;" - "; W
2060 GOTO 1080
2070 GOSUB 2460:LOCATE 21,35:PRINT "PC wint...":GOSUB 2480:GOSUB 2470
2080 W=W+1
2090 GOTO 2050
2100 DATA -1,-1,-1,1,0,0,0,1,1,-1,-1,-1,0,1,0,1,0,1
2110 DATA -1,0,-1,-1,1,0,0,0,1,0,-1,-1,1,-1,0,0,0,1
2120 DATA -1,0,-1,1,1,0,0,1,0,-1,-1,0,1,0,1,0,0,1
2130 DATA 0,-1,-1,0,-1,1,1,0,0,0,-1,-1,-1,1,1,1,0,0
2140 DATA -1,0,-1,-1,0,1,0,1,0,0,-1,-1,0,1,0,0,0,1
2150 DATA 0,-1,-1,0,1,0,1,0,0,-1,0,-1,1,0,0,0,0,1
2160 DATA 0,0,-1,-1,-1,1,0,0,0,-1,0,0,1,1,1,0,0,0
2170 DATA 0,-1,0,-1,1,1,0,0,0,-1,0,0,-1,-1,1,0,0,0
2180 DATA 0,0,-1,-1,1,0,0,0,0,0,-1,0,1,-1,0,0,0,0
2190 DATA -1,0,0,-1,1,0,0,0,0
2200 DATA 24,25,36,0,14,15,36,0,15,35,36,47,36,58,59,0
2210 DATA 15,35,36,0,24,25,26,0,26,57,58,0
2220 DATA 26,35,0,0,47,48,0,0,35,36,0,0,35,36,0,0
2230 DATA 36,0,0,0,47,58,0,0,15,0,0,0
2240 DATA 26,47,0,0,47,58,0,0,35,36,47,0,28,58,0,0,15,47,0,0
2250 PRINT
2260 Q=4:FOR I=1 TO 3:Q=Q+4:COLOR 14,0
2270 FOR J=1 TO 3:LOCATE Q,19+J*10
2280 PRINT MID$(P$,S((I-1)*3+J)+2,1)
2290 NEXT J
2300 PRINT
2310 NEXT I
2320 RETURN
2330 COLOR 2,0:LOCATE 5,23:PRINT CHR$(218)STRING$(32,196)CHR$(183)
2340 FOR A%=1 TO 4
2350 LOCATE A%+5,23:PRINT CHR$(179)CHR$(32)STRING$(10,219)STRING$(10,32)STRING$(10,219)CHR$(32)CHR$(186):NEXT
2360 FOR A%=1 TO 4:LOCATE A%+9,23:PRINT CHR$(179)
2370 LOCATE A%+9,35:PRINT STRING$(10,219):LOCATE A%+9,56:PRINT CHR$(186):NEXT
2380 FOR A%=1 TO 4
2390 LOCATE A%+13,23:PRINT CHR$(179)CHR$(32)STRING$(10,219)STRING$(10,32)STRING$(10,219)CHR$(32)CHR$(186):NEXT
2400 COLOR 0,10:LOCATE 6,25:PRINT "1":LOCATE 6,45:PRINT "3":LOCATE 10,35:PRINT "5":LOCATE 14,25:PRINT "7":LOCATE 14,45:PRINT "9":COLOR 2,0
2410 LOCATE 6,35:PRINT "2":LOCATE 10,25:PRINT "4":LOCATE 10,45:PRINT "6":LOCATE 14,35:PRINT "8"
2420 FOR A%=1 TO 2:FOR B%=1 TO 6:LOCATE A%+6,B%+26:PRINT CHR$(32):LOCATE A%+6,B%+46:PRINT CHR$(32):NEXT B%,A%
2430 FOR A%=1 TO 2:FOR B%=1 TO 6:LOCATE A%+10,B%+36:PRINT CHR$(32):NEXT B%,A%
2440 FOR A%=1 TO 2:FOR B%=1 TO 6:LOCATE A%+14,B%+26:PRINT CHR$(32):LOCATE A%+14,B%+46:PRINT CHR$(32):NEXT B%,A%
2450 LOCATE 18,23:PRINT CHR$(212)STRING$(32,205)CHR$(188):COLOR 2,0:RETURN
2460 FOR A%=19 TO 21:LOCATE A%,30:PRINT STRING$(25,32):NEXT:RETURN
2470 SOUND 1000,1:FOR A%=1 TO 15000:NEXT A%:RETURN
2480 LOCATE 25,35:PRINT "Toets <Enter>";:WHILE INKEY$="":WEND
2490 LOCATE 25,35:PRINT STRING$(15,32);:RETURN
2500 I$=INKEY$:IF I$<>"1" AND I$<>"2" AND I$<>"3" AND I$<>"4" AND I$<>"5" AND I$<>"6" AND I$<>"7" AND I$<>"8" AND I$<>"9" AND I$<>CHR$(27) THEN 2500
2501 IF I$=CHR$(27) THEN IF MENUFL% THEN CLS:GOTO 120 ELSE CLS:END
2510 PRINT I$:RETURN
20000 REM EINDE HEXA