home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette: Best of 1988 / BESTOF88.D64 / fire! (.txt) < prev    next >
Commodore BASIC  |  2022-09-20  |  5KB  |  168 lines

  1. 10 rem copyright 1988 compute! publications, inc. - all rights reserved
  2. 20 poke56,48:poke55,0:clr:poke53280,15:poke53281,15
  3. 30 print"[147][144]   copyright 1988 compute! pub., inc."
  4. 40 printtab(10)"all rights reserved"
  5. 50 fori=1to191:reada:x=x+a:next
  6. 60 ifx<>17240thenprint"error in data statements.":stop
  7. 70 restore:fori=679to725:reada:pokei,a:next:x=rnd(-ti)
  8. 80 data 120,165,1,41,251,133,1,169,208,133
  9. 90 data 252,169,48,133,254,169,0,133,251,133
  10. 100 data 253,162,8,160,0,177,251,145,253,200
  11. 110 data 208,249,230,252,230,254,202,208,242,165
  12. 120 data 1,9,4,133,1,88,96
  13. 130 x=0:forn=12288to12298:x=x+peek(n):next:ifx<>822thengosub1460
  14. 140 dim p%(9):poke53272,29
  15. 150 d$="":tu$="020102019352517271727126"
  16. 160 bf$="@@@@@@@@@@@@@@@":fl$="aaaaaaaaaaaaaaa"
  17. 170 uu$="whoops...uh-oh... eek!!!   oh, no!  ouch!!!  look out!stop!    "
  18. 180 uu$=uu$+"drop!    roll!    help!!!  "
  19. 190 b$="[213][192][192][192][192][192][192][192][192][192][201][157][157][157][157][157][157][157][157][157][157][157][221]         [221][157][157][157][157][157][157][157][157][157][157][157][202][192][178][192][192][192][192][192][192][192][203]"
  20. 200 b$=b$+"[157][157][157][157][157][157][157][157][157][157][157][192][192][203]"
  21. 210 bs$="           [157][157][157][157][157][157][157][157][157][157][157]           [157][157][157][157][157][157][157][157][157][157][157]           "
  22. 220 bs$=bs$+"[157][157][157][157][157][157][157][157][157][157][157]   "
  23. 230 s=54272:forn=sto54295:poken,0:next:poken,15:rem setup sound
  24. 240 pokes+2,0:pokes+3,8:pokes+5,15:pokes+6,255
  25. 250 pp=4000:forn=0to9:p%(n)=pp:pp=pp*2^(1/12):next
  26. 260 rem init sprites
  27. 270 x1=53248:y1=53249:x2=53250:y2=53251
  28. 280 pokex1,0:pokey1,170:pokex2,0:pokey2,184:poke53264,3
  29. 290 poke53287,15:poke53288,15:poke53277,1:poke53271,1:poke2040,14:poke2041,13
  30. 300 rem pick type
  31. 310 print"[147][144]pick the type of problems you want:"
  32. 320 print"(1) addition":print"(2) subtraction"
  33. 330 print"(3) multiplication":print"(4) division":poke198,0
  34. 340 gett$:ift$<"1"ort$>"4"then340
  35. 350 rem pick level
  36. 360 print"[147]pick the level of difficulty:"
  37. 370 print"(1) beginner":print"(2) intermediate"
  38. 380 print"(3) einstein":poke198,0
  39. 390 getwh$:ifwh$<"1"orwh$>"3"then390
  40. 400 wh=15+(4-val(wh$))*15
  41. 410 print"[147]you will have"wh"seconds to put out the fire...."
  42. 420 print"press return[146] to start....":poke198,0
  43. 430 geta$:ifa$<>chr$(13)then430
  44. 440 rem main loop
  45. 450 print"[147]":gosub570:ti$="000000":pr=1
  46. 460 gosub810
  47. 470 printleft$(d$,6+pr)spc(9)"[144] "x$" "o$" "y$" "
  48. 480 fl=0:gosub980
  49. 490 iffl=1thengosub1180:goto520
  50. 500 pr=pr+1:ifpr<11then460
  51. 510 gosub1290
  52. 520 print"[129]play again?  (y/n)":poke198,0
  53. 530 geta$:ifa$="n"thenpoke53269,0:print"[147]":end
  54. 540 ifa$<>"y"then530
  55. 550 poke53269,0:print"[147]":goto260
  56. 560 rem init scene
  57. 570 gosub1390:printleft$(d$,17)spc(5)"[151]   a           "
  58. 580 printleft$(d$,7);:forn=1to10:printspc(5)"[151]"fl$:next:de=60:gosub1140
  59. 590 forn=10to1step-1:pokes+4,129:forz=4to20:pokes+1,z:next
  60. 600 printleft$(d$,n+6)spc(5)"[129]"bf$:pokes+1,0:de=5:gosub1140
  61. 610 printleft$(d$,n+3)spc(20)"[144]"b$
  62. 620 printleft$(d$,n+4)spc(21)"[149]"mid$(uu$,(11-n-1)*9+1,9):de=20:gosub1140
  63. 630 printleft$(d$,n+3)spc(20)bs$:next
  64. 640 rem enter truck
  65. 650 pokes+4,65:poke53264,3:poke53269,3:pokex1,140:pokex2,140:poke53287,7
  66. 660 poke53288,2:forx=400to200step-2:xx=x:ifxx>255thenxx=xx-255
  67. 670 ifxx>=254thenpoke53264,2
  68. 680 pokex1,xx:xx=x+32:ifxx>255thenxx=xx-255
  69. 690 ifxx>=254thenpoke53264,0
  70. 700 pokex2,xx:sn=sn+1:ifsn<7thenpokes+1,30
  71. 710 ifsn>6thenpokes+1,23
  72. 720 ifsn>12thensn=0
  73. 730 next:pokes+1,0
  74. 740 rem ladder up
  75. 750 forn=18to7step-1:printleft$(d$,n)spc(24)"[152]a":pokes+1,240-10*n:next
  76. 760 pokes+1,0:pokes+4,16
  77. 770 rem fireman up
  78. 780 pokex2,208:forn=164to92step-1:pokey2,n:pokes+1,180-n:next:pokes+1,0
  79. 790 pokes+4,16:return
  80. 800 rem generate problem
  81. 810 onval(t$)gosub840,860,890,910
  82. 820 x$=mid$(str$(x),2):y$=mid$(str$(y),2):return
  83. 830 rem addition
  84. 840 gosub940:o$="+":aq$=str$(x+y):gosub960:return
  85. 850 rem subtraction
  86. 860 gosub940:ify>xthen860
  87. 870 k=x+y:aq$=str$(x):gosub960:x=k:o$="-":return
  88. 880 rem multiplication
  89. 890 gosub940:o$="x":aq$=str$(x*y):gosub960:return
  90. 900 rem division
  91. 910 gosub940:ifx=0ory=0then910
  92. 920 k=x*y:aq$=str$(x):gosub960:x=k:o$="/":return
  93. 930 rem generate two values
  94. 940 x=int(rnd(1)*10):y=int(rnd(1)*10):return
  95. 950 rem prune string
  96. 960 aq$=mid$(aq$,2):return
  97. 970 rem get answer
  98. 980 an$="":poke198,0
  99. 990 geta$:printleft$(d$,22)"time: "right$(ti$,2)
  100. 1000 ifval(right$(ti$,3))>whthenfl=1:return
  101. 1010 ifa$=chr$(13)then1040
  102. 1020 ifa$<"0"ora$>"9"then990
  103. 1030 an$=an$+a$:printleft$(d$,pr+6)spc(21)"[129]"an$:iflen(an$)<3then990
  104. 1040 ifan$=aq$thengosub1090:return
  105. 1050 printleft$(d$,pr+6)spc(30)"[144]no!!!":pokes+4,33:pokes+1,10:de=20:gosub1140
  106. 1060 pokes+1,0:pokes+4,32:printleft$(d$,pr+6)spc(30)"     "
  107. 1070 printleft$(d$,pr+6)spc(21)"   ":goto980
  108. 1080 rem right
  109. 1090 printleft$(d$,pr+6)spc(20)"[154][192][192][192][192]"
  110. 1100 pokes+4,129:pokes+1,90:de=20:gosub1140:pokes+4,128:pokes+1,0
  111. 1110 printleft$(d$,pr+6)spc(20)"    "
  112. 1120 printleft$(d$,pr+6)spc(5)"[151]"fl$:pokey2,peek(y2)+8:return
  113. 1130 rem delays
  114. 1140 tt=ti
  115. 1150 ifti-de<ttthen1150
  116. 1160 return
  117. 1170 rem burn it down
  118. 1180 printleft$(d$,22)"oops... too long!!!":pokes+4,129
  119. 1190 forn=10to1step-1:pokes+1,210-n*20
  120. 1200 printleft$(d$,n+6)spc(5)"[129]"bf$:pokes+1,0:next:de=60:gosub1140
  121. 1210 forn=20to0step-1:pokes+1,n*10
  122. 1220 printleft$(d$,21-n)spc(5)"               ";:next
  123. 1230 printleft$(d$,17)spc(5)"[152] [169][144]            [152][223][146]"
  124. 1240 printleft$(d$,18)spc(5)"[152][169] [144]            [152] [223]"
  125. 1250 printleft$(d$,19)spc(5)"[144][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
  126. 1260 forn=1to8:x=int(rnd(1)*10)+8:y=int(rnd(1)*11)+6
  127. 1270 printleft$(d$,y)spc(x)"@":de=10:gosub1140:next:return
  128. 1280 rem all 10
  129. 1290 pokes+4,65:forn=1tolen(tu$)/2:p$=mid$(tu$,(n-1)*2+1,2)
  130. 1300 p=val(left$(p$,1)):de=val(right$(p$,1))*3
  131. 1310 p=p%(p):p1=int(p/256):p2=p-256*p1
  132. 1320 pokes,p2:pokes+1,p1:forp=1tode*20:next
  133. 1330 pokes,0:pokes+1,0:forp=1tode:next:next:pokes+4,64
  134. 1340 printleft$(d$,5)spc(20)""b$
  135. 1350 printleft$(d$,6)spc(21)"yay!!!":pokes+4,129:forn=0to15step.1
  136. 1360 poke54296,n:pokes+1,10:next:forn=15to1step-.05:poke54296,n:next
  137. 1370 pokes+1,0:pokes+4,128:poke54296,15:return
  138. 1380 rem show level
  139. 1390 print""spc(20)"[149]level:";
  140. 1400 ifwh$="1"thenprint" [129]  beginner   "
  141. 1410 ifwh$="2"thenprint" [129]  intermed.  "
  142. 1420 ifwh$="3"thenprint" [129]  einstein   "
  143. 1430 print""spc(20)"[149]time limit:";
  144. 1440 print"[129]"wh"[157] sec. ":return
  145. 1450 rem define sprites & 2 chars
  146. 1460 forn=0to64*2-1:reada:poke832+n,a:next
  147. 1470 sys679:forn=0to15:reada:poke12288+1024+n,a:next:return
  148. 1480 rem sprite data
  149. 1490 data0,30,0,0,63,0,0,127
  150. 1500 data224,0,18,16,0,34,0,0
  151. 1510 data18,0,0,12,0,0,30,0
  152. 1520 data0,63,0,7,255,0,7,239
  153. 1530 data0,7,223,0,0,127,0,0
  154. 1540 data127,0,0,127,0,0,127,0
  155. 1550 data0,54,0,0,54,0,0,54
  156. 1560 data0,0,54,0,0,126,0,184
  157. 1570 data0,0,0,0,0,0,0,0
  158. 1580 data0,0,0,0,0,0,0,0
  159. 1590 data0,0,0,0,0,0,0,0
  160. 1600 data0,0,0,0,0,0,30,0
  161. 1610 data0,50,255,254,98,85,84,194
  162. 1620 data85,84,255,255,254,255,137,255
  163. 1630 data255,186,255,243,154,231,204,185
  164. 1640 data153,18,255,164,12,0,24,0
  165. 1650 rem char data
  166. 1660 data146,214,215,247,247,254,252,060
  167. 1670 data255,129,129,129,129,129,129,255
  168.