• Mitspieler gesucht? Du willst dich locker mit der Community austauschen? Schau gerne auf unserem ComputerBase Discord vorbei!

Blokt - Ergründung der Spiel(-feld-)logik

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo,

neulich ist mir im Bamboo Dock das Spiel "Blokt" über den Weg gelaufen und ich fand es gleich interessant. Für alle, die das Spiel nicht kennen, hier eine kleine Einführung: das Bild ist von links nach rechts zu lesen.

Man hat ein Spielfeld mit verschieden großen Blöcken, die man nur in eine Richtung vor oder zurück schieben kann. Ziel ist es, alle Blöcke so zu verschieben, dass man den roten Block durch die Öffnung rechts aus dem Spielfeld schieben kann. Dabei sollte man so wenige Züge wie möglich brauchen und so wenig Zeit wie möglich. Hier noch ein Screenshot eines fortgeschritteneren Levels:


Und nun zu meiner Frage: ich will ein Programm schreiben, dass (a) solche Spielfelder generieren kann (die auch lösbar sind) und dass (b) diese Lösen kann.
Und dazu benötige ich ersteinmal Eure Hilfe, denn ich weiß nicht, wie ich anfangen soll mit der Generierung von Spielfeldern. Welche Bedingungen müssen gegeben sein, damit das Spielfeld lösbar ist? Und wie bekomme ich das sinnvoll zusammen?

Ich hoffe Ihr könnt mir helfen :(,
Gruß,
CPU
 
Hmm, die einfachste Methode wäre meines Erachtens nach bei der Spielfeldgenerierung von einem gelösten Spiel auszugehen und dann "x" Züge "rückwärts" zu machen, bevor man das Spielfeld dem Spieler präsentiert.

So ist immer zu 100% eine Lösbrkeit gegeben und der Computer kann jederzeit das Spiel lösen.

EDIT: Solang du drei freie Felder übrig lässt dürfte diese Art Puzzle immer löbar sein.
 
Zuletzt bearbeitet:
D.h. wenn ich das richtig verstanden habe, sagst Du, dass der PC rückwärts spielt und dadurch dem Spieler ein mögliches Spielfeld generiert werden kann zu dem ja die Lösung bereits bekannt ist. Mmmm ... Aber:

* Wie kann ich z.B. die Schwierigkeit des Spielfeldes einstellen (Also ich habe mir das so vorgestellt: ich habe eine Funktion f(x), die mir ein Spielfeld mit der Schwierigkeit x generiert, wobei x zwischen 0.01 und 0.99 liegen kann)?
* Könnte man Gefahr laufen, dass das Spielfeld zu einfach wird?

Gruß,
CPU
 
Du kannst doch die Schwierigkeit über die Anzahl der notwendigen Züge zum Erfolg bestimmen oder?

Also: auf leicht macht der Computer 5 Züge rückwärts und präsentiert es dem Spieler, auf mittel 10 usw. Wenn zu leicht ist, kann man die Anzahl der Züge erhöhen.
 
Möglichkeiten für die Einstellung des Schwierigkeitsgrades:

- Größe des Hauptblockes
- Größe der Nebenblöcke
- Anzahl der freien Felder
- Anzahl der computergenerierten Züge
- Einbau unbeweglicher Hindernisse (?)


Aber wie gesagt, solange du genau so viele Felder frei lässt, wie dein größter Block besitzt, ist das Spielfeld lösbar.
 
Es reicht nicht aus, einfach drei Felder freizulassen. In dem oberen Screenshot sieht man rechts unten einen Klotz mit der Länge von 3 Feldern. Um den roten Klotz aus dem Spielfeld zu bekommen, muss der 3-er Klotz ganz nach unten. Befinden sich aber 2 3er oder 3 2er Klötze waagerecht in der unteren Reihe, können diese nicht weggeschoben werden und blockieren den 3er Klotz.
Erzeugt man sich ein schon gelöstes Feld, ist der Durchgang für den roten Klotz komplett fertig - es gibt also nur einfach zu lösende Spielfelder. Es gibt aber auch Schwierigkeitsgrade, bei denen man den roten Klotz etwas vorschiebt, dann den dahinter freigewordenen Platz für andere Klötze nutzt, dann wird vor dem roten Klotz wieder was frei, usw. Oder andersrum - der rote Klotz ist am Anfang in der Mitte und muss erst vom Ausgang weggeschoben werden, um Platz zum Umräumen zu haben.
 
Zurück
Oben