2048 ist ein unglaublich lustiges und süchtig machendes Spiel, in dem das Ziel darin besteht, ein Plättchen mit 2048 darauf zu erstellen.
Hier ist eine kurze Beschreibung des Spiels:
Durch Drücken einer Pfeiltaste werden alle Blöcke auf der Bühne in diese Richtung verschoben. Wenn beispielsweise x
ein Block dargestellt wird und Sie in diesem Fall den Aufwärtspfeil gedrückt haben:
...x
.x..
..x.
xx..
Dann würde die Tafel werden
xxxx
.x..
....
....
Weiterhin sind die Blöcke ab nummeriert 2
. Wenn zwei gleich nummerierte Blöcke zusammen verschoben werden, werden sie zur nächsten Nummer zusammengeführt. Zum Beispiel "up" auf dieser Tafel drücken:
.2..
..22
.2..
....
Würde dies schaffen:
.422
....
....
....
Und dann, nachdem Sie "rechts" gedrückt haben, wird es ..44
, und wenn Sie erneut rechts drücken, wird ein "8" -Block erstellt, und so weiter.
In jeder Runde wird ein neuer "2" -Block auf einem zufälligen offenen Feld erstellt. (Es ist eigentlich nicht immer eine "2", aber der Einfachheit halber behalten wir es bei.) Wenn keine weiteren Züge mehr möglich sind (dh der Spielplan ist voll und Sie können nichts zusammenführen), ist das Spiel verloren, und wenn Ein 2048er Block wird erstellt, Sie gewinnen!
Ihre Herausforderung ist es, dieses Spiel nachzubauen, Golf!
Für Randfälle, wie das Drücken von "rechts" auf dieser Tafel:
.... .222 .... ....
Sie müssen die Kacheln zusammenführen, die dem Rand der gedrückten Pfeiltaste am nächsten liegen. Dies würde beispielsweise der Fall sein
..24
, weil die zweite und dritte "2" der rechten Kante am nächsten liegen.Wenn der Spieler einen ungültigen Zug drückt (wie "auf" auf einem Brett
2.2. / .... / .... / ....
), müssen Sie den Zug ignorieren.Bewegungen können auf jede Art und Weise akzeptiert werden, z. B. durch Klicken, Pfeiltasten
ULRD
usw.Die Kacheln müssen alle die gleiche Form haben - eine "1024" -Kachel sollte die gleiche Größe haben wie eine "2" -Kachel.
Die Fliesen müssen in irgendeiner Weise getrennt werden. Dies ist beispielsweise
|1024| 2|1024|1024|
ein gültiges Beispiel für eine Zeile (vorausgesetzt, die Kacheln sind Quadrate), während dies1024 210241024
nicht der Fall ist.Sie müssen "Sie gewinnen" ausgeben, wenn der Spieler ein 2048-Plättchen erstellt, oder "Sie verlieren", wenn keine gültigen Züge mehr übrig sind.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
quelle
Antworten:
APL (Dyalog APL) ,
153150167156 BytesAufforderungen zum Verschieben; 0 = Links, 1 = Auf 2 = Rechts, 3 = Ab
Probieren Sie es online!
Ungolfed mit Leerzeichen
Erläuterung
Leerzeilen kennzeichnen eine neue Zeile, während Zeilenblöcke zu einer einzelnen Zeile gehören
quelle
GolfScript, 323 Zeichen
Die Schlüssel, die Sie verwenden müssen, sind,
wasd
aber Sie können die Konstante im Code in beliebige Schlüssel ändern. Unbekannte Schlüssel oder illegale Aktionen werden ignoriert. Leider müssen Sie nach jeder Taste die Eingabetaste drücken.256 Zeichen Lösung
Hier ist die Ausgabe hexadezimal logarithmisch, dh
0
steht für.
,1
für2
,2
für4
,3
für8
...B
für2048
. Da wir alle Hexadezimalzahlen und Zweierpotenzen kennen, sollte dies keine Einschränkung darstellen.Beispiellauf (erste Züge):
quelle
J -
240230216 charDies zählt den abschließenden Zeilenumbruch, da Sie diesen benötigen, um das Spiel an der Konsole zu starten. Spielen Sie, indem Sie eines von eingeben
udlr
und dann die Eingabetaste drücken. Moves, die nichts mit dem Board zu tun haben, werden korrekt gehandhabt, aber das Programm wird wütend auf Sie, wenn Sie eine schlechte Eingabe machen.Die lesbare Version und die Erklärung sind etwas zu groß, um bequem in den Beitrag zu passen. Eine Beschreibung finden Sie unter diesem Link .
Verwendungszweck:
quelle
Mathematica, 484 Zeichen
Sehr hässlich.
Mit den Pfeiltasten gesteuert.
Ungolfed:
quelle
Delphi XE3 (Warte auf viele {whispers} 2.979 Bytes -> ungolfed 4.560 Bytes)
Ich nenne diesen "2048-Code den Roman". Es wurden
mehr Bytes verwendet als ich mag, aber es funktioniert und es hat Spaß gemacht, das zu tun.
Ich werde später immer noch versuchen, es kürzer zu machen.
Gerade stattfindendes Spiel
Golf gespielt
Ungolfed
quelle
,
und zahlen kann.
!C (C89-Standard), 881 Bytes
Bewege dich mit den WASD-Tasten. Kompiliert in GCC und klingelt standardmäßig, sofern nicht der C99-Standard eingestellt ist (denke ich). Verwendet termios.h, funktioniert unter Linux und MacOS X. Über Windows nicht sicher.
In einigen Zeilen unterbrochen:
Die Blicke:
Es kann sicher verbessert werden.
quelle
Java:
13461269Bearbeiten Obwohl dieser Wettbewerb abgeschlossen ist, kann ich manchmal nicht loslassen, wenn Verbesserungen möglich sind. Diese Version bietet eine schlankere, gemeinere Falzfunktion, die Räumung der meisten
boolean
Typen, außer wenn sie ohne sie ausführlicher wäre, und etwas kleinere Zellen (4x4 statt 5x5), um dort ein paar zusätzliche Zeichen auszuschneiden.Das war also ein Spaß. Danke fürs Schreiben! Ungolfed, das waren 2856 Bytes, golfed habe ich auf 1346 Bytes geschrumpft. Da ich Java bin, werde ich nicht gewinnen, aber ich wollte eine gute Leistung erbringen. Es hat Spaß gemacht, eine "allgemeine" Roll-up-Funktion zum Behandeln von Kachelverbindungen und -zügen zu finden - Sie können natürlich meinen "Fortschritt" überprüfen, indem Sie die Commits in meinem Github-Repository nach dieser Lösung durchsuchen .
Golf gespielt:
Ungolfed: ( Durchsuchen Sie mein Github-Repository für dieses Projekt nach einer aktualisierten Version, einschließlich eines auf Behauptungen basierenden Tests für neue Falzfunktionen.)
Die Benutzung des Programms ist einfach. So bauen und betreiben Sie:
Drücken Sie, um
u
nach oben zu klappen,r
nach rechtsd
zu klappen,l
nach links zu klappen. Jeder andere Schlüssel wird ignoriert, ungültige Züge (keine Ergebnisse) werden ignoriert. Drücken Sie als Javaenter
nach jeder Taste, um den Zeilenpuffer zu leeren. Wie von den Regeln gefordert, wenn Sie die Programmausgaben gewinnenyou win
, wenn Sie die Programmausgaben verlierenyou lose
. Neue2
werden zufällig auf die offenen Kacheln gelegt. Zusammenführungen folgen den angegebenen Regeln. Zellen sind 4x4-Zeichen, wobei jede Zelle von einem Rand umgeben ist. Natürlich hinterlasse mir einen Kommentar, wenn ich etwas vermasselt habe und ich werde es mit Sicherheit reparieren.Beispielausgabe:
quelle
Lua,
622616615612592590575 BytesAbfragen stdin für 1,2,3,4, die mit left, down, right, up korrelieren stürzt ab, wenn Sie eine falsche Eingabe machen.
Leere Quadrate werden als Nullen gedruckt.
Beispielausgabe:
quelle
Clojure: 599
führe es in einem REPL aus
Golf gespielt
ungolfed
quelle