Nim-Spiel
Gruppe: mk, 7.12.03
Aufgabenstellung
Es ist ein Programm zum Nim-Spiel zu entwickeln.
Systemanalyse
Das Spiel hat viele Varianten, wie folgende Links zeigen:
www.mathematische-basteleien.de/nimspiel.html
www.schulnetz.ch/schulen/qs-buehl/forum/spiele/nim/nim.htm
Teilziele
1.Teilaufgabe
(
zur 2.Teilaufgabe,
zur 3.Teilaufgabe)
Es soll zunächst eine Variante des Spiels programmiert werden, die in einer der obigen
Webseiten folgendermaßen beschrieben ist:
Das Nim-Spiel ist ein Spiel für zwei Personen.
Gegeben ist ein Haufen von 13 Streichhölzern. Abwechselnd nehmen zwei Personen 1, 2 oder 3
Streichhölzer. Derjenige, der den Haufen leerräumt, hat gewonnen.
Pflichtenheft zur 1.Teilaufgabe
/1/ Es ist nach obiger Vorgabe ein Nim-Spiel für zwei menschliche Spieler zu programmieren.
/2/ Die Namen der Spieler werden erfragt.
/3/ Die Spielregeln werden überwacht.
/4/ Die Hölzchenzahl wird angezeigt.
"interne Pflichten":
/5/ Es ist mit Dia ein
UseCase-Diagramm
anzufertigen.
/6/ Es ist mit Delphi ein einfacher Prototyp zu programmieren.
/7/ Es ist mit UmlEd ein
Klassendiagramm
anzufertigen.
Prototyp
Objektorientierte Analyse
Hier wird die Aufgabenstellung durch verschiedene UML-Diagramme zusammen mit erläuterndem Text aus unterschiedlichen Blickwinkeln dargestellt und im Detail präzisiert. Die Abgrenzung zum objektorientierten Design geschieht durch die Frage nach "Was" und "Wie". Die objektorientierte Analyse steht am Ende des "Was", das objektorientierte Design am Anfang des "Wie".
Anwendungsfalldiagramm
Aktivitätsdiagramm
Zustandsautomat
Objektorientiertes Design
Hier wird man die Objekte in ihrer Hierarchie und ihrem Zusammenspiel festlegen. Das Ergebnis der Festlegungen wird in UML-Diagrammen dargestellt.
Ebenso geschieht hier die Auswahl beziehungsweise die Konstruktion der benötigten Algorithmen. Die Algorithmen werden durch Angabe der Fundstellen und/oder durch Struktogramme dokumentiert.
Ein Design im Hinblick auf besondere Möglichkeiten einer Programmiersprache ist zu vermeiden. Übertragbarkeit ist wichtiger als Eleganz der Einzellösung.
Klassendiagramm
Kollaborationsdiagramm
Packagediagramm
Implementierung
nim0.zip nim1.zip
Erst ab hier spielt die gewählte Programmiersprache eine Rolle. Hier wird der Quelltext in *.zip-Archiven zum Download angeboten.
Teile des Quelltextes wird man häufig zur Darstellung von Einzellösungen zitieren und mit Text kommentieren. Quelltext soll mit beigem Hintergrund und eventuellen farblichen Hervorhebungen dargestellt werden.
type
TZustand = (rot,rotgelb,gruen,gelb);
|
Test
Hier sind die durchgeführten Tests mit Angabe der Testdaten zu dokumentieren.