„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Welche Strategien sorgen für die richtige Bewegung der Spielsteine ​​in einem Spiel von 2048?

Welche Strategien sorgen für die richtige Bewegung der Spielsteine ​​in einem Spiel von 2048?

Veröffentlicht am 07.11.2024
Durchsuche:472

What Strategies Ensure Proper Tile Movement in a 2048 Game?

Korrektur der Kachelbewegung für ein 2048-Spiel

Beim Versuch, eine Befehlszeilenversion des beliebten Spiels 2048 zu erstellen, können Schwierigkeiten auftreten bei der Implementierung der richtigen Kachelbewegung.

Problem beim Zusammenführen von Kacheln

Ein Problem, das auftreten kann, ist, wenn sich eine Kachel an einer anderen Kachel mit demselben Wert vorbeibewegt. Zum Beispiel mit dem folgenden Board:

[2][2][4]

Und der Spieler gibt „->“ ein, das gewünschte Ergebnis sollte sein:

[0][4][4]

Ihr aktueller Ansatz behandelt dieses Szenario jedoch möglicherweise nicht richtig, was möglicherweise zu einer Verschmelzung der 4er und einem unerwünschten Ergebnis von Folgendem führt:

[0][0][8]

Lösung

Um dieses Problem zu beheben, sollte Ihre Logik zum Zusammenführen von Spielsteinen die Bewegungsrichtung des Spielers berücksichtigen. Scannen Sie die Kacheln in die entgegengesetzte Richtung der Bewegung und priorisieren Sie das Zusammenführen von Kacheln in dieser Richtung. Dadurch wird sichergestellt, dass Sie vermeiden, Kacheln zusammenzuführen, die bereits in einer vorherigen Iteration zusammengeführt wurden.

Im obigen Szenario beginnen Sie beispielsweise mit dem Scannen in der Spalte ganz rechts und arbeiten sich nach links vor, wobei Sie alle 4er zusammenführen, auf die Sie stoßen auf dem Weg, bis Sie die Spalte ganz links erreichen.

Codeoptimierungen

Ihr Code enthält mehrere Duplikate von Schleifen über verschiedene Bewegungsfälle hinweg. Um die Effizienz zu verbessern, sollten Sie erwägen, diese Schleifen in eine einzige Schleife umzuwandeln, die alle Fälle behandelt:

for i := 1; i < height; i   {
    for j := 0; j < width; j   {
        if board[i][j] == 0 {
            continue
        }

        switch input {
            case "d":
                updateBoardDown(board, i, j)
            case "u":
                updateBoardUp(board, i, j)

            [...]
        }
    }
}
Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729745887 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3