Stack-Überlauf - Wie die Werte von Fliesen in 2048 in Java erhalten

ecently, forderte mich mein Freund eine KI zu machen, die das berühmte 2048-Spiel in Java spielt. Ich habe es und es funktionierte gut für ein paar Minuten, dann stecken geblieben. Nach einem wenig Debugging, wurde mir klar, dass es nicht das Brett richtig liest und es gedacht, dass ein 32 a 1024. Um war zu erklären, warum es das getan hat, muß ich zunächst erklären, wie sie den Wert der Fliesen auf dem Bildschirm bekommt.

Es macht den Benutzer zuerst ein Quadrat um das Spielbrett ziehen. Dies wurde getan, um das Programm zu sagen, wo das Spiel auf dem Bildschirm war. Er erzeugt dann 16 Punkte, die jeweils in einer einzelnen Kachel befinden. Mit Hilfe der Roboter-Klasse, speichert sie die Farben dieser 16 Punkte in einem Array.

Er prüft dann, ob es eine neue Farbe gefunden hat. Wenn es eine neue Farbe gefunden hat, dann weist sie die nächste Potenz von 2 zu dieser Farbe. Zum Beispiel wird die erste Farbe (Hintergrund) auf 0. Die nächste Farbe (weiß) zugewiesen 2 zugewiesen wird dann die nächste bis 4 und so weiter zugeordnet ist. Das Problem ist, dass, wenn die Fliesen bewegen, sie sind animiert das heißt, dass sie nicht nur an die richtige Stelle zu teleportieren statt, bewegen sie sich an die richtige Stelle. dies führt zu einem Moment, in dem die falsche Farbe unter einem der 16 Punkten verläuft und das Programm liest falsch, dass die Fliese.

Das bringt mich auf meine Frage: Gibt es eine Möglichkeit, den Tile-Wert im Spiel 2048, ohne neu zu erstellen, das Spiel in Java zu lesen?

Genauer gesagt, ist meine Frage, wie die eigentliche Spielbrett Daten von 2048 in Java zu bekommen?

Was ich frage ist ein Weg, um die Werte der Kacheln in einem externen Java-Programm zu erhalten.

Nehmen wir zum Beispiel das Board:

Stack-Überlauf - Wie die Werte von Fliesen in 2048 in Java erhalten

Aus diesem Board würde Ich mag die Werte der Zahlen erhalten und sie in einem Array zu speichern, die in etwa so aussehen:

Danke im Voraus :)

Bitte bearbeiten Sie die Frage aus, um ein bestimmtes Problem mit genügend Details zu begrenzen eine adäquate Antwort zu identifizieren. Vermeiden Sie mehrere verschiedene Fragen auf einmal zu fragen. Siehe Wie stellen Seite um Hilfe, diese Frage zu klären. Wenn diese Frage neu formuliert werden, um die Regeln in der Hilfe zu passen. bitte die Frage bearbeiten.

In Verbindung stehende Artikel