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) [...] } } }
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