Textmodus 2048 Spiel in C, Algorithmus erklärt - LeaseWeb labs

Textmodus 2048 Spiel in C, Algorithmus erklärt - LeaseWeb labs

Sie können die Fliesen in vier Richtungen bewegen mit den Pfeiltasten: oben, unten, links und rechts. Alle Zahlen auf der Platine wird in diese Richtung verschieben, bis sie gegen die Wand, und wenn sie ineinander stoßen dann zwei Zahlen werden zu einem kombiniert werden, wenn sie den gleichen Wert haben. Jede Nummer wird nur einmal pro Zug kombiniert werden. Jede Bewegung, eine neue Nummer 2 oder 4 erscheint. Wenn Sie ein 2048 auf dem Brett Sie gewonnen haben, aber Sie verlieren, wenn das Brett voll ist und man kann nicht einen Schritt machen.

Ich habe ich für das Feld in einer zweidimensionalen Array genannt Platte zu speichern, die 4 × 4 ist.

Da ich das Board werden soll als Vorstand adressiert [x] [y], besteht der Vorstand aus einer Reihe von vier Säulen Größe vier. So ist die erste Spalte der Array [2,0,4,0]. Wenn wir die oben-Taste drücken sollen diese werden [2,4,0,0]. Die Funktion „slideArray ()“ ist für diese reponsible. Diese Funktion wird „schieben“ die Zahlen in den Feldern wie folgt aus:

Der Algorithmus kann nur Board verwenden [x] auf eine Säule zu zeigen und direkt daran arbeiten. In Pseudo-Code, das ist, was der Algorithmus tut:

Der obige Algorithmus ausgeführt werden alle Transformationen tun, wird es:

Aber es gibt ein Problem, es wird auch dies tun:

Die beiden der in einen vier verschmolzen und dann die ersten vier in das fusionierte sie ein Acht zu machen. Das ist falsch. Es sollte dies tun:

Dies wird durch das Hinzufügen eines „Stopp“ variable vermieden, die anfänglich auf Null gesetzt werden, aber wenn ein merge es wird auf die Zusammenführung Position plus einem gemacht wurde. Dies wird sicherstellen, dass jede nächste Folie stoppt, bevor es in diese Nummer verschmilzt wieder, da Doppel verschmilzt nicht erlaubt.

Um zu verhindern, komplexe Programmierung verwende ich eine Funktion rotateBoard, dass das Brett um 90 Grad gegen den Uhrzeigersinn dreht. Dies ermöglicht es der moveleft (board) umgesetzt werden, wie:

Solange Sie insgesamt viermal alles drehen wie erwartet funktioniert. Diese Methode ist nicht sehr effizient, sondern reduziert auch die Komplexität des Codes.

Kompilieren und Ausführen

Da 2048.c eine einzelne C-Datei ist, ist es einfach zum Laufen zu bekommen, führen Sie einfach die folgenden Befehle:

Dies wird auf den meisten Maschinen laufen. Wenn nicht, dann führen Sie den folgenden Befehl, um den Compiler zu installieren:

Weiterführende Literatur

In Verbindung stehende Artikel