' Bananen-Kamelaufgabensimulator SCREEN 11 CLS ' Strecke LOCATE 1, 3: PRINT "A"; LOCATE 1, 78: PRINT "B"; FOR i% = 0 TO 100 LINE (20 + 6 * i%, 16)-STEP(0, 4) NEXT i% LINE (20, 16)-STEP(600, 0) ' Der Weg wird in km-Einheiten geteilt; jedes Feldelement stellt ein ' Lagerplatz dar, aB% enth„lt demnach die Zahl der Bananen DIM aB%(100) LOCATE 28, 6 PRINT "Aktuelle Position :"; LOCATE 29, 7 PRINT "Zahl der Bananen :"; LOCATE 30, 1 PRINT "Aktuelle Bananenladung :"; GOSUB Zuruecksetzen DO LOCATE 28, 25 PRINT USING "####"; Po%; LOCATE 29, 25 PRINT USING "####"; aB%(Po%); LOCATE 30, 25 PRINT USING "####"; aL%; DO t$ = INKEY$ LOOP WHILE t$ = "" SELECT CASE t$ CASE CHR$(0) + "K" Po1% = Po% - 1 GOSUB Wandern CASE CHR$(0) + "M" Po1% = Po% + 1 GOSUB Wandern CASE CHR$(0) + "H" aL1% = aL% + 1 GOSUB Umladen CASE CHR$(0) + "P" aL1% = aL% - 1 GOSUB Umladen CASE CHR$(0) + "s" Po1% = Po% - 10 GOSUB Wandern CASE CHR$(0) + "t" Po1% = Po% + 10 GOSUB Wandern CASE CHR$(0) + "I" aL1% = aL% + 10 GOSUB Umladen CASE CHR$(0) + "Q" aL1% = aL% - 10 GOSUB Umladen CASE CHR$(0) + "G" Po1% = 0 GOSUB Wandern CASE CHR$(0) + "O" Po1% = 100 GOSUB Wandern CASE CHR$(0) + "w" aL1% = 100 GOSUB Umladen CASE CHR$(0) + "u" aL1% = 0 GOSUB Umladen CASE "r", "R" GOSUB Zuruecksetzen END SELECT LOOP UNTIL t$ = CHR$(27) END Zuruecksetzen: FOR i% = 1 TO 100 aB%(i%) = 0 NEXT i% aB%(0) = 300 'zu transportierende Ladung Po% = 0 ' Aktuelle Position des Kamel und Reiters aL% = 0 LINE (17, 22)-(622, 327), 0, BF LINE (17, 22)-STEP(6, 4), , BF LINE (18, 28)-STEP(4, 299), , BF RETURN Wandern: IF Po1% < 0 THEN Po1% = 0 ELSEIF Po1% > 100 THEN Po1% = 100 END IF Ri% = SGN(Po1% - Po%) Dis% = ABS(Po1% - Po%) IF Dis% > aL% THEN ' Das Kamel l„uft nicht weiter als es Futter bekommt Dis% = aL% END IF IF Dis% = 0 THEN SOUND 440!, 1! END IF LINE (17 + 6 * Po%, 22)-STEP(6, 4), 0, BF Po% = Po% + Ri% * Dis% aL% = aL% - Dis% LINE (17 + 6 * Po%, 22)-STEP(6, 4), , BF RETURN Umladen: IF aL1% < 0 THEN aL1% = 0 ELSEIF aL1% > 100 THEN aL1% = 100 END IF IF aL1% > aL% + aB%(Po%) THEN aL1% = aL% + aB%(Po%) END IF IF aL1% = aL% THEN SOUND 440!, 1! END IF aB%(Po%) = aL% + aB%(Po%) - aL1% aL% = aL1% LINE (18 + 6 * Po%, 28)-STEP(4, 299), 0, BF IF aB%(Po%) THEN LINE (18 + 6 * Po%, 28)-STEP(4, aB%(Po%) - 1), , BF END IF RETURN