marlin.txt

(3 KB) Pobierz
10 REM * THE OLD MAN AND THE SEA - ADVANCED VERSION *
20 REM * POSITION VARIABLES, LINE TENSION, AND MARLIN'S STATUS *
30 LET bx = 10: LET by = 10   : REM Boat position
40 LET mx = 30: LET my = 15   : REM Marlin position
50 LET tension = 0            : REM Line tension
60 LET maxTension = 150       : REM Maximum tension before the line breaks
70 LET distance = 0           : REM Distance between the boat and the marlin
80 LET angle = 0              : REM Relative angle between the boat and the marlin
90 LET marlinEnergy = 100     : REM Marlin's energy (100 = full of energy)
100 LET marlinPain = 0        : REM Accumulated pain of the marlin
110 LET marlinResistance = 0  : REM Marlin's resistance based on energy and pain
120 LET speed = 5             : REM Marlin's base movement speed
130 LET escape = 0            : REM Marlin's state (0 = on the line, 1 = escapes)
140 CLS
150 PRINT "THE OLD MAN AND THE SEA - PRESS ANY KEY TO START"
160 PAUSE 0
170 CLS
180 PRINT AT 1, 5;"BOAT CONTROL: W (UP) S (DOWN) A (LEFT) D (RIGHT)"
190 PRINT AT 2, 5;"LINE CONTROL: L (LOOSEN) K (REEL IN)"
200 PRINT AT 3, 5;"MAINTAIN TENSION AND FOLLOW THE MARLIN"
210 REM * MAIN LOOP *
220 LET distance = SQR((mx-bx)*(mx-bx) + (my-by)*(my-by)) : REM Calculate the distance
230 LET angle = ATN(ABS(my-by)/ABS(mx-bx)) * 180/PI : REM Calculate the angle
240 LET tension = distance * 2 + ABS(90-angle) : REM Calculate the tension
250 LET marlinResistance = marlinEnergy / 2 - (marlinPain / 50) : REM Less energy and more pain, less resistance
260 LET marlinPain = marlinPain + (tension / 20) : REM Pain increases with tension
270 LET marlinEnergy = marlinEnergy - (tension / 50) - (marlinPain / 100) : REM Energy decreases with tension and pain
280 REM * CHECK IF THE LINE BREAKS *
290 IF tension > maxTension THEN PRINT AT 10, 5;"THE LINE BROKE!": STOP
300 REM * DISPLAY CURRENT STATUS *
310 PRINT AT 5, 5;"TENSION: "; tension
320 PRINT AT 6, 5;"DISTANCE: "; distance
330 PRINT AT 7, 5;"MARLIN ENERGY: "; marlinEnergy
340 PRINT AT 8, 5;"MARLIN POSITION: "; mx; ","; my
350 PRINT AT 9, 5;"BOAT POSITION: "; bx; ","; by
360 REM MOVE THE BOAT
370 LET k$ = INKEY$
380 IF k$ = "W" THEN LET by = by - 1
390 IF k$ = "S" THEN LET by = by + 1
400 IF k$ = "A" THEN LET bx = bx - 1
410 IF k$ = "D" THEN LET bx = bx + 1
420 REM * LINE HANDLING *
430 IF k$ = "L" THEN LET distance = distance + 5 : LET tension = tension - 10
440 IF k$ = "K" THEN LET distance = distance - 5 : LET tension = tension + 10
450 REM * MARLIN MOVEMENT BASED ON ENERGY, PAIN, AND RESISTANCE *
460   REM * Change direction based on energy and pain *
470 LET dx = INT(RND*speed - (speed / 2)) : REM Random X movement
480 LET dy = INT(RND*speed - (speed / 2)) : REM Random Y movement
500 IF marlinPain > 50 THEN LET dx = dx * 1.5 : REM Greater pain, more erratic movements
510 IF marlinEnergy < 30 THEN LET speed = speed / 2 : REM Low energy reduces speed
520 LET mx = mx + dx
530 LET my = my + dy
540 IF RND < 0.1 THEN LET mx = mx + INT(RND*20 - 10): LET my = my + INT(RND*20 - 10)
541 IF mx<0 THEN LET mx=0
542 IF mY<0 THEN LET my=0
543 IF mx>255 THEN LET mx=255
544 IF my>175 THEN LET my=175
580 REM * DRAW THE LINE BETWEEN THE BOAT AND THE MARLIN *
590 LET dx = mx - bx          : REM Difference in X
600 LET dy = my - by          : REM Difference in Y
610 CLS                       : REM Clear the screen before redrawing
620 PLOT bx, by               : REM Position the cursor at the boat
630 DRAW mx-bx, my-by               : REM Draw the line to the marlin
640 PRINT "Boat at ("; bx; ","; by; ")"
650 PRINT "Marlin at ("; mx; ","; my; ")"
660 REM * CHECK IF THE MARLIN ESCAPES OR IS CAUGHT *
670 IF distance > 200 THEN PRINT AT 10, 5;"THE MARLIN ESCAPED!": STOP
680 IF marlinEnergy < 10 AND distance < 5 THEN PRINT AT 10, 5;"YOU CAUGHT THE MARLIN!": STOP
690 GO TO 220
Zgłoś jeśli naruszono regulamin