home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disc 40 / Commodore_Disc_40_19xx_-_de.d64 / firecopter (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1990-01-01  |  7.6 KB  |  209 lines

  1. 10 rem fire-copter ==========c64
  2. 20 rem (p) commodore disc
  3. 30 rem =========================
  4. 40 rem (c) by peter bergen  v3.5
  5. 50 rem        hildesheim
  6. 60 rem
  7. 70 rem (v)    a.mittelmeyer v2.0
  8. 80 rem
  9. 90 rem =========================
  10. 91 at=49152:re=49510:gosub92:goto99
  11. 92 if peek(49154)=174thenreturn
  12. 93 sys57812"sysmc",8,0:poke780,0
  13. 94 poke781,254:poke782,191
  14. 95 sys65493:return
  15. 99 gosub1670:fori=1to7:reada:f%(i)=a:next
  16. 100 gosub1900
  17. 110 a=rnd(-ti)
  18. 120 gosub1600:poker53281,0:poke53280,0:printchr$(147);
  19. 130 dimk%(30,15):e=1:n=0:ru=5:la=2
  20. 135 poke53280,0:poke53281,0
  21. 140 printchr$(147);:forb=3to34step6:fora=22to3step-e
  22. 150 poke646,6:sysat,b,a:printzv$"[193][194][195]";:sysat,b,a+e:print"[196][197][198][199]";:poke646,2:sysat,b,a+2:print"****";
  23. 160 forc=eto50:next:next:next
  24. 170 poke646,1:sysat,14,8:printfl$"fire- copter"fo$;:fora=eto2000:next
  25. 180 printchr$(147);:poke646,5:sysat,12,8:printfl$" bitte warten!"fo$;
  26. 190 poke53280,0:poke53281,0:gosub1080:w=50:gosub1420:gosub1540
  27. 200 t1=0:t2=0:t3=0:w=50:sp=2000:h1=1:v1=1:h=1:v=1:s1=10:s=10:so=100:sc=.06
  28. 210 bo=15:gosub340:goto580
  29. 220 poke646,f%((k%(h,v)+e)/2):sysat,h,v:printrn$" "rf$;:return
  30. 230 b=s+e:a=bo
  31. 240 gosub560
  32. 250 poke56322,244:jo=peek(56320):poke56322,255
  33. 251 ifjo=110andw>3thenw=w-e:sc=sc+.001:gosub540:gosub570:b=b+e:a=a+e
  34. 260 ifa<s+2thenu$="eine akute ueberhitzung":gosub340:goto980
  35. 270 ifb>bo-ethenkr=kr+1:goto290
  36. 280 a=a-e:goto240
  37. 290 poke56322,244:jo=peek(56320):poke56322,255
  38. 291 ifjo=127thengoto330
  39. 300 ifw<ethengoto330
  40. 310 w=w-e:sc=sc+.001:gosub540
  41. 320 goto290
  42. 330 fora=s+etobo:sysat,34,a:printb4$::next
  43. 340 poke646,9:fora=bo+2to23:sysat,34,a:printrn$b4$rf$;:next
  44. 350 poke646,1:sysat,34,24:print"[205][205][205][205]";:return
  45. 360 poke646,6:forb=s+etobo-e:gosub570:next:goto290
  46. 370 poke646,1:fora=21tosstep-e:sysat,35,a:print"[200][201]";:sysat,35,a+e:print"[202][203]";:sysat,35,a+2:printb2$;
  47. 380 next
  48. 390 gosub520:u$="eine luftraumueberschreitung":return
  49. 400 poke646,6:fora=s-etobo+e:sysat,34,a:printb4$;:sysat,34,a+e:printzv$"[193][194][195]";
  50. 410 sysat,34,a+2:print"[196][197][198][199]";:nexta:poke646,2:forb=a+2toa-2step-e
  51. 420 sysat,34,b:print"****";:forc=eto200:next:next:gosub530
  52. 430 u$="treibstoffmangel":return
  53. 440 gosub520:u$="eine zu harte landung":return
  54. 450 poke646,9:sysat,34,bo:printrn$b4$;:sysat,34,bo+e:printb4$rf$;:return
  55. 460 poke646,9:a=21
  56. 470 sysat,35,a:printrn$"[209]";:sysat,35,a+e:print"[208]";:sysat,35,a+2:print" "rf$;:gosub530
  57. 480 ifa<s+ethenreturn
  58. 490 a=a-e:sysat,35,a:printrn$"[207]";:sysat,35,a+e:print"[210]";:sysat,35,a+2:print" "rf$;:gosub530
  59. 500 ifa<s+ethenreturn
  60. 510 a=a-e:goto470
  61. 520 poke646,2:fora=s-etos+2:sysat,34,a:print"****";:next
  62. 530 fort=1to500:next:return
  63. 540 poke646,1:sysat,8,22:printright$("   "+str$(w),3):poke646,6:return
  64. 550 poke646,1:sysat,18,22:printp2:return
  65. 560 poke646,2:sysat,34,a:print"****";:return
  66. 570 poke646,6:sysat,34,b:print"[206][206][206][206]";:return
  67. 580 gosub220
  68. 590 ifvu=1thenvu=0:gosub230
  69. 600 poke56322,244:jo=peek(56320):poke56322,255
  70. 601 ifjo=110thengosub360
  71. 610 ifjo=123thent1=t1-.03
  72. 620 ifjo=119thent1=t1+.03
  73. 630 ifjo=125thent2=t2+.03
  74. 640 ifjo=126thent2=t2-.03
  75. 650 ifjo=111thent3=t3-sc:sp=sp-5
  76. 660 ift1>.8thent1=.8
  77. 670 ift2>.8thent2=.8
  78. 680 ift3<-.6thent3=-.6
  79. 690 h1=h1+t1:v1=v1+t2:s1=s1+t3:h=int(h1+.5):v=int(v1+.5):s=int(s1+.5):t3=t3+.02
  80. 700 sp=sp-.2
  81. 710 ifh<e orv<ethengosub370:goto980
  82. 720 ifh>30thenh=30:gosub220:gosub370:goto980
  83. 730 ifv>15thenv=15:gosub220:gosub370:goto980
  84. 740 ifk%(h,v)=14thenvu=1:k%(h,v)=k%(h-e,v)
  85. 750 poke646,1:sysat,h,v:printrn$"*"rf$;
  86. 760 bo=24-k%(h,v)
  87. 770 sysat,34,bo-2:printb4$;:sysat,34,bo-e:printb4$;
  88. 780 poke646,9:sysat,34,bo:printrn$b4$;:sysat,34,bo+e:printb4$rf$;:poke646,6
  89. 790 sysat,34,s-2:printb4$;:sysat,34,s-e:printzv$"[193][194][195]";:sysat,34,s:print"[196][197][198][199]";:sysat,34,s+e:printb4$rf$;
  90. 800 ifs>bo-2thengoto860
  91. 810 ifs<3thengosub370:goto980
  92. 820 sysat,2,20
  93. 830 printright$("    "+str$(int(t1*50+.5)),5);
  94. 831 printright$("    "+str$(int(t2*50+.5)),5);
  95. 832 printright$("    "+str$(int(t3*50+.5)),5);
  96. 833 printright$("    "+str$(int(sp)),5)
  97. 840 ifsp<nthengosub400:goto980
  98. 850 goto580
  99. 860 poke198,0
  100. 870 ift1>.02ort1<-.02ort2>.02ort2<-.02ort3>.2thengosub440:goto980
  101. 880 gosub450
  102. 890 ifnot(h=eorh=30)then930
  103. 900 ifnot(v=eorv=15)then930
  104. 910 w=50:sc=.06:p2=p2+p1:p1=0:gosub540:gosub550
  105. 920 ifkr=ruandp5=ethenp5=0:goto950
  106. 930 ifh=p3andv=p4thengosub460:p1=e:p5=1:gosub550:p3=0:p4=0:sysat,24,20:printb4$b$;
  107. 940 gosub530:t1=n:t2=n:t3=t3-.6:sp=sp-20:goto580
  108. 950 printchr$(147);:poke646,1:sysat,2,8:printrf$"sie haben ihren auftrag erfolgreich";
  109. 960 print,c4$c3$"beendet. fliegen sie nun zu ihrem":printc4$c3$"naechsten einsatzort!"
  110. 970 fora=1to2000:next:ks=ks+kr:ru=ru+2:kr=0:goto140
  111. 980 printchr$(147);:poke646,5:sysat,e,5:print"der einsatz wurde abgebrochen, weil "b4$;
  112. 990 printc4$;u$;" vorlag."
  113. 1000 poke646,2:printc4$c4$c4$" ihre bisherigen leistungen:"
  114. 1010 printc4$" kraterloeschungen :";ks+kr:print" gerettete personen:";p2
  115. 1020 poke646,5:printc4$c4$c4$" moechten sie dennoch den naechsten"
  116. 1030 printc4$" einsatz fliegen? (j=ja/n=nein)"
  117. 1040 geta$
  118. 1050 ifa$="j"thenprintchr$(147);:kr=0:ks=0:p2=0:p1=0:goto180
  119. 1060 ifa$="n"thennew
  120. 1070 goto1040
  121. 1080 ifla=1thengosub1270:la=2:goto1090
  122. 1081 gosub1120:la=1
  123. 1090 forb=eto15:fora=eto30:readc:k%(a,b)=c:next:next
  124. 1100 forb=eto15:fora=eto30:poke646,f%((k%(a,b)+e)/2):sysat,a,b:printrn$" "rf$;:next:next
  125. 1110 return
  126. 1120 sysre:data5,4,5,5,6,6,5,4,3,2,2,2,2,2,2,3,4,5,6,7,8,9,8,7,7,6,5,4,4,3
  127. 1130 data4,5,6,6,7,7,6,5,4,3,2,2,2,2,3,4,5,6,7,8,9,10,9,8,7,6,6,5,5,4
  128. 1140 data5,6,7,7,7,8,7,6,5,4,3,2,2,3,4,5,6,7,8,9,10,11,10,9,8,7,6,5,4,3
  129. 1150 data6,7,8,8,8,9,8,7,6,5,4,3,3,4,5,6,7,8,9,10,11,12,11,10,9,8,7,6,5,4
  130. 1160 data7,8,9,9,9,10,9,8,7,6,5,4,4,5,6,7,8,9,10,11,10,11,10,9,8,8,7,6,5,4
  131. 1170 data8,9,9,9,10,11,10,9,8,7,6,5,5,6,7,8,7,8,9,10,10,11,10,9,8,7,6,5,4,4
  132. 1180 data8,9,9,10,11,12,11,10,9,8,7,6,6,5,6,7,6,7,8,9,10,11,10,9,9,8,7,6,5,5
  133. 1190 data9,10,11,12,13,12,11,10,9,8,7,6,5,6,6,5,6,7,8,9,10,9,9,8,7,6,5,5,6,6
  134. 1200 data8,9,10,11,12,12,12,11,10,9,8,7,6,6,7,6,5,5,6,7,8,9,10,9,8,7,6,5,6,6
  135. 1210 data7,8,9,10,11,11,11,10,9,8,7,6,6,5,6,5,6,5,5,6,7,8,9,10,9,8,7,6,7,7
  136. 1220 data6,7,8,9,10,10,10,9,8,7,6,5,5,6,5,5,5,4,5,6,7,8,9,10,10,9,8,7,8,8
  137. 1230 data5,6,7,8,9,9,9,8,7,6,5,4,4,5,4,4,4,3,4,5,6,7,8,9,10,10,9,8,9,9
  138. 1240 data5,5,6,7,8,8,9,8,7,6,5,4,3,4,3,3,4,4,5,6,7,8,9,9,10,11,10,9,10,10
  139. 1250 data4,4,5,6,7,8,8,7,6,5,4,3,3,3,2,2,3,4,5,6,7,8,9,8,9,10,11,10,11,11
  140. 1260 data3,3,4,5,6,7,7,6,6,5,4,3,2,2,2,2,3,4,5,5,6,7,7,7,8,9,10,11,12,11
  141. 1270 sysre:data7,7,7,7,7,8,9,10,9,8,7,6,5,4,3,2,2,3,4,5,4,3,2,2,2,2,2,2,3,4
  142. 1280 data8,7,7,7,8,9,10,11,10,9,8,7,6,5,4,3,3,4,5,6,5,4,3,2,2,2,2,2,3,3
  143. 1290 data8,8,7,8,9,10,11,12,11,10,9,8,7,6,5,4,4,5,6,7,6,5,4,3,2,2,2,2,2,2
  144. 1300 data8,8,8,9,10,11,12,13,12,11,10,9,8,7,6,5,5,6,7,8,7,6,5,4,3,2,2,2,2,2
  145. 1310 data7,8,8,8,9,10,11,12,11,10,9,8,7,6,5,5,6,7,8,9,8,7,6,5,4,3,2,2,2,2
  146. 1320 data7,7,8,8,8,9,10,11,10,9,8,7,6,5,5,6,7,8,9,10,9,8,7,6,5,4,3,2,2,2
  147. 1330 data7,7,8,8,8,8,9,10,9,8,7,6,5,5,6,7,8,9,10,11,10,9,8,7,6,5,4,3,3,3
  148. 1340 data7,8,8,8,9,8,8,9,8,7,6,5,5,6,7,8,9,10,11,12,11,10,9,8,7,6,5,4,4,4
  149. 1350 data8,8,8,9,10,9,8,8,7,6,5,5,6,7,8,9,10,11,12,13,12,11,10,9,8,7,6,5,5,5
  150. 1360 data8,8,9,10,11,10,9,8,7,6,5,5,5,6,7,8,9,10,11,12,11,10,9,8,7,6,5,5,6,6
  151. 1370 data8,9,10,11,12,11,10,9,8,7,6,5,5,5,6,7,8,9,10,11,10,9,9,8,7,6,6,6,6,7
  152. 1380 data9,10,11,12,13,12,11,10,9,8,7,6,5,5,5,6,7,8,9,10,9,9,10,9,8,7,6,7,7,7
  153. 1390 data8,9,10,11,12,11,10,9,8,7,6,5,4,4,4,5,6,7,8,9,9,10,11,10,9,8,7,7,7,7
  154. 1400 data8,8,9,10,11,10,9,8,7,6,5,4,3,3,4,5,6,7,8,9,10,11,12,11,10,9,8,7,7,7
  155. 1410 data8,8,8,9,10,9,8,7,6,5,4,3,3,4,5,6,7,8,9,10,11,12,13,12,11,10,9,8,7,7
  156. 1420 poke646,1:fora=nto24:sysat,33,a:printrf$"[204]"b4$"[204]";:next
  157. 1430 sysat,33,n:print"[218][205][205][205][205][218]";:sysat,33,24:print"[218][205][205][205][205][218]";
  158. 1440 poke646,5:fora=18to23:sysat,e,a:printrn$bl$rf$;:next
  159. 1450 sysat,2,19:printb2$"l/r"b2$"o/u"b3$"fg"b3$"ta ";:sysat,2,20:printleft$(bl$,21);
  160. 1460 poke646,5:sysat,2,n:print"a b c d e f g h i j k l m n o";
  161. 1470 b=e:sysat,n,2:fora=3to15step2:poke214,a:printchr$(b+48):b=b+e:next
  162. 1480 poke646,5:sysat,2,22:printb2$"lf:"b3$b3$"per:"b3$b3$;:gosub540:gosub550
  163. 1490 gosub1560
  164. 1500 p3=hz:p4=vz
  165. 1510 poke646,5:sysat,24,19:print" m/p ";:sysat,24,20:printb4$b$;:poke646,2
  166. 1520 b=int(p3/2+.5)+64
  167. 1530 sysat,25,20:print;chr$(b);int(p4/2+.5):return
  168. 1540 fora=etoru:gosub1560
  169. 1550 k%(hz,vz)=14:poke646,10:sysat,hz,vz:printrn$"o"rf$;:next:return
  170. 1560 hz=int(rnd(e)*27)+2:vz=int(rnd(e)*12)+2
  171. 1570 ifk%(hz,vz)=14ork%(hz-1,vz)=14thengoto1560
  172. 1580 return
  173. 1600 c=2559:gosub1680
  174. 1610 reada:ifa=-1thenreturn
  175. 1620 c=c+1:pokec,a
  176. 1630 goto1610
  177. 1670 sysre:data 5,13,7,8,9,12,15
  178. 1680 sysre:data15,96,176,176,184,185,255,191
  179. 1690 data255,3,15,63,112,230,230,247
  180. 1700 data255,0,128,224,16,8,38,35
  181. 1710 data192,0,0,0,0,0,0,192
  182. 1720 data191,126,121,59,59,11,1,0
  183. 1730 data255,0,255,255,254,254,255,31
  184. 1740 data255,0,254,63,31,31,63,255
  185. 1750 data248,254,31,239,231,230,232,0
  186. 1760 data1,1,3,3,3,7,7,7
  187. 1770 data128,128,192,192,192,224,224,224
  188. 1780 data7,7,7,15,31,29,24,16
  189. 1790 data224,224,224,240,248,184,24,8
  190. 1800 data24,24,24,24,24,24,24,24
  191. 1810 data0,0,0,255,255,0,0,0
  192. 1820 data136,170,34,0,136,170,34,0
  193. 1830 data2,50,50,50,2,124,184,184
  194. 1840 data184,128,184,76,68,72,76,192
  195. 1850 data128,152,152,152,128,124,58,58
  196. 1860 data58,2,56,36,68,36,100,2
  197. 1870 data-1
  198. 1880 rem nachspann ===========
  199. 1890 rem farbcodes/steuercodes
  200. 1900 c4$=chr$(017):rn$=chr$(018)
  201. 1910 c3$=chr$(029):fl$=chr$(130)
  202. 1920 fo$=chr$(132):rf$=chr$(146)
  203. 1930 b$=" ":b2$=b$+b$:b3$=b2$+b$:b4$=b3$+b$
  204. 1940 bl$=b4$+b4$:bl$=bl$+bl$+bl$+b4$+b2$
  205. 1950 rem * zeichensatz/graphik
  206. 1960 zv$=chr$(192)
  207. 1970 return
  208. 1980 rem =====================
  209.