# 4 Gewinnt Algorithmus



## Meccan (7. Januar 2008)

Hallo Leute,

ich programmier gerade 4 Gewinnt. 
Soweit funktionieren auch die Spielzüge usw.
das einzigste Problem was ich habe ist, 
das ich mir kein gute und schneller Algorithmus
einfällt der überprüft ob es Spieler gewonnen hat.
Hab schon ein bisschen gegoogelt aber leider 
nicht gefunden, nur Algorithmen zu Ki's.

Hat einer von euch eine Ahnung wie ein
kurzer und schneller Algorithmus aussehen könnte?

Danke für eure Hilfe


----------



## zeja (7. Januar 2008)

Wie sieht denn dein Spielfeld aus? Ein zweidimensionales Arrays?


----------



## Meccan (8. Januar 2008)

Ja es ist ein Zweidimensionales Array.
Das Spielfeld ist bei mir 7 Felder breit und 6 Felder hoch.
Die waagerechten und senkrechten Lösungen hab ich schon,
ich verzweifel grad nur an der diagonalen Lösungen.

Die Lösung für die senk. und waagerechten Felder ist folgendermaßen:
Ich nehme mir das aktuelle Feld in dem gerade gesetzt wurde und 
schaue mir dann die Steine nach links und rechts oder oben und unten
an wenn dabei zählt ein Zähler hoch und wenn ich mehr als 3 Steine
der gleichen Farbe nebeneinander haben, hat der Spieler gewonnen.


Danke.


----------



## kaMii (8. Januar 2008)

Kleiner verbesserungsvorschlag von mir: Du musst für die waagrechten, senkrechten und diagonalen doch vorerst nicht die angrenzenden Felder betrachten, schau für einen Stein doch gleich das Feld 2 Felder weiter an (überspring 2 Felder). Wenn in dem Feld kein Stein deiner Farbe ist, das Feld leer ist oder gar nicht existiert weil dies ja schon außerhalb des Spielfeldrandes lliegen würde, kannst du das überprüfen in dieser Richtung schon mal abbrechen, da maximal nur 3 Steine deiner Farbe vorhanden sind. Ansonsten kannst du den zwischenraum ja danach noch überprüfen. Das sollte dir schon etwas Zeit beim überprüfen sparen.


----------



## Dark Ranger (15. Januar 2008)

Aber as ist denn wenn die Steine am Anfang so sind:

_ooxx_xo_

x=white
o=black

nach deiner Überprüfung, wenn weiß setzt

_ooxxxxo_

dann hat weiß nicht gewonnen, da du ja den zwischenraum nicht prüfst wenn du 2 felder auslässt, oder verstehe ich dich falsch?


----------

