home *** CD-ROM | disk | FTP | other *** search
/ Generous Efforts of Many / gemcd.zip / GEM.CD.A.po / FEATURES:BEAGLE / BEAGLE.BAG.SHK / BEAGLE.BAG / ELEVATORS.bas < prev    next >
BASIC Source File  |  2000-01-01  |  8KB  |  129 lines

  1. 57  REM <CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>================<CTRL-M>ELEVATORS<CTRL-M>BY BERT KERSEY<CTRL-M>COPYRIGHT C) 1980<CTRL-M>BEAGLE BROS<CTRL-M>=================<CTRL-M> 
  2. 100 Y = 39:Z =  ASC("Q") +128:W =  ASC("W") +128:E =  ASC("E") +128:R =  ASC("R") +128:A =  ASC("A") +128:S =  ASC("S") +128:D =  ASC("D") +128:F =  ASC("F") +128: ONERR  GOTO 63900
  3. 110  GOSUB 32000: GOTO 2000
  4. 190  POKE 0,P
  5. 200  POKE 1,L
  6. 210  CALL MU
  7. 215  FOR I = 1 TO 9: NEXT I
  8. 220  RETURN 
  9. 230  REM === MOVE LOOP ====
  10. 240  FOR X = 1 TO ELNO
  11. 260 K =  PEEK(Q): IF K = 176 +X  THEN MOVE(X) =  -3: GOTO 290
  12. 262  ON X GOTO 265,270,275,280
  13. 265  IF K = Z  THEN MOVE(X) = 0: GOTO 290
  14. 266  IF K = (A)  THEN MOVE(X) = 3
  15. 267  GOTO 290
  16. 270  IF K = W  THEN MOVE(X) = 0: GOTO 290
  17. 271  IF K = S  THEN MOVE(X) = 3
  18. 272  GOTO 290
  19. 275  IF K = E  THEN MOVE(X) = 0: GOTO 290
  20. 276  IF K = D  THEN MOVE(X) = 3
  21. 277  GOTO 290
  22. 280  IF K = R  THEN MOVE(X) = 0: GOTO 290
  23. 281  IF K = F  THEN MOVE(X) = 3
  24. 290 Y = YPSN(X) +MOVE(X): IF Y <40  AND Y >5  THEN YPSN(X) = Y: REM NEW VERTICAL CAR POSITION.
  25. 300  IF MOVE(X) = 0  AND CARCLR(X) < >15  AND LITECLR(Y -MOVE(X)) = 15  THEN  POKE Q +16,0:YPSN(X) = Y -MOVE(X):CARCLR(X) = 15:LITECLR(Y) = BLDG: COLOR= BLDG: VLIN Y -1,Y AT 14: VLIN Y -1,Y AT 17: VLIN Y -1,Y AT 20: PRINT "<CTRL-G>";
  26. 320  IF Y = 6  THEN MOVE(X) = 3
  27. 325  COLOR= 0: VLIN 4,39 AT 3 *X +9: VLIN 4,39 AT 3 *X +10: COLOR= CARCLR(X): VLIN YPSN(X) -2,YPSN(X) AT 3 *X +9: VLIN YPSN(X) -2,YPSN(X) AT 3 *X +10: REM  DRAW NEW CAR
  28. 330  IF YPSN(X) = 39  AND CARCLR(X) = 15  THEN PAS(X) = PAS(X) +1: VTAB 24: HTAB 3 *X +10: PRINT  SPC( PAS(X) <10);PAS(X);:PAS = PAS +1:CARCLR(X) = 9:N = PAS:XNUM = 6:NCLR = 15: GOSUB 390
  29. 370  NEXT : IF K = 160  THEN  GOSUB 2210
  30. 371  REM === CLOCK ===
  31. 372 O = M:M = M +ELNO/16: IF  INT(O) =  INT(M)  THEN 240
  32. 375 FLR = 3 * INT( RND(1) *11) +6: IF LITECLR(FLR) = BLDG  THEN LITECLR(FLR) = 15: COLOR= 15: VLIN FLR -1,FLR AT 14: VLIN FLR -1,FLR AT 17: VLIN FLR -1,FLR AT 20: REM  FLOORLIGHTS
  33. 377 N = M:NCLR = 0:XNUM = 36: GOSUB 390: IF M >29  THEN 2270
  34. 378  GOTO 240
  35. 380  REM ====NUMBERS====
  36. 390 H = 1
  37. 391  POKE 0,9 *NCLR +25
  38. 392  POKE 1,9
  39. 393  CALL MU
  40. 395  COLOR= NCLR: VLIN YNUM,YNUM +6 AT XNUM: VLIN YNUM,YNUM +6 AT XNUM +1: VLIN YNUM,YNUM +6 AT XNUM +2: COLOR= SKY:J = N - INT(N/10) *10: ON J +1 GOTO 400,410,420,430,440,450,460,470,480,490
  41. 400  VLIN YNUM +2,YNUM +4 AT XNUM +1: IF H = 0  THEN  RETURN 
  42. 405 XNUM = XNUM -4:N = N/10:H = 0: GOTO 391
  43. 410  VLIN YNUM +2,YNUM +4 AT XNUM: VLIN YNUM,YNUM +4 AT XNUM +2: RETURN 
  44. 420  HLIN XNUM,XNUM +1 AT YNUM +2: HLIN XNUM +1,XNUM +2 AT YNUM +4: RETURN 
  45. 430  HLIN XNUM,XNUM +1 AT YNUM +2: HLIN XNUM,XNUM +1 AT YNUM +4: RETURN 
  46. 440  VLIN YNUM,YNUM +2 AT XNUM +1: VLIN YNUM +4,YNUM +6 AT XNUM: VLIN YNUM +4,YNUM +6 AT XNUM +1: RETURN 
  47. 450  HLIN XNUM +1,XNUM +2 AT YNUM +2: HLIN XNUM,XNUM +1 AT YNUM +4: RETURN 
  48. 460  HLIN XNUM +1,XNUM +2 AT YNUM +2: PLOT XNUM +1,YNUM +4: RETURN 
  49. 470  VLIN YNUM +2,YNUM +6 AT XNUM: VLIN YNUM +2,YNUM +6 AT XNUM +1: RETURN 
  50. 480  PLOT XNUM +1,YNUM +2: PLOT XNUM +1,YNUM +4: RETURN 
  51. 490  PLOT XNUM +1,YNUM +2: HLIN XNUM,XNUM +1 AT YNUM +4: RETURN 
  52. 2000  REM ==== SET-UP GAME ====
  53. 2010  GR 
  54. 2020  IF PAS >BEST  THEN BEST = PAS
  55. 2025 M = 0:PAS = 0:ELNO = 4
  56. 2030  COLOR= SKY: FOR I = 0 TO 39: HLIN 0,9 AT I: HLIN 25,39 AT I: NEXT I: HLIN 0,39 AT 0: HLIN 0,39 AT 1
  57. 2040  COLOR= 15: HLIN 12,22 AT 37: HLIN 12,22 AT 38: HLIN 12,22 AT 39
  58. 2050  COLOR= 0: FOR I = 12 TO 22: VLIN 4,36 AT I: NEXT I
  59. 2060  COLOR= BLDG: FOR I = 11 TO 23  STEP 3: VLIN 4,39 AT I: NEXT I: HLIN 10,24 AT 2: HLIN 10,24 AT 3: VLIN 4,39 AT 10: VLIN 4,39 AT 24: HLIN 0,10 AT 39: HLIN 23,39 AT 39
  60. 2062 NCLR = 0:XNUM = 26:N = 5: GOSUB 390:XNUM = 36:N = 0: GOSUB 390:XNUM = 6:N = 0:NCLR = 15: GOSUB 390
  61. 2063  COLOR= 0: VLIN YNUM +1,YNUM +2 AT 30: VLIN YNUM +5,YNUM +6 AT 30
  62. 2070  HOME : IF FLAG  THEN 2100
  63. 2080  PRINT ":::::::::::: 1  2  3  4 ::::::::::::::::";
  64. 2090  PRINT " USING 1-4 ELEVATORS, HOW MANY CARLOADS  OF PASSENGERS CAN YOU DELIVER BETWEEN   5 AND 5:30?  ";
  65. 2100  FOR X = 0 TO 39:LITECLR(X) = BLDG: NEXT 
  66. 2105  FOR X = 1 TO 4:PAS(X) = 0:MOVE(X) = 0:YPSN(X) = 39:LITECLR(X) = BLDG:CARCLR(X) = 9: NEXT : IF FLAG  THEN 2130
  67. 2110  PRINT "(HIT ";: FLASH : PRINT "RETURN";: NORMAL : PRINT " TO START.)";
  68. 2120 K =  PEEK(Q): IF K < >141  THEN 2120
  69. 2125  REM === START GAME ====
  70. 2130  POKE Q +16,0: HOME 
  71. 2168  INVERSE : VTAB 21: HTAB 13: PRINT " 1";: HTAB 16: PRINT " 2";: HTAB 19: PRINT " 3";: HTAB 22: PRINT " 4"
  72. 2170  HTAB 13: PRINT " Q";: HTAB 16: PRINT " W";: HTAB 19: PRINT " E";: HTAB 22: PRINT " R"
  73. 2175  HTAB 13: PRINT " A";: HTAB 16: PRINT " S";: HTAB 19: PRINT " D";: HTAB 22: PRINT " F": HTAB 27: PRINT "SPACE";
  74. 2188  NORMAL : VTAB 21: HTAB 1: PRINT "         UP>";: HTAB 27: PRINT "DEADLINE 5:30"
  75. 2190  PRINT "STOP & LOAD>";: HTAB 27: PRINT "BEST TODAY:";BEST: HTAB 1: PRINT "       DOWN>";: HTAB 27: PRINT "-------------"
  76. 2192  PRINT "     TOTALS: 0  0  0  0";: HTAB 32: PRINT "=NO.CARS";
  77. 2195  COLOR= 9: FOR X = 12 TO 21  STEP 3: VLIN 37,39 AT X: VLIN 37,39 AT X +1: NEXT 
  78. 2200 P = 99:L = 200: GOSUB 190: GOTO 230
  79. 2205  REM ===# ELVTRS.WORKING===
  80. 2210  POKE Q +16,0:ELNO = ELNO +1: IF ELNO >4  THEN ELNO = 1
  81. 2220  POKE 50,63 +192 *(ELNO <2): VTAB 21: HTAB 16: PRINT " 2": HTAB 16: PRINT " W": HTAB 16: PRINT " S"
  82. 2230  POKE 50,63 +192 *(ELNO <3): VTAB 21: HTAB 19: PRINT " 3": HTAB 19: PRINT " E": HTAB 19: PRINT " D"
  83. 2240  POKE 50,63 +192 *(ELNO <4): VTAB 21: HTAB 22: PRINT " 4": HTAB 22: PRINT " R": HTAB 22: PRINT " F"
  84. 2250  POKE Q +16,0: NORMAL : RETURN 
  85. 2260  REM ==== END GAME ====
  86. 2270  POKE Q +16,0
  87. 2280  FOR H = 1 TO 4:P = 99:L = 11: GOSUB 190: FOR J = 1 TO 15: NEXT J,H:L = 200: GOSUB 190
  88. 2285  FOR I = 1 TO 99: NEXT I
  89. 2287  FOR I = 21 TO 23: VTAB I: HTAB 1: CALL  -868: NEXT : VTAB 24: PRINT "     TOTALS:";: HTAB 24: PRINT "                ";
  90. 2290  INVERSE : VTAB 21: HTAB 27: PRINT " TIME'S UP!! ";
  91. 2291  NORMAL : IF PAS > = BEST  THEN  VTAB 22: HTAB 1: FLASH : PRINT "BEST SCORE TODAY!";: FOR J = 1 TO 18:P =  INT( RND(1) *200) +30:L = 20: GOSUB 190: NEXT :L = 150: GOSUB 190: NORMAL : HTAB 1: PRINT "BEST SCORE TODAY!"
  92. 2292  IF PAS <BEST  THEN  VTAB 22: HTAB 1: PRINT "BEST SCORE TODAY:";BEST
  93. 2295  FLASH : VTAB 23: HTAB 27: PRINT "RETURN";: NORMAL : PRINT " TO": HTAB 27: PRINT "REPLAY.";
  94. 2300  COLOR= 0: FOR X = 0 TO 1: HLIN 1,39 AT X: FOR I = 1 TO 10: NEXT I,X
  95. 2310  FOR J = 0 TO 38: COLOR= 0: HLIN 0,9 AT J: HLIN 25,39 AT J: NEXT J
  96. 2320 SKY = 0:XNUM = 26:N = 5:NCLR = 9: GOSUB 390:XNUM = 36:N = 30: GOSUB 390:XNUM = 6:NCLR = 15:N = PAS: GOSUB 390: IF  INT(PAS/10) = 0  THEN 2325
  97. 2322 N =  INT(PAS/10):XNUM = 2: GOSUB 390
  98. 2325  COLOR= 9: VLIN 32,33 AT 30: VLIN 36,37 AT 30
  99. 2350  COLOR= 7
  100. 2360  PLOT 2,5: PLOT 8,11: PLOT 4,19: PLOT 32,10: PLOT 34,12: PLOT 38,4: PLOT 37,16: PLOT 15,0
  101. 2367 A$ = " TRY AGAIN. "
  102. 2368  IF PAS >3  THEN A$ = "(SNAIL)"
  103. 2370  IF PAS >5  THEN A$ = "(SLOWPOKE)"
  104. 2375  IF PAS >7  THEN A$ = "(HO HUM)"
  105. 2380  IF PAS >9  THEN A$ = "(SO-SO)"
  106. 2382  IF PAS >11  THEN A$ = "(NOT BAD)"
  107. 2390  IF PAS >13  THEN A$ = "(PRETTY GOOD)"
  108. 2395  IF PAS >15  THEN A$ = "(VERY GOOD!)"
  109. 2400  IF PAS >17  THEN A$ = "(EXCELLENT!)"
  110. 2402  IF PAS >19  THEN A$ = "(FANTASTIC!)"
  111. 2404  IF PAS >21  THEN A$ = "(HOLY MACKEREL!)"
  112. 2406  IF PAS >23  THEN A$ = "(AMAZING!!!)"
  113. 2408  IF PAS >25  THEN A$ = "(UNBELIEVABLE!)"
  114. 2410  IF PAS >27  THEN A$ = "(IMPOSSIBLE!)"
  115. 2412  IF PAS >29  THEN A$ = "(HOW'D YOU DO THAT?)"
  116. 2414  IF PAS >31  THEN A$ = "QUIT READING THE LISTING AND PLAY THE GAME!"
  117. 2430  FOR I = 1 TO 500: NEXT I
  118. 2440  VTAB 21: HTAB 1: INVERSE : PRINT A$: NORMAL 
  119. 2450 P = 30:L = 100: GOSUB 190
  120. 2460 K =  PEEK(Q): IF K < >141  THEN 2460
  121. 2470  POKE Q +16,0:FLAG = 1:SKY = 2: GOTO 2020
  122. 31000  REM === PARAMETERS ===
  123. 32000  POKE 771,173: POKE 772,48: POKE 773,192: POKE 774,136: POKE 775,208: POKE 776,4: POKE 777,198: POKE 778,1: POKE 779,240: POKE 780,8: POKE 781,202: POKE 782,208: POKE 783,246: POKE 784,166: POKE 785,0: POKE 786,76: POKE 787,3: POKE 788,3: POKE 789,96
  124. 32762  DIM YPSN(39),LITECLR(39),PAS(20):SKY = 2:BLDG = 5:NCLR = 0:XNUM = 9:YNUM = 31:Q =  -16384:MU = 771: RETURN 
  125. 63900  HOME : NORMAL 
  126. 63910  VTAB 22: PRINT "<M> MENU,  <C> CONTINUE GAME,  <Q> QUIT": PRINT : PRINT "    SELECT:";: GET A$: PRINT A$: HOME : VTAB 21: IF A$ = "Q"  THEN  END 
  127. 63920  IF A$ = "M"  THEN  POKE 768,15: PRINT  CHR$(4);"RUN SHORT MENU"
  128. 63930  IF A$ = "C"  THEN  RUN 
  129. 63940  GOTO 63900