home *** CD-ROM | disk | FTP | other *** search
/ AppleDisk 1 / AppleDisk_001.dsk / COMBAT!.bas < prev    next >
Encoding:
BASIC Source File  |  1986-01-01  |  21.2 KB  |  415 lines

  1. 10  REM   **********************
  2. 20  REM   *       COMBAT!      *
  3. 30  REM   *     DI RUDY GUY    *
  4. 40  REM   * (C)1986 EDITRONICA *
  5. 60  REM   *    E MICROSPARC    *
  6. 70  REM   **********************
  7. 80  HOME : VTAB 10: HTAB 16: INVERSE : PRINT "COMBAT!";: VTAB 12: HTAB 14: NORMAL : PRINT "DI RUDY GUY": VTAB 14: HTAB 1: PRINT "* (C) 1986 EDITRONICA E MICROSPARC *"
  8. 90  IF  PEEK(104) < >64  THEN  POKE 104,64: POKE 103,1: POKE 16384,0: PRINT  CHR$(4)"RUN COMBAT!"
  9. 100  PRINT  CHR$(4)"BLOAD TANK.SHAPES,A$803": POKE 232,3: POKE 233,8: ROT= 0: SCALE= 1
  10. 110  GOSUB 3660: REM    INIZIALIZZA ROUTINE SONORA
  11. 120  DIM A$(16,18): TEXT : HOME : HTAB 1: VTAB 22:M$ = "COMBAT! DI RUDY GUY": GOSUB 3650: VTAB 23:M$ = "* (C) 1986 EDITRONICA E MICROSPARC *": GOSUB 3650
  12. 130  GOSUB 2780:TU = 1: GOSUB 700
  13. 140  REM    COMINCIA IL COMBATTIMENTO
  14. 150 MV = 0:FL = 0:HQ = 0:HS = 0:NU = 10:B$ = "C"
  15. 160  HOME :M$ = "STO VISUALIZZANDO LE MINE DEI ROSSI": GOSUB 3650
  16. 170  FOR I = 1 TO 16: FOR J = 1 TO 18
  17. 180  IF A$(I,J) = "MI2"  THEN  XDRAW 19 AT J *14,Y +(I *9)
  18. 190  IF A$(I,J) = "AD2"  THEN HS = 6
  19. 200  IF A$(I,J) = "FD2"  THEN FL = 1
  20. 210  IF A$(I,J) = "HQ2"  THEN HQ = 1
  21. 220  IF  RIGHT$(A$(I,J),1) = "H"  THEN MV = MV +1: IF HS < >6  THEN HS = HS +1
  22. 230  NEXT J,I: IF FL = 1  THEN MV = MV *2:FL = 0
  23. 240  IF   NOT HQ  THEN HS =  INT(HS/2): IF HS = 0  THEN HS = 1
  24. 250  FOR I = 1 TO HS
  25. 260 OB$ = "COLPO N." + STR$(I): GOSUB 4120:RS = 16:RE = 1:R = 1:C = 1:SH = 37:A$ = "K": GOSUB 3710
  26. 270 HX(I) = R:HY(I) = C
  27. 280  NEXT 
  28. 290  FOR I = 1 TO HS: XDRAW 37 AT HY(I) *14,Y +(HX(I) *9): NEXT 
  29. 300  REM    SPOSTA I TANK
  30. 310  FOR K = 1 TO 6:TX = 0:TY = 0
  31. 320  IF XH(K) >0  THEN TX = XH(K):TY = YH(K)
  32. 330  IF TX = 0  THEN 480
  33. 340  HOME : INVERSE : VTAB 24: PRINT "MOSSE RESTANTI:"MV;: NORMAL : VTAB 21: HTAB 1: PRINT "NUOVA POSIZIONE DEL TANK N"K: PRINT "USA I-J-K-M PER SPOSTARE": PRINT "<SPAZIO> PER PIAZZARE IL TANK";
  34. 350  FOR L = 1 TO 11: XDRAW 31 AT TY *14,Y +(TX *9): FOR D = 1 TO 50: NEXT D,L:SH = 20 +K: XDRAW SH AT TY *14,Y +(TX *9)
  35. 360 R = TX:C = TY:RS = 16:RE = 1:MT = 1:A$ = "K": GOSUB 3710
  36. 370  IF R = TX  AND C = TY  THEN  XDRAW SH AT TY *14,Y +(TX *9): XDRAW 31 AT TY *14,Y +(TX *9): GOTO 480
  37. 380 MX =  ABS(TX -R):MY =  ABS(TY -C):M = MX +MY
  38. 390  IF M >3  OR M >MV  THEN  PRINT : PRINT  CHR$(7)"NON PUOI SPOSTARTI TANTO!": XDRAW SH AT YH(K) *14,Y +(XH(K) *9): XDRAW 31 AT YH(K) *14,Y +(XH(K) *9): GOSUB 3640: GOTO 340
  39. 400  IF A$(R,C) = "HQ"  THEN  XDRAW 32 AT C *14,Y +(R *9):A$(R,C) = ""
  40. 410  IF A$(R,C) = "AD"  THEN  XDRAW 33 AT C *14,Y +(R *9):A$(R,C) = "":
  41. 420  IF A$(R,C) = "FD"  THEN  XDRAW 34 AT C *14,Y +(R *9):A$(R,C) = ""
  42. 430  IF A$(R,C) = ""  THEN A$(R,C) =  STR$(K) +"H":XH(K) = R:YH(K) = C:A$(TX,TY) = "": XDRAW SH AT TY *14,Y +(TX *9): XDRAW 31 AT C *14,Y +(R *9):TX(K) = R:TY(K) = C: GOTO 460
  43. 450  IF A$(R,C) < >""  THEN  HOME : PRINT  CHR$(7)"QUESTO SPAZIO E' OCCUPATO": XDRAW SH AT YH(K) *14,Y +XH(K) *9: XDRAW 31 AT YH(K) *14,Y +XH(K) *9: GOSUB 3640: GOTO 340
  44. 460 MV = MV -M: IF MV = 0  THEN K = 6
  45. 470 TX = 0:TY = 0
  46. 480  NEXT : HOME 
  47. 490  FOR I = 9 TO 16: FOR J = 1 TO 18: IF A$(I,J) = "MI2"  THEN  XDRAW 19 AT J *14,Y +(I *9)
  48. 500  NEXT J,I
  49. 510  GOSUB 1540: REM    CONTROLLA SE C'E' UN VINCITORE
  50. 520  IF SC = 0  THEN 640
  51. 530  FOR I = 1 TO SC
  52. 540  IF A$(CX(I),CY(I)) = ""  THEN  PRINT "IL COLPO N "I" DEI VERDI E' A VUOTO": GOSUB 3580: GOTO 620
  53. 550  IF A$(CX(I),CY(I)) = "B"  THEN  HCOLOR= 3: DRAW 20 AT CY(I) *14,Y +(CX(I) *9):A$(CX(I),CY(I)) = "": PRINT "IL COLPO N "I" DEI VERDI ABBATTE BARRIERA": GOSUB 3580: GOTO 620
  54. 560  IF  LEFT$(A$(CX(I),CY(I)),1) = "M"  THEN  GOSUB 3530: IF N/2 =  INT(N/2)  THEN  PRINT "IL COLPO N "I" DEI VERDI E' A VUOTO": GOSUB 3580: GOTO 620
  55. 570  IF  LEFT$(A$(CX(I),CY(I)),1) = "M"  THEN A$(CX(I),CY(I)) = "": PRINT "IL COLPO N "I" DEI VERDI DISTRUGGE UNA MINA";: GOSUB 3580: GOTO 620
  56. 580  IF  RIGHT$(A$(CX(I),CY(I)),1) = "H"  THEN  XDRAW 31 AT CY(I) *14,Y +(CX(I) *9): PRINT "IL COLPO N "I" DEI VERDI DISTRUGGE UN TANK" CHR$(7);:NU =  VAL(A$(CX(I),CY(I))):TX(NU) = 0:TY(NU) = 0
  57. 590  IF  RIGHT$(A$(CX(I),CY(I)),1) = "H"  THEN  GOSUB 3580:XH( VAL(A$(CX(I),CY(I)))) = 0:YH( VAL(A$(CX(I),CY(I)))) = 0:A$(CX(I),CY(I)) = "": GOTO 620
  58. 600  IF  RIGHT$(A$(CX(I),CY(I)),1) = "C"  THEN  XDRAW 36 AT CY(I) *14,Y +(CX(I) *9):XC( VAL(A$(CX(I),CY(I)))) = 0:YC( VAL(A$(CX(I),CY(I)))) = 0: PRINT "IL COMPUTER HA COLPITO IL PROPRIO TANK!" CHR$(7):A$(CX(I),CY(I)) = "": GOSUB 3580: GOTO 620
  59. 610  PRINT "IL COLPO N "I" DEI VERDI E' A VUOTO": GOSUB 3580
  60. 620  FOR D = 1 TO 3000: NEXT : GOSUB 1540: NEXT 
  61. 630  HOME :A = 31:B = 36
  62. 640  FOR K = 1 TO 6
  63. 650  IF TX(K) = 0  THEN 670
  64. 660  GOSUB 1130: REM    CONTROLLA SE C'E' DUELLO DI TANK
  65. 670 TX(K) = 0:TY(K) = 0: NEXT K
  66. 680  GOSUB 1540: REM    CONTROLLA SE C'E' UN VINCITORE
  67. 690  REM    MOSSA DEI VERDI
  68. 700  HOME :M$ = "IL COMPUTER PIAZZA I COLPI DEI VERDI": GOSUB 3650
  69. 710 MV = 0:FL = 0:HQ = 0:SC = 0:B$ = "H"
  70. 720  FOR I = 1 TO 16: FOR J = 1 TO 18
  71. 730  IF A$(I,J) = "AD"  THEN SC = 6
  72. 740  IF A$(I,J) = "FD"  THEN FL = 1
  73. 750  IF A$(I,J) = "HQ"  THEN HQ = 1
  74. 760  IF  RIGHT$(A$(I,J),1) = "C"  THEN MV = MV +1: IF SC < >6  THEN SC = SC +1
  75. 770  NEXT J,I: IF FL = 1  THEN MV = MV *2:FL = 0
  76. 780  IF   NOT HQ  THEN SC =  INT(SC/2): IF SC = 0  THEN SC = 1
  77. 790  REM    SCEGLIE I COLPI DEI VERDI
  78. 800 S = 0
  79. 810  FOR K = 6 TO 1  STEP  -1
  80. 820  IF XH(K) >0  THEN I = XH(K):J = YH(K):S = S +1: GOSUB 1660: IF S = SC  THEN K = 1
  81. 830  NEXT 
  82. 840  IF S <SC  THEN 810
  83. 850  IF TU  THEN TU = 0: RETURN 
  84. 860  HOME :M$ = "TOCCA AI VERDI SPOSTARE I TANK": GOSUB 3650
  85. 870 NU = 4: GOSUB 3530: IF N/2 =  INT(N/2)  THEN W = 1: FOR K = 6 TO 1  STEP  -1:TX = 0:TY = 0: GOTO 890
  86. 880  FOR K = 1 TO 6:TX = 0:TY = 0
  87. 890  IF XC(K) >0  THEN I = XC(K):J = YC(K): GOSUB 1960:MV = MV -S
  88. 900  IF W  AND MV < = 0  THEN K = 1
  89. 910  IF   NOT W  AND MV < = 0  THEN K = 6
  90. 920  REM   
  91. 930  NEXT K:W = 0
  92. 940  GOSUB 1540: REM    CONTROLLA SE C'E' UN VINCITORE
  93. 950  HOME : FOR I = 1 TO HS
  94. 960  IF A$(HX(I),HY(I)) = ""  THEN  PRINT "IL COLPO N "I" DEI ROSSI E' A VUOTO": GOSUB 3610: GOTO 1040
  95. 970  IF A$(HX(I),HY(I)) = "B"  THEN  HCOLOR= 3: DRAW 20 AT HY(I) *14,Y +(HX(I) *9):A$(HX(I),HY(I)) = "": PRINT "IL COLPO N "I" DEI ROSSI ABBATTE OSTACOLO": GOSUB 3610: GOTO 1040
  96. 980  IF  LEFT$(A$(HX(I),HY(I)),1) = "M"  THEN  GOSUB 3530: IF N/2 =  INT(N/2)  THEN  PRINT "IL COLPO N "I" DEI ROSSI E' A VUOTO": GOSUB 3610: GOTO 1040
  97. 990  IF  LEFT$(A$(HX(I),HY(I)),1) = "M"  THEN A$(HX(I),HY(I)) = "": PRINT "IL COLPO N "I" DEI ROSSI FA SALTARE MINA": GOSUB 3610: GOTO 1040
  98. 1000  IF  RIGHT$(A$(HX(I),HY(I)),1) = "C"  THEN  XDRAW 36 AT HY(I) *14,Y +(HX(I) *9): PRINT "IL COLPO N "I" DEI ROSSI DISTRUGGE UN TANK" CHR$(7):NU =  VAL(A$(HX(I),HY(I))):TX(NU) = 0:TY(NU) = 0
  99. 1010  IF  RIGHT$(A$(HX(I),HY(I)),1) = "C"  THEN  GOSUB 3610:XC(NU) = 0:YC(NU) = 0:A$(HX(I),HY(I)) = "": GOTO 1040
  100. 1020  IF  RIGHT$(A$(HX(I),HY(I)),1) = "H"  THEN  XDRAW 31 AT HY(I) *14,Y +(HX(I) *9):XH( VAL(A$(HX(I),HY(I)))) = 0:YH( VAL(A$(HX(I),HY(I)))) = 0: PRINT "I ROSSI HANNO COLPITO IL PROPRIO TANK!" CHR$(7):A$(HX(I),HY(I)) = "": GOSUB 3610: GOTO 1040
  101. 1030  PRINT "IL COLPO N "I" DEI ROSSI E' A VUOTO": GOSUB 3610
  102. 1040  GOSUB 3640:HX(I) = 0:HY(I) = 0: GOSUB 1540: NEXT 
  103. 1050  HOME 
  104. 1060  FOR K = 1 TO 6
  105. 1070  IF TX(K) = 0  THEN 1100
  106. 1080 A = 36:B = 31
  107. 1090  GOSUB 1130: REM    CONTROLLA SE C'E' DUELLO DI TANK
  108. 1100 TX(K) = 0:TY(K) = 0: NEXT K
  109. 1110  GOSUB 1540: REM    CONTROLLA SE C'E' UN VINCITORE
  110. 1120  HOME : GOTO 150
  111. 1130  REM     ROUTINE PER CONTROLLARE SE C'E' DUELLO DI TANK
  112. 1140 D = 1
  113. 1150  ON D GOSUB 1180,1240,1300,1360
  114. 1160 D = D +1: IF D = 5  THEN D = 1: RETURN 
  115. 1170  GOTO 1150
  116. 1180 R = TX(K) -1:C = TY(K): IF R =  <1  THEN  RETURN 
  117. 1190  IF  RIGHT$(A$(R,C),1) = B$  THEN 1210
  118. 1200  RETURN 
  119. 1210  GOSUB 1420
  120. 1220  IF   NOT FL  THEN  RETURN 
  121. 1230 FL = 0:D = 4: RETURN 
  122. 1240 R = TX(K) +1:C = TY(K): IF R >16  THEN  RETURN 
  123. 1250  IF  RIGHT$(A$(R,C),1) = B$  THEN 1270
  124. 1260  RETURN 
  125. 1270  GOSUB 1420
  126. 1280  IF   NOT FL  THEN  RETURN 
  127. 1290 FL = 0:D = 4: RETURN 
  128. 1300 R = TX(K):C = TY(K) -1: IF C <1  THEN  RETURN 
  129. 1310  IF  RIGHT$(A$(R,C),1) = B$  THEN 1330
  130. 1320  RETURN 
  131. 1330  GOSUB 1420
  132. 1340  IF   NOT FL  THEN  RETURN 
  133. 1350 FL = 0:D = 4: RETURN 
  134. 1360 R = TX(K):C = TY(K) +1: IF C >18  THEN  RETURN 
  135. 1370  IF  RIGHT$(A$(R,C),1) = B$  THEN 1390
  136. 1380  RETURN 
  137. 1390  GOSUB 1420
  138. 1400  IF   NOT FL  THEN  RETURN 
  139. 1410 FL = 0:D = 4: RETURN 
  140. 1420  REM    DUELLO
  141. 1430  FOR I = 1 TO 5: PRINT  CHR$(7): NEXT : HOME : HTAB 17: FLASH : PRINT "DUELLO": NORMAL : FOR I = 1 TO 3000: NEXT 
  142. 1440  FOR I = 1 TO 10: XDRAW A AT TY(K) *14,Y +(TX(K) *9): XDRAW B AT C *14,Y +(R *9): FOR J = 1 TO 50: NEXT : NEXT 
  143. 1450  IF K =  VAL( LEFT$(A$(R,C),1))  THEN  XDRAW A AT TY(K) *14,Y +(TX(K) *9): XDRAW B AT C *14,Y +(R *9):FL = 1: HOME : PRINT "ENTRAMBI I TANK SONO DISTRUTTI":A$(R,C) = "":A$(TX(K),TY(K)) = "":XC(K) = 0:YC(K) = 0:XH(K) = 0:YH(K) = 0: GOTO 1530
  144. 1460  IF B$ = "C"  THEN 1490
  145. 1470  IF K < VAL( LEFT$(A$(R,C),1))  THEN  XDRAW 36 AT TY(K) *14,Y +(TX(K) *9):A$(TX(K),TY(K)) = "":XC(K) = 0:YC(K) = 0: HOME : PRINT "TANK DEI VERDI DISTRUTTO!": GOTO 1530
  146. 1480  GOTO 1520
  147. 1490  IF K > VAL( LEFT$(A$(R,C),1))  THEN  XDRAW 36 AT C *14,Y +(R *9):XC( VAL(A$(R,C))) = 0:YC( VAL(A$(R,C))) = 0:A$(R,C) = "": HOME : PRINT "TANK DEI VERDI DISTRUTTO!": GOTO 1530
  148. 1500  XDRAW 31 AT TY(K) *14,Y +(TX(K) *9):FL = 1: HOME : PRINT "TANK DEI ROSSI DISTRUTTO!":XH( VAL(A$(TX(K),TY(K)))) = 0:YH( VAL(A$(TX(K),TY(K)))) = 0:A$(TX(K),TY(K)) = ""
  149. 1510  GOTO 1530
  150. 1520  XDRAW 31 AT C *14,Y +(R *9):FL = 1: HOME : PRINT "TANK DEI ROSSI DISTRUTTO":XH( VAL(A$(R,C))) = 0:YH( VAL(A$(R,C))) = 0:A$(R,C) = ""
  151. 1530  FOR I = 1 TO 4000: NEXT : RETURN 
  152. 1540  REM    CERCA UN VINCITORE
  153. 1550 H = 0:C = 0
  154. 1560  FOR WI = 1 TO 6
  155. 1570  IF XC(WI) >0  THEN C = C +1
  156. 1580  IF XH(WI) >0  THEN H = H +1
  157. 1590  NEXT 
  158. 1600  IF H = 0  AND C = 0  THEN  FOR I = 1 TO 5: PRINT  CHR$(7): NEXT : PRINT "LA PARTITA E' FINITA IN PARITA'. VUOI   PROVARE ANCORA ?";: GOTO 1640
  159. 1610  IF H = 0  THEN  FOR I = 1 TO 5: PRINT  CHR$(7): NEXT : HOME : PRINT "COMBATTIMENTO VINTO DAI VERDI.": PRINT "VUOI PROVARE ANCORA?";: GOTO 1640
  160. 1620  IF C = 0  THEN  FOR I = 1 TO 5: PRINT  CHR$(7): NEXT : HOME : PRINT 
  161. 1630  RETURN : REM    RESTANO ANCORA TANK
  162. 1640  INPUT "";A$: IF  LEFT$(A$,1) = "N"  THEN  GOTO 4200
  163. 1650  CLEAR : GOTO 120
  164. 1660  REM    SCEGLIE POSIZIONE COLPO DEI VERDI
  165. 1670 NU = 10: GOSUB 3530
  166. 1680  IF N/2 =  INT(N/2)  THEN D = 4: GOTO 1710
  167. 1690  IF N = 1  OR N = 3  OR N = 9  THEN NU = 2: GOSUB 3530:D = 1 +N: GOTO 1710
  168. 1700  IF N = 5  OR N = 7  OR N = 10  THEN D = 1
  169. 1710 NU = 3: GOSUB 3530: IF N = 3  THEN NU = 2: GOSUB 3530: ON D GOSUB 1860,1910,1910,1860: IF DI  THEN DI = 0:NU = 2: GOTO 1730
  170. 1720 NU = 3
  171. 1730  GOSUB 3530: ON D GOTO 1740,1770,1800,1830
  172. 1740  IF I +N >16  THEN 1670
  173. 1750  IF  RIGHT$(A$(I +N,J),1) < >"1"  AND  RIGHT$(A$(I +N,J),1) < >"C"  THEN CX(S) = I +N:CY(S) = J: RETURN 
  174. 1760  GOTO 1670
  175. 1770  IF J -N <1  THEN 1670
  176. 1780  IF  RIGHT$(A$(I,J -N),1) < >"1"  AND  RIGHT$(A$(I,J -N),1) < >"C"  THEN CX(S) = I:CY(S) = J -N: RETURN 
  177. 1790  GOTO 1670
  178. 1800  IF J +N >18  THEN 1670
  179. 1810  IF  RIGHT$(A$(I,J +N),1) < >"1"  AND  RIGHT$(A$(I,J +N),1) < >"C"  THEN CX(S) = I:CY(S) = J +N: RETURN 
  180. 1820  GOTO 1670
  181. 1830  IF I -N <1  THEN 1670
  182. 1840  IF  RIGHT$(A$(I -N,J),1) < >"1"  AND  RIGHT$(A$(I -N,J),1) < >"C"  THEN CX(S) = I -N:CY(S) = J: RETURN 
  183. 1850  GOTO 1670
  184. 1860  IF N = 1  THEN 1890
  185. 1870  IF J -1 <1  THEN  RETURN 
  186. 1880 J = J -1:DI = 1: RETURN 
  187. 1890  IF J +1 >18  THEN  RETURN 
  188. 1900 J = J +1:DI = 1: RETURN 
  189. 1910  IF N = 1  THEN 1940
  190. 1920  IF I -1 <1  THEN  RETURN 
  191. 1930 I = I -1:DI = 1: RETURN 
  192. 1940  IF I +1 >16  THEN  RETURN 
  193. 1950 I = I +1:DI = 1: RETURN 
  194. 1960  REM    SPOSTA TANK DEI VERDI
  195. 1970 TX = I:TY = J:FL = 0:TI = 0:S = 0
  196. 1980  FOR D = 1 TO 16
  197. 1990  IF  RIGHT$(A$(D,J),1) = "H"  OR A$(D,J) = "HQ2"  OR A$(D,J) = "AD2"  OR A$(D,J) = "FD2"  THEN FL = D
  198. 2000  NEXT D: IF FL < >0  THEN  GOTO 2400
  199. 2010  FOR D = 1 TO 18
  200. 2020  IF  RIGHT$(A$(I,D),1) = "H"  OR A$(I,D) = "HQ2"  OR A$(I,D) = "AD2"  OR A$(I,D) = "FD2"  THEN FL = D
  201. 2030  NEXT D: IF FL < >0  THEN  GOTO 2420
  202. 2040 NU = 4: GOSUB 3530:TI = TI +1: IF TI >10  THEN  RETURN 
  203. 2050 FL = 0: ON N GOTO 2120,2190,2260,2330
  204. 2060  IF A$(TR,TC) = "HQ2"  THEN  XDRAW 32 AT TC *14,Y +(TR *9):A$(TR,TC) = ""
  205. 2070  IF A$(TR,TC) = "AD2"  THEN  XDRAW 33 AT TC *14,Y +(TR *9):A$(TR,TC) = ""
  206. 2080  IF A$(TR,TC) = "FD2"  THEN  XDRAW 34 AT TC *14,Y +(TR *9):A$(TR,TC) = ""
  207. 2090  IF A$(TR,TC) = ""  THEN  XDRAW 36 AT TY *14,Y +(TX *9):A$(TR,TC) = A$(I,J):XC(K) = TR:YC(K) = TC:A$(I,J) = "": XDRAW 36 AT TC *14,Y +(TR *9):TX(K) = TR:TY(K) = TC: GOTO 2440
  208. 2100  IF A$(TR,TC) = "MI2"  THEN  XDRAW 36 AT TY *14,Y +(TX *9): FOR D = 1 TO 50: XDRAW 35 AT TC *14,Y +(TR *9): NEXT :A$(TR,TC) = "":XC(K) = 0:YC(K) = 0:A$(TX,TY) = "": HOME : PRINT  CHR$(7)"TANK DISTRUTTO DA UNA MINA!": GOSUB 3640
  209. 2110  RETURN 
  210. 2120  REM    SPOSTA IN SU
  211. 2130  IF I = 1  THEN 2040
  212. 2140 NU = 3: GOSUB 3530: IF I -N <1  THEN 2040
  213. 2150  IF MV < = 0  THEN  RETURN 
  214. 2160  IF MV -N <0  THEN 2140
  215. 2170 TR = I -N:TC = J:D = 1
  216. 2180  GOTO 2060
  217. 2190  REM    SPOSTA IN GIU'
  218. 2200  IF I = 16  THEN 2040
  219. 2210 NU = 3: GOSUB 3530: IF I +N >16  THEN 2040
  220. 2220  IF MV < = 0  THEN  RETURN 
  221. 2230  IF MV -N <0  THEN 2210
  222. 2240 TR = I +N:TC = J:D = 2
  223. 2250  GOTO 2060
  224. 2260  REM    SPOSTA A SINISTRA
  225. 2270  IF J = 1  THEN 2040
  226. 2280 NU = 3: GOSUB 3530: IF J -N <1  THEN 2040
  227. 2290  IF MV < = 0  THEN  RETURN 
  228. 2300  IF MV -N <0  THEN 2280
  229. 2310 TR = I:TC = J -N:D = 3
  230. 2320  GOTO 2060
  231. 2330  REM     SPOSTA A DESTRA
  232. 2340  IF J = 18  THEN 2040
  233. 2350 NU = 3: GOSUB 3530: IF J +N >18  THEN 2040
  234. 2360  IF MV < = 0  THEN  RETURN 
  235. 2370  IF MV -N <0  THEN 2350
  236. 2380 TR = I:TC = J +N:D = 4
  237. 2390  GOTO 2060
  238. 2400  IF FL <I  THEN N = 1:D = 1: GOTO 2050
  239. 2410 N = 2:D = 2: GOTO 2050
  240. 2420  IF FL <J  THEN N = 3:D = 3: GOTO 2050
  241. 2430 N = 4:D = 4: GOTO 2050
  242. 2440 S = N: IF N <3  AND MV -S >0  THEN 2460
  243. 2450  RETURN 
  244. 2460 NU = 2: GOSUB 3530
  245. 2470 I = TX(K):J = TY(K):TX = I:TY = J:XC = I:YC = J
  246. 2480  IF D < = 2  THEN  ON N GOSUB 2600,2650: RETURN 
  247. 2490  IF D >2  THEN  ON N GOSUB 2500,2550: RETURN 
  248. 2500  IF I = 1  THEN  RETURN 
  249. 2510  GOSUB 2770: IF N = 0  THEN  RETURN 
  250. 2520  IF MV -(S +N) <0  THEN  RETURN 
  251. 2530  IF I -N <1  THEN  RETURN 
  252. 2540 TR = I -N:TC = J: GOTO 2700
  253. 2550  IF I = 16  THEN  RETURN 
  254. 2560  GOSUB 2770: IF N = 0  THEN  RETURN 
  255. 2570  IF MV -(S +N) <0  THEN  RETURN 
  256. 2580  IF I +N >16  THEN  RETURN 
  257. 2590 TR = I +N:TC = J: GOTO 2700
  258. 2600  IF J = 1  THEN  RETURN 
  259. 2610  GOSUB 2770: IF N = 0  THEN  RETURN 
  260. 2620  IF MV -(S +N) <0  THEN  RETURN 
  261. 2630  IF J -N <1  THEN  RETURN 
  262. 2640 TR = I:TC = J -N: GOTO 2700
  263. 2650  IF J = 18  THEN  RETURN 
  264. 2660  GOSUB 2770: IF N = 0  THEN  RETURN 
  265. 2670  IF MV -(S +N) <0  THEN  RETURN 
  266. 2680  IF J +N >18  THEN  RETURN 
  267. 2690 TR = I:TC = J +N
  268. 2700 FL = 0
  269. 2710  IF A$(TR,TC) = "HQ2"  THEN  XDRAW 32 AT TC *14,Y +(TR *9):A$(TR,TC) = ""
  270. 2720  IF A$(TR,TC) = "AD2"  THEN  XDRAW 33 AT TC *14,Y +(TR *9):A$(TR,TC) = ""
  271. 2730  IF A$(TR,TC) = "FD2"  THEN  XDRAW 34 AT TC *14,Y +(TR *9):A$(TR,TC) = ""
  272. 2740  IF A$(TR,TC) = ""  THEN  XDRAW 36 AT TY *14,Y +(TX *9):A$(TR,TC) = A$(I,J):A$(I,J) = "": XDRAW 36 AT TC *14,Y +(TR *9):TX(K) = TR:TY(K) = TC:XC(K) = TR:YC(K) = TC:S = S +N: RETURN 
  273. 2760  RETURN 
  274. 2770 NU = 3 -S: GOSUB 3530: RETURN 
  275. 2780  REM    DISEGNA LA GRIGLIA
  276. 2790  HGR : HCOLOR= 3: HPLOT 0,0: CALL  -3082
  277. 2800  HCOLOR= 0: FOR I = 8 TO 161  STEP 9: HPLOT 0,I TO 279,I: NEXT 
  278. 2810 J = 1
  279. 2820  FOR I = 13 TO 265  STEP 14: HPLOT I,0 TO I,161
  280. 2830  IF J = 19  THEN 2850
  281. 2840  DRAW J AT I +4,7: DRAW J AT I +4,159:J = J +1
  282. 2850  NEXT 
  283. 2860 J = 1
  284. 2870  FOR I = 16 TO 159  STEP 9
  285. 2880 A$ =  STR$(J)
  286. 2890  IF  LEN(A$) <2  THEN A$ = " " +A$
  287. 2900  IF  LEFT$(A$,1) = " "  THEN 2920
  288. 2910  DRAW ( VAL( LEFT$(A$,1))) +20 AT 1,I: DRAW ( VAL( LEFT$(A$,1))) +20 AT 268,I
  289. 2920 S =  VAL( RIGHT$(A$,1)):S = S +20: IF S = 20  THEN S = 30
  290. 2930  DRAW S AT 6,I: DRAW S AT 273,I
  291. 2940 J = J +1: NEXT 
  292. 2950 Y = 7:J = 1: HCOLOR= 1
  293. 2960  FOR I = 1 TO 8: FOR K = 1 TO 18
  294. 2970 NU = 10: GOSUB 3530: IF N = 2  THEN A$(I,K) = "B": DRAW 20 AT K *14,Y +(I *9):J = J +1
  295. 2980  IF J = 15  THEN K = 18:I = 8
  296. 2990  NEXT K,I
  297. 3000  IF J <15  THEN 2960
  298. 3010 J = 1
  299. 3020  FOR I = 16 TO 10  STEP  -1: FOR K = 1 TO 18
  300. 3030  GOSUB 3530: IF N = 2  THEN A$(I,K) = "B": DRAW 20 AT K *14,Y +(I *9):J = J +1
  301. 3040  IF J = 15  THEN K = 18:I = 10
  302. 3050  NEXT K,I
  303. 3060  IF J <15  THEN 3020
  304. 3070  REM    POSIZIONI DEI VERDI
  305. 3080  FOR I = 1 TO 8: FOR J = 1 TO 18
  306. 3090  GOSUB 3530: IF N = 3  AND A$(I,J) = ""  THEN A$(I,J) = "HQ": XDRAW 32 AT J *14,Y +(I *9):I = 8:J = 18:FL = 1
  307. 3100  NEXT J,I
  308. 3110  IF   NOT FL  THEN 3080
  309. 3120 FL = 0
  310. 3130  FOR I = 1 TO 8: FOR J = 1 TO 18
  311. 3140  GOSUB 3530
  312. 3150  IF N = 3  AND A$(I,J) = ""  THEN A$(I,J) = "AD": XDRAW 33 AT J *14,Y +(I *9):I = 8:J = 18:FL = 1
  313. 3160  NEXT J,I:: IF   NOT FL  THEN 3130
  314. 3170 FL = 0
  315. 3180  FOR I = 1 TO 8: FOR J = 1 TO 18
  316. 3190  GOSUB 3530: IF N = 3  AND A$(I,J) = ""  THEN A$(I,J) = "FD": XDRAW 34 AT J *14,Y +(I *9):I = 8:J = 18:FL = 1
  317. 3200  NEXT J,I: IF   NOT FL  THEN 3180
  318. 3210 FL = 0
  319. 3220  FOR I = 8 TO 1  STEP  -1: FOR J = 1 TO 18: GOSUB 3530
  320. 3230  IF N = 2  AND A$(I,J) = ""  THEN A$(I,J) = "M1":FL = FL +1: IF FL = 6  THEN I = 1:J = 18
  321. 3240  NEXT J,I: IF FL <6  THEN 3220
  322. 3250 FL = 0
  323. 3260  FOR I = 3 TO 1  STEP  -1: FOR J = 1 TO 18: GOSUB 3530
  324. 3270  IF N = 1  AND A$(I,J) = ""  THEN FL = FL +1:A$(I,J) =  STR$(FL) +"C":XC(FL) = I:YC(FL) = J: IF FL = 6  THEN I = 1:J = 18
  325. 3280  NEXT J,I: IF FL <6  THEN 3260
  326. 3290  FOR I = 1 TO 3: FOR J = 1 TO 18
  327. 3300  IF  VAL(A$(I,J)) >0  THEN  XDRAW 36 AT J *14,Y +(I *9)
  328. 3310  NEXT J,I
  329. 3320  REM    POSIZIONI DEI ROSSI
  330. 3330  POKE 34,20: HOME 
  331. 3340  REM    PIAZZA HEAD QUARTER
  332. 3350 OB$ = "HQ": GOSUB 4120:RS = 16:RE = 9:R = 16:C = 1:SH = 32:A$ = "K": GOSUB 3710
  333. 3360 A$(R,C) = "HQ2"
  334. 3370 OB$ = "DEPOSITO ARMI (AD)": GOSUB 4120:RS = 16:RE = 9:R = 16:C = 1:SH = 33:A$ = "K": GOSUB 3710
  335. 3380 A$(R,C) = "AD2"
  336. 3390 OB$ = "DEPOSITO BENZ.(FD)": GOSUB 4120:RS = 16:RE = 9:R = 16:C = 1:SH = 34:A$ = "K": GOSUB 3710
  337. 3400 A$(R,C) = "FD2"
  338. 3410  FOR K = 1 TO 6
  339. 3420 OB$ = "MINA ANTICARRO N" + STR$(K): GOSUB 4120:RS = 16:RE = 9:R = 16:C = 1:SH = 19:A$ = "K": GOSUB 3710
  340. 3430 A$(R,C) = "MI2"
  341. 3440  NEXT 
  342. 3450  FOR I = 1 TO 6:C = 1:OB$ = "TANK N." + STR$(I): GOSUB 4120
  343. 3460 RS = 16:RE = 14:R = 16:C = 1:SH = 31:A$ = "K": GOSUB 3710
  344. 3470 A$(R,C) =  STR$(I) +"H":XH(I) = R:YH(I) = C
  345. 3480  NEXT 
  346. 3490  FOR I = 9 TO 16: FOR J = 1 TO 18
  347. 3500  IF A$(I,J) = "MI2"  THEN  XDRAW 19 AT J *14,Y +(I *9)
  348. 3510  NEXT J,I
  349. 3520  RETURN 
  350. 3530  REM    SCEGLIE NUMERO CASUALE
  351. 3540 N =  INT( RND( PEEK(78) + PEEK(79) *256) *NU) +1
  352. 3550  RETURN 
  353. 3560  REM    DISEGNA E CANCELLA MINA ANTICARRO
  354. 3570  FOR D = 1 TO 10: XDRAW 19 AT C *14,Y +(R *9): FOR E = 1 TO 50: NEXT : NEXT : RETURN 
  355. 3580  REM    MOSTRA DOVE E' FINITO IL COLPO (VERDI)
  356. 3590  CALL 768
  357. 3600  FOR D = 1 TO 20: XDRAW 35 AT CY(I) *14,Y +(CX(I) *9): FOR E = 1 TO 50: NEXT E,D: RETURN 
  358. 3610  REM    MOSTRA DOVE E' FINITO IL COLPO (ROSSI)
  359. 3620  CALL 768
  360. 3630  FOR D = 1 TO 20: XDRAW 35 AT HY(I) *14,Y +(HX(I) *9): FOR E = 1 TO 50: NEXT E,D: RETURN 
  361. 3640  FOR D = 1 TO 3000: NEXT : RETURN 
  362. 3650  HTAB 21 - LEN(M$)/2: PRINT M$: RETURN 
  363. 3660  FOR X = 768 TO 781
  364. 3670  READ Y: POKE X,Y: NEXT 
  365. 3680  RETURN 
  366. 3690  DATA   160,20,169,50,32,168,252,173,48,192,136,208,245,96
  367. 3700  REM    SPOSTA FIGURE SU SCHERMO USANDO I-J-K-M E <SPAZIO>.
  368. 3710  IF SH = 37  THEN  GOSUB 4050: GOTO 3790
  369. 3720  IF SH = 31  THEN  IF A$(R,C) = "B"  OR  RIGHT$(A$(R,C),1) = "H"  OR  RIGHT$(A$(R,C),1) = "C"  THEN 3850
  370. 3730  IF FL  THEN FL = 0: GOTO 3720
  371. 3740  IF SH = 19  THEN  IF  LEFT$(A$(R,C),1) = "M"  THEN 3850
  372. 3750  IF FL  THEN FL = 0: GOTO 3740
  373. 3760  IF A$(R,C) = "B"  OR A$(R,C) = "HQ2"  OR A$(R,C) = "AD2"  OR A$(R,C) = "FD2"  THEN 3850
  374. 3770  IF FL  THEN FL = 0: GOTO 3760
  375. 3780  IF MT  THEN  GOTO 3800
  376. 3790  XDRAW SH AT C *14,Y +(R *9): IF R = TX  AND C = TY  AND SH >20  AND SH <27  THEN  XDRAW SH AT C *14,Y +R *9:MT = 1
  377. 3800  POKE 49168,0: WAIT  -16384,128:A$ =  CHR$( PEEK( -16384) -128): POKE 49168,0
  378. 3810  IF MT  THEN  IF A$ < >"I"  AND A$ < >"J"  AND A$ < >"K"  AND A$ < >"M"  AND A$ < > CHR$(32)  THEN 3710
  379. 3820  IF MT  THEN MT = 0: GOTO 3840
  380. 3830  XDRAW SH AT C *14,Y +(R *9): IF A$ < >"I"  AND A$ < >"J"  AND A$ < >"K"  AND A$ < >"M"  AND A$ < > CHR$(32)  THEN 3710
  381. 3840  IF A$ =  CHR$(32)  THEN 4010
  382. 3850  IF A$ = "I"  THEN 3900
  383. 3860  IF A$ = "J"  THEN 3930
  384. 3870  IF A$ = "K"  THEN 3960
  385. 3880  IF A$ = "M"  THEN 3990
  386. 3890  REM    SPOSTA IN SU
  387. 3900  IF R = RE  THEN R = RS: GOTO 3710
  388. 3910 R = R -1: GOTO 3710
  389. 3920  REM    SPOSTA A SINISTRA
  390. 3930  IF C = 1  THEN C = 18: GOTO 3710
  391. 3940 C = C -1: GOTO 3710
  392. 3950  REM    SPOSTA A DESTRA
  393. 3960  IF C = 18  THEN C = 1: GOTO 3710
  394. 3970 C = C +1: GOTO 3710
  395. 3980  REM    SPOSTA IN GIU'
  396. 3990  IF R = RS  THEN R = RE: GOTO 3710
  397. 4000 R = R +1: GOTO 3710
  398. 4010  IF SH = 37  OR SH >20  AND SH <27  THEN 4030
  399. 4020  IF A$(R,C) < >""  THEN  HOME : PRINT  CHR$(7)"QUESTO SPAZIO E' OCCUPATO!": FOR D = 1 TO 2000: NEXT : GOSUB 4120: GOTO 3710
  400. 4030  IF SH >20  AND SH <27  THEN  RETURN 
  401. 4040  XDRAW SH AT C *14,Y +(R *9): RETURN 
  402. 4050  IF I = 1  THEN  RETURN 
  403. 4060  FOR J = 1 TO I
  404. 4070  IF R = HX(J)  AND C = HY(J)  THEN FL = 1
  405. 4080  NEXT J
  406. 4090  IF FL  THEN  POP :FL = 0: GOTO 3850
  407. 4100  RETURN 
  408. 4110  REM    STAMPA ISTRUZIONI PER I-J-K-M
  409. 4120  HOME : PRINT "FISSA POSIZIONE ";OB$: PRINT "USA I-J-K-M PER SPOSTARE ": PRINT "<SPAZIO> PER PIAZZARE ";OB$;: RETURN 
  410. 4200  CALL  -936: VTAB 10: HTAB 11: INVERSE : PRINT "1";: NORMAL : PRINT " - MENU APPLEDISK"
  411. 4210  PRINT : HTAB 11: INVERSE : PRINT "2";: NORMAL : PRINT " - FINE"
  412. 4220  VTAB 15: HTAB 18: PRINT "< >";: POKE  -16303,0
  413. 4230  VTAB 15: HTAB 19: GET A$: PRINT A$: IF A$ < >"1"  AND A$ < >"2"  THEN 4230
  414. 4240  IF A$ = "1"  THEN  POKE 104,8: POKE 103,1: POKE 2048,0: PRINT  CHR$(4)"RUN HELLO2": END 
  415. 4250  TEXT : HOME : POKE 104,8: POKE 103,1: POKE 2048,0: END