EDIT: Vor kurzem wurde meine Frage als Duplikat von 2048 Bot Challenge vorgeschlagen . Ich möchte betonen, dass sich diese Frage von dieser Frage unterscheidet und dass die Antworten anders gedacht werden müssen als diese Frage. 2048 Bot Challenge hat den Benutzer gebeten, einen Bot zu erstellen. Dieser wird eine Stunde lang ausgeführt, wobei die höchste Punktzahl die Punktzahl des Benutzers ist. Darüber hinaus hatte es ein Limit von 555 Bytes. Meine Challenge führt den Code viel seltener aus, nur dreimal. Ihre Punktzahl wird berechnet, indem Sie die durchschnittliche Punktzahl dieser drei Male verwenden und durch die Zeichenlänge Ihres Golf-Codes dividieren. Meine Frage ermutigt die Teilnehmer, "schlauer" zu sein und nicht zu versuchen, die höchste Punktzahl mit roher Gewalt zu erzielen.
-
BEARBEITEN: Die get-Methode wurde in getTile geändert, um Konflikte mit dem JS-Schlüsselwort get zu vermeiden. Zusätzlich wurde ein Highscore-Bereich hinzugefügt.
Kürzlich habe ich eine Site erstellt, mit der das beliebte Spiel 2048 mit JavaScript gesteuert werden kann. Meine Seite ist hier verlinkt:
Wie:
Ein Ass-Editor befindet sich über der Tafel. Sie platzieren Code darin, der einmal alle 250 ms oder viermal pro Sekunde ausgeführt wird. Dies nennt man einen Zyklus.
Verwenden Sie die folgenden Methoden, um die Karte zu steuern. Sie können die Pfeiltasten nicht verwenden.
up(); //move up
down(); //move down
left(); //move left
right(); //move right
move(integer); //integer is a direction. 0:up,1:right,2:down,3:left
getTile(y,x); //gets the value of the tile in position y,x on the board. See diagram
Die folgenden Variablen werden zur Vereinfachung definiert:
eother //boolean, alternates every cycle
frozen //integer, counts how many cycles the board has remained stationary
lastDir //integer, indicates the last direction that was tried to move in
//uses same format as the move method above.
startup //boolean, will always be true when the game first starts
//you can change it as you wish
a
b //a b and c are all persistant variables, they do not change each cycle
c //any other variables defined in the cycle will be reset every time
Regeln:
- Keine Zufälligkeit, Sie müssen Logik verwenden. (Ja, ich weiß, dass der Beispielcode zufällig verwendet wird.)
- Kein Hängenbleiben an den Spielfunktionen oder Betrügen auf andere Weise
- Versuchen Sie im Allgemeinen, nur eine Verschiebungsmethode pro Zyklus aufzurufen. Es ist in Ordnung, wenn Sie mehr verwenden, aber es passt zur Animation
- Das Brett muss in einem zufälligen Zustand beginnen, keine Änderung des Zustands vor dem Spiel
- Sie müssen sowohl die unkomprimierte als auch die Golf-Version des Codes in Ihrem Beitrag angeben.
- Sie müssen einen Link zu der Site bereitstellen, die bereits die unkomprimierte Version Ihres Codes lädt, die über PasteBin bereitgestellt wird. (Beispiel: ... thatcoolidea.com/2048?i=pH18GWtu lädt den Beispielcode.)
Wertung:
- Ihr Code wird von mir bewertet.
- Teil A Ihrer Punktzahl ist ein Durchschnitt von 3 Läufen des Codes, abgerundet.
- Teil B Ihrer Punktzahl ist die Zeichenlänge Ihres Golf-Codes.
- Ihre endgültige Punktzahl ist Teil A geteilt durch Teil B
Der Code des Gewinners wird auf Wunsch als Beispielcode auf der Site verewigt und in einem Kommentar im Code bestätigt.
Viel Glück! Ich hoffe, Sie genießen die Herausforderung.
Aktueller Höchststand 225.22 - Gefrierschrank - user3217109