home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / spiele / frogger.bas < prev    next >
Encoding:
BASIC Source File  |  1991-05-15  |  6.9 KB  |  110 lines

  1. 10 CLEAR , &H8000: DEF FNUP$ (X$) = CHR$(ASC(X$) + 32 * (ASC(X$) > 95)): DIM CAR$(1), DA(12), TS(9), TN$(9), BK%(23)
  2. 20 FROG$ = "C1RFL3BL3L0BL2R0BR11R0BR2DL2BL2L5BL2L2FBR3R5BR3GL0BL2L5BL2FR7GL5R5BFBRL0BL2L5BL2DR9DBL3L3BL3DL2BR11R2"
  3. 30 LP$ = "C3F3DFD2GDGL2H2UE2G3HBD2D0GBU2LHU2E4RE"
  4. 40 LOGS$ = "C2L45G2DGD2FDF2R46E2UEU2HUH2G2DGD2FDF2": TXTR$ = "C0BU3L3BD3L1BH2L2BG1BL4L3BH3L5BD3BG2R3BG3R5BR4R3BE2BR3R2"
  5. 50 CAR$(0) = "R5FL8GRBR5R0BR4DBL4L0BL5LGR2BR5R0BR5R2FRL17GR19FL21DR21BDBLL4BL10L4BFBR2L2BR14R2BR2BE10"
  6. 60 CAR$(1) = "L5GR8FLBL5L0BL4DBR4R0BR5RFL2BL5L0BL5L2GLR17FL19GR21DL21BDBRR4BR10R4BGBL2R2BL14L2BR26BE10"
  7. 70 DEF SEG : CS = INT((PEEK(778) + 256 * PEEK(779) + 514) / 16): DEF SEG = 0: CS = CS + PEEK(&H510) + 256 * PEEK(&H511) + 1
  8. 71 DEF SEG = CS: FOR X = 0 TO 231: READ N: POKE X, N: NEXT X: HS = 0
  9. 80 RANDOMIZE VAL(RIGHT$(TIME$, 2)) + 100 * VAL(MID$(TIME$, 4, 2))
  10. 90 SCREEN 0: SCREEN 1, 0: COLOR 0, 0: KEY OFF: CLS : LOCATE 11: PRINT "JOYSTICK OR KEYBOARD (J/K)"; : JF = 0
  11. 100 A$ = FNUP$(INPUT$(1)): IF A$ <> "J" AND A$ <> "K" AND A$ <> "j" AND A$ <> "k" THEN 100
  12. 110 IF A$ = "J" OR A$ = "j" THEN JF = -1
  13. 120 CLS : PRINT "INITIALIZING...": KP$ = "HMPK": NK$ = "8624"
  14. 130 DA(1) = 8: DA(2) = -8: DA(3) = 16
  15. 131 DA(4) = -8: DA(5) = 16: DA(6) = 0: DA(7) = 8: DA(9) = -8: DA(10) = 16: DA(11) = -16: DA(12) = -8
  16. 140 OPEN "HOPPER.SCO" FOR RANDOM AS 1: CLOSE : OPEN "HOPPER.SCO" FOR INPUT AS 1
  17. 150 X = 0: WHILE NOT EOF(1): INPUT #1, TS(X): LINE INPUT #1, TN$(X): X = X + 1: WEND: CLOSE
  18. 160 CLS : LINE (0, 0)-(255, 33), 1, BF: GOSUB 610
  19. 161 LINE (266, 0)-(319, 177), 1, B
  20. 162 LINE (267, 1)-(318, 176), 1, B
  21. 163 LINE (0, 95)-(255, 105), , BF: LINE (0, 167)-(255, 177), , BF
  22. 170 SC = 0: FR = 5: B = 1: LOCATE 24: PRINT SPC(5); "SCORE: 0"; SPC(9); "TIME:"; 
  23. 171 FOR Y = 0 TO 3
  24. 172   PSET (291, Y * 40 + 20)
  25. 173   DRAW FROG$
  26. 179 NEXT
  27. 180 FA = 0: LG = 4 + (B > 1) + (B = 4): LP = 4 - B - (B = 4)
  28. 181 FOR Y = 35 TO 83 STEP 12
  29. 183   IF Y=35 OR Y=59 OR Y=71 THEN SP=INT(INT(263/LG)/8+.5)*8: ID=57*(LG=2)+50:FOR X=ID TO ID+(LG - 1) * SP STEP SP:PSET(X,Y):DRAW LOGS$:PAINT(X-9,Y+5),2,2:DRAW TXTR$:NEXT:GOTO 200
  30. 190   SP = INT(INT(256 / LP) / 8 + .5) * 8
  31. 191   ID = -56 * (LP = 2) - 112 * (LP = 1) + 8
  32. 192   FOR X = ID TO ID + (LP - 1) * SP STEP SP: NEXT
  33. 193   FOR D = 6 TO 54 STEP 16: PSET (X + D, Y): DRAW LP$
  34. 194   PAINT (X + D, Y + 3), 3, 3: NEXT D, X
  35. 200   NEXT Y
  36. 201 FOR Y = 8 TO 12
  37. 202   RD = INT(RND(1) * (200 - B * 24)) + 20: PSET (RD, Y * 12 + 11)
  38. 203   C = -(SGN(DA(Y)) < 0)
  39. 204   FOR X = 0 TO B
  40. 205     DRAW "C" + STR$(INT(RND(1) * 3) + 1) + CAR$(C)
  41. 206 NEXT X, Y
  42. 210 DEF SEG = 0: POKE 1050, PEEK(1052)
  43. 211 FOR D = 1 TO 100: NEXT
  44. 212 LOCATE 24, 29: PRINT "80"; : FX = 120: FY = 12: TM = 80
  45. 220 YA = 23 + FY * 12
  46. 221 GET (FX, YA)-(FX + 13, YA + 10), BK%: PSET (FX + 6, YA): DRAW FROG$
  47. 230 IF FY > 6 AND FY < 12 THEN FOR X = 2 TO 23: IF BK%(X) THEN 430 ELSE NEXT
  48. 240 IF FY<6 THEN CPL=0: FOR X=2 TO 22 STEP 2:CPL=CPL-(BK%(X)<>0):NEXT:CPR=0:FOR X = 3 TO 23 STEP 2: CPR = CPR - (BK%(X)<>0):NEXT:IF CPL<4 OR CPR<4 THEN 430
  49. 250 IF FY = 6 OR FY = 12 THEN FOR X = 1 TO 200: NEXT
  50. 260 LOCATE 24, 28: PRINT TM; : SOUND 300, .1: M$ = INKEY$: IF M$ = "" THEN M = 0 ELSE M = ASC(M$): IF M = 0 THEN M = INSTR(KP$, MID$(M$, 2)): IF M THEN M = ASC(MID$(NK$, M))
  51. 270 IF M = 27 THEN A$ = INPUT$(1): GOTO 260
  52. 280 IF NOT JF THEN 310
  53. 290 M = 0: P0 = STICK(1): P1 = STICK(1): C0 = 30 < P0 AND P0 < 225: C1 = 30 < P1 AND P1 < 225: IF C1 AND NOT C0 THEN M = 52 - 2 * (P0 > 127): GOTO 310
  54. 300 IF CO AND NOT C1 THEN M = 56 + 6 * (P1 > 127)
  55. 310 IF M = 50 OR M = 52 OR M = 54 OR M = 56 THEN SOUND 400, .5: SOUND 600, 1: IF M = 56 THEN SI = 20: GOSUB 600: GOTO 330 ELSE IF M = 50 AND FY <> 12 THEN SI = -20: GOSUB 600: GOTO 330
  56. 320 FOR D = 1 TO 50: NEXT: 'DELAY
  57. 330 NX = FX: NY = FY: IF M = 56 THEN NY = FY - 1
  58. 340 IF M = 52 AND FX - 16 >= 0 THEN NX = FX - 16
  59. 350 IF M = 54 AND FX + 16 < 240 THEN NX = FX + 16
  60. 360 IF M = 50 AND FY <> 12 THEN NY = FY + 1
  61. 370 IF NY THEN 390
  62. 380 PUT (FX, 35), BK%, PSET: GET (FX, 23)-(FX + 13, 33), BK%: PSET (FK + 6, 23): DRAW FROG$: FOR X = 2 TO 23: IF BK%(X) <> 0 THEN YA = 23: GOTO 430 ELSE NEXT: GOTO 580
  63. 390 IF FY > 6 THEN PUT (FX, YA), BK%, PSET: GOTO 420
  64. 400 NX = NX - DA(FY) * (M <> 56 AND M <> 50): IF NX < 0 OR NX > 239 THEN 430
  65. 410  IF M THEN PUT (FX, YA), BK%, PSET
  66. 420 DEF SEG = CS: CALL HS: FX = NX: FY = NY: TM = TM - 1: IF TM THEN IF M OR FY > 6 THEN 220 ELSE 230
  67. 430 FOR X = 700 TO 300 STEP -20: PSET (FX + 6, YA): DRAW FROG$: PUT (FX, YA), BK%, PSET: SOUND X, 1: NEXT
  68. 440 FR = FR - 1: IF FR THEN LINE (285, FR * 40 - 20)-(298, FR * 40 - 10), 0, BF: GOTO 210
  69. 450 FOR X = 1 TO 500: NEXT
  70. 451 CLS : FOR X = 1 TO 4: SOUND 100, 3: SOUND 300, 3: NEXT: PRINT 
  71. 452 PRINT : PRINT TAB(12); " G A M E   O V E R": PRINT : PRINT 
  72. 453 IF TS(0) = 0 AND SC = 0 THEN 510
  73. 460 IF SC <= TS(9) THEN 490
  74. 470 PRINT "YOUR SCORE IS IN THE TOP TEN": PRINT 
  75. 471 DEF SEG = 0: POKE 1050, PEEK(1052)
  76. 472 LINE INPUT "ENTER YOUR NAME PLEASE: "; TN$(9): TS(9) = SC
  77. 473 FOR X = 0 TO 8: AP = X: FOR Y = X + 1 TO 9: IF TS(Y) > TS(AP) THEN AP = Y
  78. 480 NEXT Y
  79. 481 HN = TS(X): HN$ = TN$(X): TS(X) = TS(AP): TN$(X) = TN$(AP)
  80. 482 TS(AP) = HN: TN$(AP) = HN$: NEXT X: PRINT : PRINT
  81. 490 FOR X = 0 TO 9: IF TS(X) = 0 THEN 510
  82. 500 PRINT USING "######   "; TS(X); : PRINT TN$(X): NEXT
  83. 510 PRINT : PRINT : PRINT "WOULD YOU LIKE TO PLAY AGAIN? "; : CF = 0
  84. 520 A$ = INKEY$
  85. 521 IF A$ = "" THEN CF = CF + 1:IF CF = 20 THEN PRINT CHR$(95); CHR$(29); : GOTO 520 ELSE IF CF = 40 THEN CF = 0: PRINT "  "; CHR$(29); : GOTO 520 ELSE 520
  86. 530 A$ = FNUP$(A$): IF A$ <> "Y" AND A$ <> "y" AND A$ <> "n" AND A$ <> "N" THEN 520
  87. 540 IF A$ = "Y" OR A$ = "y" THEN 160
  88. 550 ON ERROR GOTO 570
  89. 560 OPEN "HOPPER.SCO" FOR OUTPUT AS 1
  90. 561 FOR X = 0 TO 9: PRINT #1, TS(X): PRINT #1, TN$(X): NEXT X
  91. 570 ON ERROR GOTO 0: CLOSE : CLS : END
  92. 580 SI = 250
  93. 582 GOSUB 600: FA = FA + 1
  94. 583 FOR X = 250 TO 350 STEP 10: SOUND X, 1: NEXT X: IF FA <> 5 THEN 210
  95. 590 SI = 2000
  96. 592 GOSUB 600
  97. 593 PLAY "P2L8C.CL16CL8D.GL16FL8EL4C": B = B + 1 + (B = 4)
  98. 594 GOSUB 610: GOTO 180
  99. 600 SC = SC + SI: LOCATE 24, 12: PRINT SC; : RETURN
  100. 610 FOR X = 23 TO 215 STEP 48
  101. 611 LINE (X, 12)-(X + 24, 33), 0, BF
  102. 612 NEXT
  103. 613 LINE (0, 35)-(255, 94), 0, BF: LINE (0, 106)-(255, 166), 0, BF
  104. 614 RETURN
  105. 620 DATA 235,18,144,0,0,1,255,2,255,2,0,1,255,2,254,255,0,0,0,0,30,6,184,85,184,142,216,142,192,46,199,6,3,0,10,0,46,139,54,3,0,46,138,132,5,0,60,0,117,3,233,159,0,46,162,17,0
  106. 630 DATA 46,162,18,0,139,198,187,224,1,247,227,139,216,46,198,6,16,0,2,46,246,6,17,0,128,117,66,253,131,195,62,139,251,46,198,6,19,0,6,139,247,131,238,2,139,5,185,31,0,243,165,137,68,2,129,199,142
  107. 640 DATA 0,46,254,14,19,0,117,230,46,254,14,17,0,117,215,46,254,14,16,0,116,76,46,160,18,0,46,162,17,0,129,195,0,32,235,194,252,139,251,46,198,6,19,0,6,139,247,131,198,2,139,5,185,31,0,243,165
  108. 650 DATA 137,68,254,131,199,18,46,254,14,19,0,117,231,46,254,6,17,0,117,216,46,254,14,16,0,116,14,46,160,18,0,46,162,17,0,129,195,0,32,235,195,46,255,14,3,0,46,129,62,3,0,255,255,116,3,233,63
  109. 660 DATA 255,7,31,203
  110.