Erklärung
Aufgaben
Spielen mit JavaScript
Es handelt sich um das allseits bekannte Spiel Macao. Vor dem Beispiel
kurz ein Bild vom Programmlauf:
Hier das Beispiel in Kurzform, die
Methode spielen():
<html>
<head>
<title> Macao in JavaScript </title>
<script language="JavaScript">
function wuerfel() {
}
function ausgabe() {
}
function regeln() {
}
function spielen()
{
zahl_spieler = 0;
zahl_compi = 0;
meldung = 0;
ende = 0;
grenze = prompt("Obere Grenze: ","1");
while ( ende == 0 )
{
zahl_spieler = zahl_spieler + wuerfel();
zahl_compi = zahl_compi + wuerfel();
if (zahl_spieler > grenze)
{ ende = 1; meldung = 1;
alert("Leider verloren . . . ");
}
else if (zahl_compi > grenze)
{ ende = 1; meldung = 1;
alert("Du hast es geschafft, tolle Sache . . .!");
}
else if (zahl_compi == grenze)
{ ende = 1; meldung = 1;
alert("Leider verloren . . . ");
}
else {
nochmal = prompt("Du hast: " + zahl_spieler + ",
Compi: " + zahl_compi + ", Würfeln? (J/N): ","");
nochmal = nochmal.toUpperCase();
if (nochmal == "N") {
ende = 1;
}
} // else
} // while
if (meldung == 0)
{
if (zahl_spieler < zahl_compi)
{
alert("Leider verloren . . . ");
}
else
{
alert("Du hast es geschafft, tolle Sache . . .!");
}
} // if (meldung . . .
} // Ende der Funktion spielen()
</script>
</head>
<body bgcolor="#ffffff">
<font color="#FF0000">
<h2>Das wunderbare Spiel Macao</h2>
</font>
<p>
<form name="form1">
<input type="button" value="Spielregeln" onclick="regeln();">
<input type="button" value="Spielen!" onclick="spielen();">
<input type="button" value="Würfeln" onclick="ausgabe();">
</form>
</body>
</html>
Einige Erklärungen zu diesem Beispiel:
- Die Funktion spielen() ist eine von vier Funktionen im JavaScript: die anderen drei Funktionen sind:
- wuerfel()
- ausgabe()
- regeln()
Diese Methoden wurden hier nicht berücksichtigt, du kannst sie dir aber im JavaScript "macao.htm"
anschauen. Im Körper von macao.htm werden drei der vier Methoden aufgerufen: regeln(), spielen() und ausgabe(). Der Aufruf erfolgt durch Klicken mit der Maus auf den jeweiligen Button.
- In spielen() passiert folgendes: erst werden einige Variablen vereinbart, dann wird mit Hilfe von prompt die obere Grenze abgefragt. In der while-Schleife ist dann das Spiel untergebracht: du gegen den Computer! Es wird zuerst gewürfelt, und zwar du und der Computer gleichzeitig, dann wird getestet, ob du oder der Computer schon über der Grenze liegt, oder ob der Computer gerade die Grenze getroffen hat. In allen drei Fällen wird das Spiel beendet und eine Meldung ausgegeben, deshalb wird ende und meldung auf 1 (eins) gesetzt, damit die Schleife beendet wird und im Anschluß an die Schleife nicht noch eine Meldung ausgegeben wird. Im letzten else-Zweig der while-Schleife erfolgt die Abfrage, ob du nochmal würfeln willst, antwortest du mit J(a), geht das ganze noch mal von vorne los, bei N(ein) wird die while-Schleife beendet und es erfolgt die Ausgabe, wer denn gewonnen hat, vergleiche die if-Abfrage nach der Klammer.
- Du findest die Dateien macao.htm und regeln.htm auf Laufwerk I:\ im Verzeichnis jscript. Wichtig: Du musst sie in dein Verzeichnis laden!
Zurück zur Übersicht
- Aufgaben:
- Lade die Dateien macao.htm und regeln.htm in dein Verzeichnis!
- Spiele ein paar Runden, probiere auch den Button "Spielregeln" und den Button "Würfeln"!
- Jetzt wirds schwierig: Suche dir einen Mitspieler und verändere das Programm so, dass du gegen deinen
Mitspieler spielst. Folgende Änderungen musst du durchführen -ACHTUNG: alle Änderungen betreffen nur die Methode spielen()-:
- führe eine zweite Variable ende2 ein für den zweiten Spieler und nenne die Variable zahl_compi
jetzt spieler2 (im ganzen Programm!!)
- gewürfelt wird jetzt einmal vor der Schleife, in der Schleife würfeln abwechselnd spieler1 und spieler2.
- Beispiel: so könnte der Teil für spieler2 in der while-Schleife aussehen:
nochmal = prompt("Spieler2: " + spieler2 + ", Würfeln? (J/N): ","");
nochmal = nochmal.toUpperCase();
if (nochmal == "N") {
ende2 = 1;
}
if (ende2 == 0)
{
spieler2 = spieler2 + wuerfel();
if (spieler2 > grenze)
{ ende2 = 1; meldung = 1;
alert("Gewonnen hat Spieler1!");
}
}
- so ähnlich sieht auch der Teil für spieler1 aus, er kommt natürlich vor den Teil von spieler2 in der while-Schleife!
- Ergänzungsaufgabe: Beim if-Test nach der Schleife gilt es noch den Fall des Unentschiedens zu berücksichtigen . . .
- Falls alles geklappt hat, spiele ein paar Runden gegen deinen Mitspieler!
Zurück zur Übersicht
W. Spiegel, E-Mail: walter [dot] spiegel [at] web [dot] de