Universität Ulm - Abteilung Angewandte Informationsverarbeitung
5. Übungsblatt zur Vorlesung Allgemeine Informatik II
Abgabetermin: 13. Juni 2002
Wie in der Übung besprochen hier eine leichtere Version des Spiels sowie
einige Hinweise für Euer Programm! Falls Ihr Fragen oder Kommentare habt
schickt sie an das anonyme Feedback.
Sicher kennt Ihr alle das berühmte Spiel ,,Faules Ei``
(Plumssack) aus Eurer Kindheit. Falls nicht, hier nochmals
die Regeln:
Ein Mitspieler wird als Startläufer ausgewählt. Die anderen Mitspieler setzen
sich in einen Kreis bzw. einer muß in die Mitte (als Faules Ei). Der Startläufer
läuft nun außen um den Kreis herum und lässt hinter irgendeinem anderen Spieler
einen Gegenstand (Taschentuch, Geschirrhandtuch o.ä.) fallen. Dieser muß nun den
Gegenstand aufheben und versuchen den ersten Spieler einzuholen, bevor dieser
seinen freien Platz erreicht. Nun können 2 verschiedene Ereignisse eintreten:
- Der Läufer wird nicht eingeholt und stellt sich
auf den vom Verfolger freigewordenen Platz. Der Verfolger
wird dadurch zum neuen Läufer.
- Der Läufer wird eingeholt und muß in die Mitte. Das Faule Ei
wird zum Läufer und der Verfolger kehrt an seinen ursprünglichen
Platz zurück (d.h. also Läufer und Faules Ei tauschen die Plätze).
Dieses Spiel sollt Ihr mit Hilfe einer geeigneten Pointerstruktur
(z.B. Ringliste) implementieren. Bezogen auf unser Beispiel werden
hier die Zahlen 0 bis 7 auf die Ringliste verteilt. Der Startläufer
erhält die Zahl 8, das Faule Ei die Zahl 9. Dieser Sachverhalt
ist in Abbildung 1 auf Seite
dargestellt.
Abbildung 1:
Spielverlauf
|
Tips und nützliche Hinweise:
- Als Struktur eignet sich die in der Übung vorgestellte
Ringliste.
- Weiterhin können Variablen von Nutzen sein, die den
aktuellen Läufer, das faule Ei und den Verfolger speichern.
- Außerdem ist eine Randomfunktion erforderlich (siehe
Programm Zufallszahlen.om), die
zufällig bestimmt, nach wievielen Stationen der Läufer
sein Tuch abwirft (nicht mehr als 7, da er bei 8 Stationen
das Tuch auf seinen eigenen Platz werfen würde) und
mit der zufällig entschieden wird, ob der Verfolger den Läufer
einholt oder nicht.
- Zwei Pointer a und p, wie in Abbildung 1
gezeigt, sind hilfreich, um auf den Anfang der Liste bzw. auf die
aktuelle Position zu zeigen, da die aktuelle Position
im ersten Fall (Läufer wird nicht eingeholt) neu besetzt wird.
- In der Datei Ausgabe.txt findet Ihr 2 Beispieldurchläufe
mit den entsprechenden Ausgaben.
Wer mit Listen experimentieren möchte, kann das Programm so
umschreiben, daß kein Spieler in die Mitte muss, sondern
stattdessen aus dem
Spiel genommen wird. Zwangsläufig verkürzt sich dadurch
die Länge der Liste, so daß am Ende ein Spieler als
Gewinner übrigbleibt!
Viel Erfolg!
Hans Braxmeier