home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine Extra: Supplement 2: Soundwriter / run-supplement-2.zip / HEXA.BAS < prev    next >
BASIC Source File  |  1991-07-12  |  6KB  |  156 lines

  1. 1000 REM HEXAPAWN DOOR NICO BAAIJENS
  2. 1010 COMMON MENUFL%:DIM B(19,9),M(19,4),S(9),P$(3)
  3. 1015 W=0:L=0:RANDOMIZE TIMER:KEY OFF:CLS:GOSUB 2330
  4. 1020 DEF FNR(X)=-3*(X=1)-(X=3)-4*(X=6)-6*(X=4)-7*(X=9)-9*(X=7)+FNS(X)
  5. 1030 DEF FNS(X)=-X*(X=2 OR X=5 OR X=8)
  6. 1040 DEF FNM(Y)=Y-INT(Y/10)*10
  7. 1050 P$=CHR$(179)+CHR$(32)+CHR$(219):GG=2
  8. 1060 FOR I=1 TO 19:FOR J=1 TO 9:READ B(I,J):NEXT J:NEXT I
  9. 1070 FOR I=1 TO 19:FOR J=1 TO 4:READ M(I,J):NEXT J:NEXT I
  10. 1080 X=0:Y=0:LOCATE 1,1:COLOR 13,0:PRINT STRING$(34,196);" HEXAPAWN ";STRING$(34,196):PRINT " U  - PC"
  11. 1090 S(4)=0:S(5)=0:S(6)=0
  12. 1100 S(1)=-1:S(2)=-1:S(3)=-1
  13. 1110 S(7)=1:S(8)=1:S(9)=1
  14. 1120 GOSUB 2250
  15. 1130 GOSUB 2460:LOCATE 4,33:COLOR 14,0:PRINT "U bent aan zet!";
  16. 1140 LOCATE 20,35:PRINT " Van veld: ";:GOSUB 2500:M1=VAL(I$)
  17. 1150 LOCATE 21,35:PRINT "Naar veld: ";:GOSUB 2500:M2=VAL(I$)
  18. 1160 GOSUB 2460
  19. 1170 IF M1=INT(M1) AND M2=INT(M2) AND M1>0 AND M1<10 AND M2>0 AND M2<10 THEN 1200
  20. 1180 PRINT "ILLEGAL COORDINATES"
  21. 1190 GOTO 1130
  22. 1200 IF S(M1)=1 THEN 1220
  23. 1210 LOCATE 20,35:BEEP:PRINT "Onmogelijk...":GOSUB 2480:GOTO 1130
  24. 1220 IF S(M2)=1 THEN 1210
  25. 1230 IF M2-M1<>-3 AND S(M2)<>-1 THEN 1210
  26. 1240 IF M2>M1 THEN 1210
  27. 1250 IF M2-M1=-3 AND (S(M2)<>0) THEN 1210
  28. 1260 IF M2-M1<-4 THEN 1210
  29. 1270 IF M1=7 AND M2=3 THEN 1210
  30. 1280 S(M1)=0
  31. 1290 S(M2)=1
  32. 1300 GOSUB 2250
  33. 1310 IF S(1)=1 OR S(2)=1 OR S(3)=1 THEN 2020
  34. 1320 FOR I=1 TO 9
  35. 1330 IF S(I)=-1 THEN 1360
  36. 1340 NEXT I
  37. 1350 GOTO 2020
  38. 1360 FOR I=1 TO 9
  39. 1370 IF S(I)<>-1 THEN 1460
  40. 1380 IF S(I+3)=0 THEN 1480
  41. 1390 IF FNR(I)=I THEN 1450
  42. 1400 IF I>3 THEN 1430
  43. 1410 IF S(5)=1 THEN 1480
  44. 1420 GOTO 1460
  45. 1430 IF S(8)=1 THEN 1480
  46. 1440 GOTO 1460
  47. 1450 IF S(I+2)=1 OR S(I+4)=1 THEN 1480
  48. 1460 NEXT I
  49. 1470 GOTO 2020
  50. 1480 FOR I=1 TO 19
  51. 1490 FOR J=1 TO 3
  52. 1500 FOR K=3 TO 1 STEP -1
  53. 1510 T((J-1)*3+K)=B(I,(J-1)*3+4-K)
  54. 1520 NEXT K
  55. 1530 NEXT J
  56. 1540 FOR J=1 TO 9
  57. 1550 IF S(J)<>B(I,J) THEN 1590
  58. 1560 NEXT J
  59. 1570 R=0
  60. 1580 GOTO 1670
  61. 1590 FOR J=1 TO 9
  62. 1600 IF S(J)<>T(J) THEN 1640
  63. 1610 NEXT J
  64. 1620 R=1
  65. 1630 GOTO 1670
  66. 1640 NEXT I
  67. 1650 PRINT "ILLEGAL BOARD PATTERN"
  68. 1660 STOP
  69. 1670 X=I
  70. 1680 FOR I=1 TO 4
  71. 1690 IF M(X,I)<>0 THEN 1730
  72. 1700 NEXT I
  73. 1710 LOCATE 19,35:PRINT "PC geeft op";
  74. 1720 GOTO 2020
  75. 1730 Y=INT(RND(1)*4+1)
  76. 1740 IF M(X,Y)=0 THEN 1730
  77. 1750 IF R<>0 THEN 1800
  78. 1760 LOCATE 4,33:PRINT " PC is aan zet ";
  79. 1770 S(INT(M(X,Y)/10))=0
  80. 1780 S(FNM(M(X,Y)))=-1
  81. 1790 GOTO 1830
  82. 1800 LOCATE 4,33:PRINT " PC is aan zet  "
  83. 1810 S(FNR(INT(M(X,Y)/10)))=0
  84. 1820 S(FNR(FNM(M(X,Y))))=-1
  85. 1830 GOSUB 2470:GOSUB 2250
  86. 1840 IF S(7)=-1 OR S(8)=-1 OR S(9)=-1 THEN 2070
  87. 1850 FOR I=1 TO 9
  88. 1860 IF S(I)=1 THEN 1890
  89. 1870 NEXT I
  90. 1880 GOTO 2070
  91. 1890 FOR I=1 TO 9
  92. 1900 IF S(I)<>1 THEN 1990
  93. 1910 IF S(I-3)=0 THEN 1130
  94. 1920 IF FNR(I)=I THEN 1980
  95. 1930 IF I<7 THEN 1960
  96. 1940 IF S(5)=-1 THEN 1130
  97. 1950 GOTO 1990
  98. 1960 IF S(2)=-1 THEN 1130
  99. 1970 GOTO 1990
  100. 1980 IF S(I-2)=-1 OR S(I-4)=-1 THEN 1130
  101. 1990 NEXT I
  102. 2000 GOSUB 2460:LOCATE 20,35:PRINT "Padstelling. PC wint";:GOSUB 2480
  103. 2010 W=W+1:GOTO 2050
  104. 2020 GOSUB 2460:LOCATE 20,35:PRINT "PC verliest...":GOSUB 2480
  105. 2030 M(X,Y)=0
  106. 2040 L=L+1
  107. 2050 GG=GG+1:LOCATE GG,1:PRINT L;" - "; W
  108. 2060 GOTO 1080
  109. 2070 GOSUB 2460:LOCATE 21,35:PRINT "PC wint...":GOSUB 2480:GOSUB 2470
  110. 2080 W=W+1
  111. 2090 GOTO 2050
  112. 2100 DATA -1,-1,-1,1,0,0,0,1,1,-1,-1,-1,0,1,0,1,0,1
  113. 2110 DATA -1,0,-1,-1,1,0,0,0,1,0,-1,-1,1,-1,0,0,0,1
  114. 2120 DATA -1,0,-1,1,1,0,0,1,0,-1,-1,0,1,0,1,0,0,1
  115. 2130 DATA 0,-1,-1,0,-1,1,1,0,0,0,-1,-1,-1,1,1,1,0,0
  116. 2140 DATA -1,0,-1,-1,0,1,0,1,0,0,-1,-1,0,1,0,0,0,1
  117. 2150 DATA 0,-1,-1,0,1,0,1,0,0,-1,0,-1,1,0,0,0,0,1
  118. 2160 DATA 0,0,-1,-1,-1,1,0,0,0,-1,0,0,1,1,1,0,0,0
  119. 2170 DATA 0,-1,0,-1,1,1,0,0,0,-1,0,0,-1,-1,1,0,0,0
  120. 2180 DATA 0,0,-1,-1,1,0,0,0,0,0,-1,0,1,-1,0,0,0,0
  121. 2190 DATA -1,0,0,-1,1,0,0,0,0
  122. 2200 DATA 24,25,36,0,14,15,36,0,15,35,36,47,36,58,59,0
  123. 2210 DATA 15,35,36,0,24,25,26,0,26,57,58,0
  124. 2220 DATA 26,35,0,0,47,48,0,0,35,36,0,0,35,36,0,0
  125. 2230 DATA 36,0,0,0,47,58,0,0,15,0,0,0
  126. 2240 DATA 26,47,0,0,47,58,0,0,35,36,47,0,28,58,0,0,15,47,0,0
  127. 2250 PRINT
  128. 2260 Q=4:FOR I=1 TO 3:Q=Q+4:COLOR 14,0
  129. 2270 FOR J=1 TO 3:LOCATE Q,19+J*10
  130. 2280 PRINT MID$(P$,S((I-1)*3+J)+2,1)
  131. 2290 NEXT J
  132. 2300 PRINT
  133. 2310 NEXT I
  134. 2320 RETURN
  135. 2330 COLOR 2,0:LOCATE 5,23:PRINT CHR$(218)STRING$(32,196)CHR$(183)
  136. 2340 FOR A%=1 TO 4
  137. 2350 LOCATE A%+5,23:PRINT CHR$(179)CHR$(32)STRING$(10,219)STRING$(10,32)STRING$(10,219)CHR$(32)CHR$(186):NEXT
  138. 2360 FOR A%=1 TO 4:LOCATE A%+9,23:PRINT CHR$(179)
  139. 2370 LOCATE A%+9,35:PRINT STRING$(10,219):LOCATE A%+9,56:PRINT CHR$(186):NEXT
  140. 2380 FOR A%=1 TO 4
  141. 2390 LOCATE A%+13,23:PRINT CHR$(179)CHR$(32)STRING$(10,219)STRING$(10,32)STRING$(10,219)CHR$(32)CHR$(186):NEXT
  142. 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
  143. 2410 LOCATE 6,35:PRINT "2":LOCATE 10,25:PRINT "4":LOCATE 10,45:PRINT "6":LOCATE 14,35:PRINT "8"
  144. 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%
  145. 2430 FOR A%=1 TO 2:FOR B%=1 TO 6:LOCATE A%+10,B%+36:PRINT CHR$(32):NEXT B%,A%
  146. 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%
  147. 2450 LOCATE 18,23:PRINT CHR$(212)STRING$(32,205)CHR$(188):COLOR 2,0:RETURN
  148. 2460 FOR A%=19 TO 21:LOCATE A%,30:PRINT STRING$(25,32):NEXT:RETURN
  149. 2470 SOUND 1000,1:FOR A%=1 TO 15000:NEXT A%:RETURN
  150. 2480 LOCATE 25,35:PRINT "Toets <Enter>";:WHILE INKEY$="":WEND
  151. 2490 LOCATE 25,35:PRINT STRING$(15,32);:RETURN
  152. 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
  153. 2501 IF I$=CHR$(27) THEN IF MENUFL% THEN CLS:GOTO 120 ELSE CLS:END
  154. 2510 PRINT I$:RETURN
  155. 20000 REM EINDE HEXA
  156.