Als erstes muss ich sagen, dass mit der Ansatz mit Klassen (OK, es ist nur eine

) besser gefällt als der ursprüngliche.
Mir fällt jedoch noch auf, dass du die Variablen
r0 bis
r5 ebenfalls durch ein Array ersetzen solltest, um den Code unabhängig von der Spielfeldgröße zu machen. Desweiteren meldet mein Compiler (jaja VC++6) immer noch zwei Fehler. Die Methoden
Feld:
ruefen und
Feld::ziehen sind als bool definiert, liefern aber keinen Rückgabewert (bei
pruefen meint der Compiler aufgrund des
else if am Ende der Funktion es gäbe noch einen weiteren Zweig, der ja auch Formal da ist, aufgrund der bool-Variable
gewonnen aber nie erreicht wird, also der nicht implementierte
else zum
else if).
Ich habe mir mal erlaubt, deinen Code umzuschreiben, und ihn auch von der Anzahl der Spielsteine die zum Sieg führen unabhängig zu machen. Damit sollte es nun auch möglich sein, 10 gewinnt auf 100x100 Feldern zu spielen. Getestet hab ich das ganze nur soweit wie meine Zeit es zulässt. Fehler könnten also noch drin sein. Probier einfach mal damit rum.
Außerdem habe ich mir mal auf die Schnelle andere Methoden zur Überpfüfung auf Spielende überlegt. Sind bestimmt nicht die elegantesten Lösungen, scheinen aber zu funktionieren und sind ebenfalls unabhängig von allen Spielparametern.
Als letztes noch ein Punkt, den ich allerdings so gelassen habe wie er ist: Die Methode
zeichnen würde ich nicht als Member von Feld implementieren. Die Klasse Feld sollte sich nur um die Verwaltung des Spielfeldes in Hinblick auf die Spielregeln kümmern. Grafische Ausgabe hat dort nichts verloren. Auf diese Weise wärst du in der Lage, das Spiel grafisch in verschiedensten Varianten zu gestalten, ohne dass du das Herz des Spiels nämlich die Klasse
Feld nochmal anfassen musst. Die Klasse
Feld sollte dazu aber noch eine Methode zur Verfügung stellen, mittels derer der Inhalt von Feld (bzw. einzelnen Feldern) abgefragt werden kann. Außerdem habe ich Drei Konstanten in feld.h definiert, die ich eher als Parameter bei der Initialisierung von
Feld übergeben würde. Damit wäre die Klasse dann unabhängig und parametriebar.
j o e