home *** CD-ROM | disk | FTP | other *** search
/ AppleDisk Magazine Miscellaneous Programs / AppleDisk_Misc_Programs_1.dsk / FIAMMIFERI.bas < prev    next >
Encoding:
BASIC Source File  |  1987-01-01  |  6.1 KB  |  138 lines

  1. 10 G1$ = "<F>=FINE.UN ALTRO TASTO=CONTINUA"
  2. 20 A$ = "                                       "
  3. 30  HOME : VTAB 23: PRINT "----------------------------------------": PRINT "         CARLO SAPETTI - TORINO"
  4. 40  HGR : HCOLOR= 3
  5. 50  FOR I = 0 TO 80  STEP 2
  6. 60  HPLOT I,I TO 279 -I,I TO 279 -I,159 -I TO I,159 -I TO I,I
  7. 70  NEXT I: HCOLOR= 0
  8. 80  FOR I = 1 TO 28: HPLOT 67,I +64 TO 211,I +64: NEXT 
  9. 90  HCOLOR= 3
  10. 100  FOR I = 1 TO 10: READ B(I): NEXT I
  11. 110  POKE 233,112: POKE 232,0
  12. 120  FOR I = 0 TO 6: FOR J = 1 TO 16: READ A%
  13. 130 B% = I *16 +J: POKE 28671 +B%,A%
  14. 140  NEXT J: NEXT I
  15. 150  FOR I = 1 TO 10
  16. 160 K = 72:K = K +I *12
  17. 170  ROT= 0: SCALE= 2
  18. 180  DRAW B(I) AT K,74
  19. 190  NEXT I
  20. 200  GOSUB 1290
  21. 210  HOME : INVERSE : PRINT A$: POKE 33,1: PRINT A$;: HTAB 40: POKE 32,39: PRINT A$;: POKE 32,2: POKE 33,36
  22. 220  POKE 34,2: HOME : TEXT : VTAB 23: PRINT A$;: POKE 32,3: POKE 33,37: VTAB 3: HTAB 1
  23. 230  PRINT : PRINT : PRINT 
  24. 240  PRINT "FACCIAMO  CINQUE  MUCCHIETTI  DI": PRINT : PRINT "FIAMMIFERI POI A TURNO PRENDIAMO": PRINT : PRINT "DEI FIAMMIFERI DA  UNO  SOLO DEI": PRINT : PRINT "MUCCHI.  CHI RIESCE  A  PRENDERE": PRINT 
  25. 250  PRINT "L' ULTIMO  FIAMMIFERO  HA  VINTO"
  26. 260  PRINT : NORMAL 
  27. 270  PRINT "LIVELLO  1=PRINCIPIANTE": PRINT "         2=MEDIO": PRINT "         3=ESPERTO": PRINT "QUALE? ";: GET K$:K =  VAL(K$)
  28. 280  PRINT 
  29. 290 G$ =  CHR$(7):G1$ = "<F>=FINE. UN ALTRO TASTO=CONTINUA"
  30. 300 A$ = " "
  31. 310  FOR I = 1 TO 5:A$(I) =  CHR$(I +64): NEXT I
  32. 320  IF K >3  OR K <1  THEN  PRINT G$: GOTO 270
  33. 330 N1 = 4:N2 = 2:N3 = 3: IF K = 2  THEN N1 = 6:N2 = 4:N3 = 4
  34. 340  IF K = 3  THEN N1 = 48:N2 = 7:N3 = 6
  35. 350  FOR I = 1 TO 5:X%(I) =  RND(1) *N1 +N2: NEXT I
  36. 360  TEXT : HOME : PRINT "I FIAMMIFERI DEI CINQUE MUCCHI ORA SONO"
  37. 370  PRINT "---------------------------------------": PRINT 
  38. 380  POKE 34,22
  39. 390  FOR I = 1 TO 5: VTAB I *3 +1: PRINT A$(I);" =": NEXT I
  40. 400  POKE 32,4: POKE 33,36
  41. 410  FOR I = 1 TO 5
  42. 420 A% = X%(I):A(0,I) = A%
  43. 430  GOSUB 940
  44. 440  GOSUB 1080
  45. 450  PRINT 
  46. 460  NEXT I
  47. 470  VTAB 23: PRINT "GIOCA PER PRIMO LO SFIDANTE <S> ": PRINT "O IL COMPUTER <C>? ";: GET K$: PRINT : PRINT : IF K$ = "S"  OR K$ = "s"  THEN  GOTO 790
  48. 480  IF K$ < >"C"  AND K$ < >"c"  THEN  PRINT G$: GOTO 470
  49. 490  FOR I = 1 TO 5:A% = A(0,I)
  50. 500  GOSUB 940
  51. 510  NEXT I
  52. 520  REM  A(J,6) PARI O DISPARI
  53. 530 A(0,6) = 0:J = 0
  54. 540 J = J +1:A(J,6) = 0
  55. 550  FOR I = 1 TO 5
  56. 560 A(J,6) =  ABS(A(J,6) -A(J,I))
  57. 570  NEXT I
  58. 580  IF J <N3  THEN  GOTO 540
  59. 590  REM CERCO IL MASSIMO A(J,6) DIVERSO DA ZERO
  60. 600  FOR J = N3 TO 1  STEP  -1
  61. 610  IF A(J,6) = 1  THEN  GOTO 1030
  62. 620  NEXT J
  63. 630  REM   SE TUTTI I </> SONO 0 DIMEZZO IL MAGGIORE
  64. 640  FOR I = 2 TO 5: IF A(0,1) >A(0,I)  THEN C = 1: NEXT I: GOTO 690
  65. 650  FOR I = 3 TO 5: IF A(0,2) >A(0,I)  THEN C = 2: NEXT I: GOTO 690
  66. 660  FOR I = 4 TO 5: IF A(0,3) >A(0,I)  THEN C = 3: NEXT I: GOTO 690
  67. 670  IF A(0,4) >A(0,5)  THEN C = 4: GOTO 690
  68. 680 C = 5
  69. 690  REM  IL MAGGIORE E' A(0,I)
  70. 700 L% = A(0,C)/2:L = A(0,C) -L%:A(0,C) = L%
  71. 710 I = C
  72. 720 A% = A(0,C): GOSUB 940
  73. 730  PRINT : PRINT "PRENDO DA ";A$(I);" ";L" FIAMMIFER";
  74. 740  IF L = 1  THEN  PRINT "O": GOTO 760
  75. 750  PRINT "I"
  76. 760 A(8,I) = L: GOSUB 1080: VTAB 23: PRINT 
  77. 770  FOR I = 1 TO 5: IF A(0,I) >0  THEN  GOTO 790
  78. 780  NEXT I: PRINT : GOTO 1200
  79. 790  REM 
  80. 800  PRINT : INPUT "DA QUALE MUCCHIO PRENDI? ";AA$: IF AA$ = ""  THEN C = 0: GOTO 820
  81. 810 C =  ASC(AA$) -64
  82. 820  IF C <1  OR C >5  THEN  PRINT G$: PRINT "NON ESISTE":ER = 1: GOTO 890
  83. 830  INPUT "QUANTI FIAMMIFERI TOGLI? ";M: PRINT 
  84. 840  REM CONTROLLI
  85. 850  IF M <0  THEN M =  -M: PRINT : PRINT "DEVE ESSERE POSITIVO": PRINT "PRENDO IL CONTRARIO ";M;: GOSUB 1290: PRINT 
  86. 860 M% = M: IF M% <M  THEN  PRINT "NON ROMPERMI I FIAMMIFERI!": PRINT "PRENDO SOLO L'INTERO ";M%;:M = M%: GOSUB 1290: PRINT 
  87. 870  IF M >A(0,C)  THEN  PRINT G$: PRINT : PRINT "TROPPO GRANDE":ER = 1
  88. 880  IF M = 0  THEN  PRINT "NON VALE LO ZERO ":ER = 1
  89. 890  GOSUB 1290: IF ER = 1  THEN ER = 0: GOTO 800
  90. 900 I = C:A(8,I) = M:A(0,I) = A(0,I) -M:A% = A(0,I): GOSUB 940: GOSUB 1080
  91. 910  FOR I = 1 TO 5: IF A(0,I) >0  THEN  GOTO 930
  92. 920  NEXT I: PRINT : GOTO 1230
  93. 930  VTAB 23: PRINT : GOSUB 1010: GOTO 520
  94. 940  REM SCOMPORRE IN BINARI 
  95. 950  FOR J = 1 TO N3
  96. 960 H% = A%/2
  97. 970 A(J,I) = A% -2 *H%
  98. 980 A% = H%
  99. 990  NEXT J
  100. 1000  RETURN 
  101. 1010  PRINT G1$;: GET K$: IF K$ = "F"  THEN  PRINT : GOTO 1190
  102. 1020  RETURN 
  103. 1030  REM RENDERE PARI I FIAMMIFERI 
  104. 1040  FOR I = 1 TO 5: IF A(J,I) <1  THEN  NEXT I
  105. 1050 A(0,6) = 0: FOR J = 1 TO N3:A(J,I) =  ABS(A(J,I) -A(J,6))
  106. 1060 A(0,6) = A(0,6) +A(J,I) *2 ^(J -1): NEXT J
  107. 1070 L = A(0,I) -A(0,6):A(0,I) = A(0,6):A% = A(0,I): GOTO 730
  108. 1080  REM DISEGNO I FIAMM. NELLA LORO RIGA
  109. 1090  VTAB I *3 +1: HTAB 1: IF A(0,I) <10  THEN  PRINT A$;
  110. 1100  PRINT A(0,I);A$;:A$ = "/": IF A(0,I) = 0  THEN  GOTO 1120
  111. 1110 AA = A(0,I): GOSUB 1170
  112. 1120  IF A(8,I) = 0  THEN  GOTO 1160
  113. 1130 AA = A(8,I): INVERSE : GOSUB 1170: NORMAL : GOSUB 1290
  114. 1140  VTAB I *3 +1: HTAB 4: IF A(0,I) >0  THEN AA = A(0,I): GOSUB 1170
  115. 1150 A$ = " ":AA = A(8,I): GOSUB 1170
  116. 1160 A$ = " ":A(8,I) = 0: RETURN 
  117. 1170  REM DISEGNA
  118. 1180  FOR T = 1 TO AA: PRINT A$;: NEXT T: RETURN 
  119. 1190  PRINT : PRINT "SE RINUNCI ";: GOTO 1210
  120. 1200  PRINT G$;G$;: INVERSE : HTAB 10: VTAB 10
  121. 1210  PRINT "HAI PERSO LA PARTITA!";: NORMAL : GOSUB 1290: GOTO 1240
  122. 1220  TEXT : HOME : VTAB 10: HTAB 10: PRINT "UN MOMENTO, PREGO...": PRINT  CHR$(4)"RUN APDSK": END 
  123. 1230  PRINT G$: PRINT G$: INVERSE : VTAB 10: HTAB 10: PRINT "HAI VINTO TU!": NORMAL 
  124. 1240  PRINT : VTAB 23: PRINT "VUOI FARE UN' ALTRA PARTITA?     ": PRINT "<S> O <N> ";: GET K$: IF K$ = "N"  OR K$ = "n"  THEN  GOTO 1220
  125. 1250  PRINT : PRINT "CON GLI STESSI NUMERI <S> ": PRINT "O CON NUMERI NUOVI <N>? ";: GET K$
  126. 1260  TEXT : HOME : IF K$ = "S"  OR K$ = "s"  THEN  GOTO 360
  127. 1270  GOTO 350
  128. 1280  HOME : PRINT G$: PRINT 
  129. 1290  FOR O = 1 TO 1500: NEXT O: RETURN 
  130. 1300  REM 
  131. 1310  DATA  3,4,1,5,5,4,3,2,6,4 
  132. 1320  DATA 06,00,16,00,32,00,48,00,64,00,80,00,96,00,00,00
  133. 1330  DATA 9,14,14,54,54,36,60,63,55,54,36,36,12,30,00,00
  134. 1340  DATA 45,45,63,63,54,46,45,63,55,54,45,45,07,00,00,00
  135. 1350  DATA 45,45,63,63,54,46,45,63,55,54,04,00,00,00,00,00
  136. 1360  DATA 09,61,47,54,54,54,47,61,00,00,00,00,00,00,00,00
  137. 1370  DATA 54,54,54,36,36,36,14,14,38,12,12,54,54,54,36,00
  138. 1380  DATA 54,54,54,36,36,36,45,117,246,63,14,14,14,28,00,00