Startseite   |  Site map   |  A-Z artikel   |  Artikel einreichen   |   Kontakt   |  
  


informatik artikel (Interpretation und charakterisierung)

Datenstrukturen


1. Java
2. Viren



Einleitung ,,Vier-Gewinnt`` soll nach den Regeln der objektorientierten Programmierung implementiert werden. Grundlegendes Konzept dabei ist die Verbindung von Daten und den auf ihnen anzuwendenden Aktionen. Deshalb wurde für die vorliegende Implementation eine Klasse Brett gewählt, welche einerseits die Daten des Spielbretts enthält und andererseits Methoden zu deren Manipulation (z.B. Setzen und Löschen von Steinen, Bewertungsfunktion, Strategie etc.). Da die Strategie letztlich auch nur Steine innerhalb des Spielbretts verändert, ist sie ebenfalls in der Klasse Brett angesiedelt.

Datenstruktur für einen Zug
Um einen Zug zu speichern oder zu übergeben, wird die folgende Datenstruktur benutzt:

struct Zug

{

int x;
int y;

Farbe spieler;
Status status;

};
Dabei kommt den Komponenten im einzelnen folgende Bedeutung zu:

x:
Die x-Koordinate der gesetzten oder zu setzenden Kugel im 67 Raster.

y:
Die y-Koordinate der gesetzten oder zu setzenden Kugel im 67 Raster.

spieler:
Enthält einen Wert aus dem enum-Typ Farbe, der wie folgt definiert ist: enum Farbe {keine, Spieler1, Spieler2}; Dieser Wert bezeichnet welche Kugel an der angegebenen Position zu setzen ist.

status:
Enthält einen Wert aus dem enum-Typ Status, der wie folgt definiert ist: enum Status {ZugLegal, ZugIllegal}; Dieser Wert bezeichnet ob ein Zug an die angegebene Position zugelassen ist oder nicht.

Die Klasse Brett

Die Klasse Brett enthält als Daten das Brett und einige weitere interne (private) Variablen. Desweiteren enthält sie die Funktionen zur Manipulation des Bretts und die Strategie, die anhand der Daten des Bretts einen Gegenzug berechnet.

Die Klasse Brett hat den folgenden Aufbau:
class Brett

{
private:

Zug last;
int counter;

Ergebnis Zustand;
Strategie str;

public:

int brett[6][7];


Brett( Strategie strategie ) {}


void take_back() {}


Zug put(int x, Farbe f) {}


int detect( Zug zg ) {}


Ergebnis check_result() {}


void strat(Farbe f) {}

};
Den einzelnen Daten und Funktionen kommt dabei die folgende Bedeutung zu:
Zug last; (private):
Diese Hilfsvariable vom Typ Zug speichert den letzten Zug, der im Brett gesetzt wurde. Mit ihrer Hilfe kann nach einen vorausschauenden Zug der ursprüngliche Zustand des Bretts wieder hergestellt werden.
int counter; (private):
In dieser Hilfsvariablen wird gespeichert wieviele Kugeln sich aktuell im Spielbrett befinden.
Ergebnis Zustand; (private):
Diese Hilfsvariable vom enum-Typ Ergebnis speichert den aktuellen Zustand (gewonnen / remis / verloren) welcher sich aus der aktuellen Belegung des Bretts ergibt. Der enum-Typ Ergebnis ist dabei wie folgt definiert: enum Ergebnis {Sieg1, Sieg2, Remis}; Dabei steht Sieg1 für einen Sieg des menschlichen Spielers und Sieg2 für den Sieg der Computer-Strategie.
Strategie str; (private):
Diese Hilfsvariable vom enum-Typ Strategie speichert, welche Strategie aktuell eingestellt ist. Der enum-Typ Strategie ist dabei wie folgt definiert: enum Strategie {defensiv = -250, normal = 100, aggressiv = 350}; Die zugeordneten Zahlenwerte werden bei der Bewertung von Computerzügen addiert.
int brett[6][7]; (public):
Im Array brett wird das Spielbrett gespeichert.
Brett( Strategie strategie ){} (public):
Konstruktor für die Klasse Brett. Dem Konstruktor wird die Default-Strategie übergeben. Er initialisiert das Brett und andere interne Daten.
void take_back(){} (public):
Diese Funktion nimmt den letzten Zug zurück. War noch kein Zug getätigt, so passiert nichts.
Zug put(int x, Farbe f){} (public):
Diese Funktion versucht in der Spalte x, eine Kugel der Farbe f zu setzen. War dies erfolgreich, so wird im Rückgabezug neben der Spalte auch die y-Position, bei welcher die Kugel endete gespeichert. Desweiteren wird vermerkt, daß es sich um einen legalen Zug handelte und der Zähler für abgelegte Kugeln wird erhöht. Konnte die Kugel nicht mehr gesetzt, werden wird im zurückgegebenen Zug als x,y-Koordinate und illegal als Status vermerkt.
int detect( Zug zg ){} (public):
Diese Funktion testet von der im Zug übergebenen x,y Position aus in alle Richtungen, wieviele Steine der im Zug übergebenen Farbe bereits vorhanden sind. In Abhängigkeit von der Länge der gefundenen Reihen einer Farbe wird ein Zahlenwert ermittelt, welcher der Rückgabewert der Funktion ist. Besondere Konstellationen (3er, 4er) werden mit Bonuspunkten bewertet. Konnte aus irgendwelchen Gründen keine Bewertung vorgenommen werden, wird ein negativer Zahlenwert zurückgegeben.
Ergebnis check_result(){} (public):
Diese Funktion ermittelt den innerhalb der Strategie gespeicherten Zustand (gewonnen / verloren / remis) und liefert diesen als Rückgabewert.
void strat(Farbe f){} (public):
Diese Funktion ermittelt für die Farbe f (ausgehend von der aktuellen Brettposition und der eingestellten Strategie) einen möglichst optimalen Gegenzug und setzt diesen im Brett. Ändert sich dadurch der aktuelle Zustand, so wird dies in der privaten Variablen Zustand gespeichert.

 
 



Datenschutz
Top Themen / Analyse
indicator The All-Stars: Well known trojan horses
indicator Telefonbanking
indicator IBM LAN-Server und Microsoft LAN-Manager
indicator X-Window-Systeme
indicator Computerviren
indicator Umschalten in den Protected Mode
indicator Lösungsfindung durch Zerteilen eines Problems
indicator Die Jukebox
indicator Was ist der Vorteil von MP3 gegenüber WAV ?
indicator DER AUFBAU VON DATEIEN




Datenschutz
Zum selben thema
icon Netzwerk
icon Software
icon Entwicklung
icon Windows
icon Programm
icon Unix
icon Games
icon Sicherheit
icon Disk
icon Technologie
icon Bildung
icon Mp3
icon Cd
icon Suche
icon Grafik
icon Zahlung
icon Html
icon Internet
icon Hardware
icon Cpu
icon Firewall
icon Speicher
icon Mail
icon Banking
icon Video
icon Hacker
icon Design
icon Sprache
icon Dvd
icon Drucker
icon Elektronisches
icon Geschichte
icon Fehler
icon Website
icon Linux
icon Computer
A-Z informatik artikel:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z #

Copyright © 2008 - : ARTIKEL32 | Alle rechte vorbehalten.
Vervielfältigung im Ganzen oder teilweise das Material auf dieser Website gegen das Urheberrecht und wird bestraft, nach dem Gesetz.
dsolution