Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Minimallogo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

s n h m r u
i

Das Rule Set optimiert

Optimierungen für das Regelwerk

In diesem Kapitel sollen Anregungen für alternative Algorithmen für das Regelwerk gegeben werden. Die Implementierung ist in der Regel für fortgeschrittene Schüler gedacht.

Kannst Du Dir vorstellen, was passiert, sobald Du das Spiel auf einem 1000x1000-Spielfeld spielst? Sobald ein Stein eingeworfen wird, sucht unser aktuell implementierter Algorithmus zuerst in der ganzen Zeile, dann in der ganze Spalte um den Stein herum nach einem 4er-Block; Danach wird das Ganze auch noch diagonal gemacht. Da man davon ausgehen kann, dass im Spielzug davor noch kein 4er-Block gefunden wurde, bedeutet dass, dass sich in 1000 Feldern genau einer dieser Blöcke befinden kann (oder auch nicht). Die Suche nach diesem potentiellen Block kann dauern.

Aufgabe 1

überlege Dir, welche Informationen wir über einen potentiellen 4er-Block haben, wenn wir gerade einen Stein eingeworfen haben.

Die Idee ist einfach: Da wir zuvor dank unseres Algorithmus noch keinen Viererblock gefunden haben können, kann ein Block höchstens durch das Einwerfen des neuen Steines entstanden sein - soll heißen: Der Block muss sich um den eingeworfenen Stein befinden:

vierGewinnt
Quelle: SD BRI


Aufgabe 2

Formuliere einen Algorithmus, der nach einem Viererblock um den eingeworfenen Stein herum sucht. Die Suche kann sich dabei auf horizontale und vertikale Blöcke beschränken.

Erstelle eine Kopie der Klasse 'RuleSet' und implementiere die Methode 'checkPlayerWon' mit dem neuen Algorithmus. Zum Testen musst Du einfach ein Regelwerk aus der neuen RuleSet-Klasse erzeugen. Implementiere die Diagonalsuche mit demselben Algorithmus (Achtung schwer)

Quellen

Suche

v
7.2.5.4.2
inf-schule.de/oop/python/viergewinnt/vertiefung/ruleset
inf-schule.de/7.2.5.4.2
inf-schule.de/@/page/rA1tVTJLfSfqEpbm

Rückmeldung geben