Programmablauf / Spielrunden

  • Hallo zusammen,


    für ein Unterrichtsfach arbeite ich mich zur Zeit in JavaScript ein. Ich bin dabei meine ersten Programme zu schreiben und ein solches bringt mich grade zur Verzweiflung. Ich schaffe es nicht, dass die Runden nacheinander ablaufen und dann wieder eine neue Runde beginnt.

    Das Programm soll mal ein Spiel werden, in dem man eine Eisbude betreibt. Am Anfang wird das Wetter ausgerechnet, von dem die Besucher abhängig sind, dann kauft mein entsprechend Eis ein und das Eis wird verkauft und der Kontostand berechnet.

    Bei meinem Prog. ist es leider so, dass das Wetter einmal berechnet wird und dann direkt mehrfach die Abfrage nach den Einkaufsmengen kommt.


    Wäre toll, wenn mir jemand von euch helfen könnte. Ich sitze schon ein paar Tage an dem Problem und komme nicht weiter.



    <script>

    //benötigte Variablen

    var stand_besucher; //200 Besucher, heiß (300%), sonnig (200%), bedeckt (100%), regen (60%)

    var wetter; //heiß, sonnig, bedeckt, regen

    var eis_preis = 2;

    var eis_menge_einkauf;

    var umsatz;

    var konto = 200;

    var i;


    //Spielrunden

    for (i = 1; i < 3; i++) {

    document.write("Tag " +i + "<br>");


    //Berechnung Wetter und Standbesucher

    var wetter=Math.floor(Math.random() * 4);


    switch ( wetter ) {

    case 1:

    text = 'Wettervorhersage: Packt die Badehose ein. Für Morgen ist heißes Wetter vorhergesagt!';

    stand_besucher = 600;

    break;

    case 2:

    text = 'Wettervorhersage: Morgen wird es sonnig!';

    stand_besucher = 400;

    break;

    case 3:

    text = 'Wettervorhersage: Morgen wird es bedeckt.';

    stand_besucher = 200;

    break;

    default:

    text = 'Wettervorhersage: Packt den Regenschirm ein. Morgen ist mit Starkregen zu rechnen!';

    stand_besucher = 160;

    break;

    }

    document.write(text + "<br>");

    document.write("Erwartete Besucher " +stand_besucher + "<br>"); //Hilfsfunktion muss später runter XXXXXXXXXXXXXXXxx


    document.write("Sie haben " +konto + " Euro zur Verfügung" + "<br>");

    eis_menge_einkauf = prompt("Wieviel Eis möchten Sie für den nächsten Tag kaufen?","Eismenge");


    while (konto < eis_menge_einkauf) {

    alert ("Sie haben nicht genug Geld! Versuchen Sie es noch einmal.");

    eis_menge_einkauf = prompt("Wieviel Eis möchten Sie für den nächsten Tag kaufen?","Eismenge");

    }

    eis_menge_einkauf = parseInt(eis_menge_einkauf);

    var konto = konto - eis_menge_einkauf;


    //Berechnung Tagesumsatz

    if (stand_besucher >= eis_menge_einkauf && eis_menge_einkauf > 0) {

    umsatz = eis_menge_einkauf * eis_preis;

    document.write("Sie haben heute " +umsatz +" Euro eingenommen." + "<br>");

    }

    else if (isNaN(eis_menge_einkauf) || eis_menge_einkauf < 0) {

    umsatz = 0;

    document.write("Sie haben heute " +umsatz +" Euro eingenommen." + "<br>");

    } else {

    umsatz = eis_menge_einkauf * eis_preis;

    }


    konto = konto + umsatz;


    document.write("Ihr neuer Kontostand beträgt " +konto + "<br><br><br>");

    }



    </script>

  • Das Problem ist hier, dass bei einem prompt() das HTML noch nicht angezeigt wird, bevor der Benutzer die Eingabe gemacht hat. Auch wenn man das HTML nicht mit document.write() erzeugt, sondern direkt notiert, ist es nicht besser. Versuche:

    • entweder ein Eingabefeld (<input>) für den Betrag anzulegen
    • oder den prompt erst durch Klick auf einen Button (<button>Eis einkaufen</button>) auszulösen