home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / commodore-users-of-norman / CUON_13_(11-1984).d64 / epidemic (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  4KB  |  178 lines

  1. 100 REM C64 MODS BY WIM 3/25/83
  2. 120 I=RND(-RND(0)):POKE53272,21:POKE53280,6:POKE53281,7:PRINT"[144]"
  3. 140 T$=""
  4. 150 QP=197:QA=73
  5. 160 IG=160:VI=215:CO=209:GI=170
  6. 170 GOTO1360
  7. 180 PRINTCHR$(147)"HOW MANY ISLANDERS (<=100)?";:GOSUB1720:NP=VAL(Z1$)
  8. 190 IFNP=0THEN180
  9. 200 IFNP>100THENPRINT"[145][145]";:GOTO180
  10. 210 PRINT"HOW MANY INFECTED AT START?";:GOSUB1720:NI=VAL(Z1$)
  11. 220 IFNI=0THEN210
  12. 230 IFNI>NPTHENPRINT"[145][145]";:GOTO210
  13. 240 PRINT"CONTAGION TIME (DAYS)?";:GOSUB1720:CT=VAL(Z1$)
  14. 250 IFCT=0THENPRINT"[145][145]";:GOTO240
  15. 260 RESTORE
  16. 270 PRINTCHR$(147):FORI=1TO18:READIL,IR
  17. 280 FORJ=ILTOIR:POKEJ,IG:NEXT:NEXT
  18. 290 PRINT"[215][146]=UNINFECTED   [209][146]=CONTAGIOUS   *[146]=IMMUNE"
  19. 300 PRINT"CONTAGION"
  20. 310 PRINT"TIME "CT;
  21. 320 IFCT>1THENPRINT" DAYS":GOTO340
  22. 330 PRINT" DAY"
  23. 340 REM
  24. 350 POKEQA+2,PEEK(QA):POKEQA+3,PEEK(QA+1):Z9=FRE(0)
  25. 360 DIMPP(NP),PG(NP),DC(NP),NI(50),IM(50)
  26. 370 FORI=1TONP:PG(I)=VI:NEXT
  27. 380 FORI=1TONI:PG(I)=CO:NEXT
  28. 390 FORI=1TONP:DC(I)=0:NEXT
  29. 400 FORI=1TONI:DC(I)=CT:NEXT
  30. 410 FORI=1TONP
  31. 420 PP(I)=INT(690*RND(1)+1157):IFPEEK(PP(I))<>IGTHEN420
  32. 430 POKEPP(I),PG(I):NEXT
  33. 440 ND=0
  34. 450 IM=0:PRINT""TAB(7)NP-NI-IM;TAB(20)NI;TAB(30)IM
  35. 460 PRINT"DAY";ND
  36. 470 ND=ND+1:NI=0:IM=0
  37. 480 FORI=1TONP
  38. 490 REM
  39. 500 IF(PEEK(PP(I))=CO)AND(PG(I)=VI)THENDC(I)=CT
  40. 510 PG(I)=PEEK(PP(I))
  41. 520 ONINT(9*RND(1)+1)GOSUB900,910,920,930,940,950,960,970,980
  42. 530 REM
  43. 540 IFPG(I)=COTHENGOSUB1060
  44. 550 REM
  45. 560 IFPG(I)=VITHENGOSUB1160
  46. 570 REM
  47. 580 IFPG(I)=COTHENDC(I)=DC(I)-1
  48. 590 REM
  49. 600 IFDC(I)<0THENPG(I)=GI:POKEPP(I),GI
  50. 610 IFPEEK(PP(I))=COTHENNI=NI+1
  51. 620 IFPEEK(PP(I))=GITHENIM=IM+1
  52. 630 NEXT
  53. 640 IFND<=50THENNI(ND)=NI:IM(ND)=IM
  54. 650 PRINT""TAB(7)NP-NI-IM"[157]  ";TAB(20)NI"[157]  ";TAB(30)IM"[157]  "
  55. 660 IFNI>0THEN460
  56. 670 PRINTT$;:GOSUB1250
  57. 680 PRINTCHR$(147)"DAY"TAB(5)"INFECTION":PRINT
  58. 690 FORND=1TO50
  59. 700 FORWT=1TO150:NEXT
  60. 710 PRINTND;TAB(4);
  61. 720 PRINTNP-NI(ND)-IM(ND);NI(ND);IM(ND):PRINT
  62. 730 IFNP-NI(ND)-IM(ND)=0THEN750
  63. 740 FORI=1TONP-NI(ND)-IM(ND):PRINT"[215]";:NEXT
  64. 750 IFNI(ND)=0THEN770
  65. 760 FORI=1TONI(ND):PRINT"[209]";:NEXT
  66. 770 IFIM(ND)=0THEN790
  67. 780 FORI=1TOIM(ND):PRINT"*";:NEXT
  68. 790 PRINT
  69. 800 IFNI(ND)=0THEN820
  70. 810 PRINT:NEXTND
  71. 820 PRINT"LIKE TO SEE THE CHART AGAIN (Y/N)?";:GOSUB1720:Q$=Z1$
  72. 830 IFQ$=""THENPRINT"[145][145]";:GOSUB820
  73. 840 IFLEFT$(Q$,1)="Y"THEN680
  74. 850 PRINTCHR$(147)LEFT$(T$,10)"WANT ANOTHER TRY (Y/N)?";:GOSUB1720:Q$=Z1$
  75. 860 IFQ$=""THEN850
  76. 870 IFLEFT$(Q$,1)="Y"THENRUN
  77. 880 END
  78. 890 REM
  79. 900 MV=39:GOSUB1000:RETURN
  80. 910 MV=40:GOSUB1000:RETURN
  81. 920 MV=41:GOSUB1000:RETURN
  82. 930 MV=-1:GOSUB1000:RETURN
  83. 940 MV=0:GOSUB1000:RETURN
  84. 950 MV=1:GOSUB1000:RETURN
  85. 960 MV=-41:GOSUB1000:RETURN
  86. 970 MV=-40:GOSUB1000:RETURN
  87. 980 MV=-39:GOSUB1000:RETURN
  88. 990 REM
  89. 1000 IFPEEK(PP(I)+MV)<>IGTHENRETURN
  90. 1010 PG(I)=PEEK(PP(I))
  91. 1020 POKEPP(I),IG
  92. 1030 PP(I)=PP(I)+MV
  93. 1040 POKEPP(I),PG(I):RETURN
  94. 1050 REM
  95. 1060 IFPEEK(PP(I)-41)=VITHENPOKEPP(I)-41,CO
  96. 1070 IFPEEK(PP(I)-40)=VI THEN POKEPP(I)-40,CO
  97. 1080 IFPEEK(PP(I)-39)=VI THEN POKEPP(I)-39,CO
  98. 1090 IFPEEK(PP(I)- 1)=VI THEN POKEPP(I)- 1,CO
  99. 1100 IFPEEK(PP(I)+ 1)=VI THEN POKEPP(I)+ 1,CO
  100. 1110 IFPEEK(PP(I)+39)=VI THEN POKEPP(I)+39,CO
  101. 1120 IFPEEK(PP(I)+40)=VITHEN POKEPP(I)+40,CO
  102. 1130 IFPEEK(PP(I)+41)=VITHEN POKEPP(I)+41,CO
  103. 1140 RETURN
  104. 1150 REM
  105. 1160 IFPEEK(PP(I)-41)=COTHENPOKEPP(I),CO
  106. 1170 IFPEEK(PP(I)-40)=COTHEN POKEPP(I),CO
  107. 1180 IFPEEK(PP(I)-39)=COTHENPOKEPP(I),CO
  108. 1190 IFPEEK(PP(I)- 1)=COTHENPOKEPP(I),CO
  109. 1200 IFPEEK(PP(I)+ 1)=COTHENPOKEPP(I),CO
  110. 1210 IFPEEK(PP(I)+39)=COTHENPOKEPP(I),CO
  111. 1220 IFPEEK(PP(I)+40)=COTHENPOKEPP(I),CO
  112. 1230 IFPEEK(PP(I)+41)=COTHENPOKEPP(I),CO
  113. 1240 RETURN
  114. 1250 PRINT"         PRESS ANY KEY TO CONTINUE"
  115. 1260 GETQ$:IFQ$=""THEN1260
  116. 1270 RETURN
  117. 1280 REM
  118. 1290 REM
  119. 1300 REM
  120. 1310 REM
  121. 1320 REM
  122. 1330 REM
  123. 1340 REM
  124. 1350 REM
  125. 1360 PRINT"[147]":FORI=1024TO1063:POKEI,224:POKEI+960,224:NEXT
  126. 1370 FORI=1064TO1944STEP40:POKEI,224:POKEI+39,224:NEXT
  127. 1380 PRINT""
  128. 1390 PRINTTAB(9)"  [207][163] [164][167]      [204]
  129. 1400 [153][163]9)"  (null)TOSQRSQRSQRSQRSQRSQR(null)(null)(null)(null)(null)(null)(null)(null)
  130. 1410 PRINT""TAB(14)"EPIDEMIC"
  131. 1420 PRINT""TAB(25)"ANDY GAMBLE"
  132. 1430 PRINTLEFT$(T$,20)TAB(5);"DO YOU NEED INSTRUCTIONS (Y/N)?";
  133. 1431 GOSUB1720:Q$=Z1$
  134. 1440 IFQ$=""THEN1430
  135. 1450 IFLEFT$(Q$,1)<>"Y"THEN180
  136. 1460 REM
  137. 1470 PRINTCHR$(147)"AN EPIDEMIC HAS BROKEN OUT ON A SMALL "
  138. 1480 PRINT"ISLAND. THE DISEASE IS NOT FATAL, AND"
  139. 1490 PRINT"ONCE CONTRACTED PROVIDES IMMUNITY FOR LIFE."
  140. 1500 PRINT:PRINT"YOU ARE ALLOWED TO CHOOSE CERTAIN "
  141. 1510 PRINT"INITIAL CONDITIONS:":PRINT:PRINT:PRINTTAB(5)"THE ISLAND POPULATION"
  142. 1520 PRINT:PRINTTAB(5)"THE NUMBER ORIGINALLT INFECTED"
  143. 1530 PRINT:PRINTTAB(5)"THE NUMBER OF DAYS FOR WHICH THE"
  144. 1540 PRINTTAB(5)"DISEASE IS CONTAGIOUS - THIS IS"
  145. 1550 PRINTTAB(5)"ALSO THE DURATION OF THE DISEASE."
  146. 1560 PRINT:PRINT:PRINT"THE ISLANDERS WILL MOVE ABOUT RANDOMLY,"
  147. 1570 PRINT"INFECTING OTHERS IF CONTAGIOUS.";
  148. 1580 PRINT"THOSE WHO ARE IMMUNE WILL NOT BE INFECTED. "
  149. 1590 PRINT: GOSUB1250
  150. 1600 PRINTCHR$(147)"THIS WILL CONTINUE UNTIL THE DISEASE HAS RUN ITS COURSE ";
  151. 1610 PRINT"(UNTIL THEY ARE NO MORE INFECTED PERSONS)."
  152. 1620 PRINT:PRINT"YOU WILL THEN BE GIVEN A DAY-BY-DAY BAR CHART OF THE";
  153. 1630 PRINT"HISTORY OF THE EPIDEMIC, "
  154. 1640 PRINT"UP TO A MAXIMUM OF 50 DAYS."
  155. 1650 PRINT:GOSUB1250
  156. 1660 GOTO180
  157. 1670 DATA1158,1167,1196,1211
  158. 1680 DATA1234,1222,1271,1296,1306,1339,1346,1379,1386,1418
  159. 1690 DATA1427,1459,1469,1500,1510,1541,1553,1581
  160. 1700 DATA1593,1618,1632,1654,1673,1693,1715,1731,1757,1771
  161. 1710 DATA1800,1812,1841,1848
  162. 1720 Z$="":Z1$=""
  163. 1730 PRINT"[166][157]";:FORI=1TO50:NEXTI
  164. 1740 PRINT" [157]";:FORI=1TO50:NEXTI
  165. 1750 GETZ$:IFZ$=""THEN1730
  166. 1760 IFZ$<>CHR$(20)THEN1810
  167. 1770 IFZ$=""THEN1730
  168. 1780 ZZ=LEN(Z1$):IFZZ<1THEN1730
  169. 1790 Z1$=LEFT$(Z1$,ZZ-1):PRINT"[157]";
  170. 1800 GOTO1730
  171. 1810 IFZ$=CHR$(13)ORZ$=CHR$(141)THEN1850
  172. 1820 PRINTZ$;
  173. 1830 Z1$=Z1$+Z$
  174. 1840 GOTO1730
  175. 1850 FORI=1TO10:GETZ$:NEXTI
  176. 1860 PRINT
  177. 1870 RETURN
  178.