編集:最近、私の質問は2048ボットチャレンジの複製として提案されました。この質問はその質問とは異なり、回答をその質問とは異なる方法で考える必要があることを強調したいと思います。2048ボットチャレンジは、ユーザーにボットを作成するように要求し、ボットを1時間実行します。最高スコアはユーザーのスコアです。さらに、555バイトの制限がありました。私のチャレンジでは、コードの実行頻度ははるかに低く、3回だけです。スコアは、これらの3回の平均スコアを使用して、ゴルフコードの文字長で割ることによって計算されます。私の質問は、エントリが「スマート」であり、総当たりで最高のスコアを取得しようとしないことを奨励しています。
-
編集:getメソッドがgetTileに変更され、JSキーワードgetとの競合を回避しました。さらに、高得点セクションが追加されました。
最近、JavaScriptを使用して人気のあるゲーム2048を制御できるサイトを作成しました。私のサイトはここにリンクされています:
どうやって:
Ace Editorはボードの上にあります。コードを配置します。コードは250ミリ秒ごとに1回、または1秒間に4回実行されます。これはサイクルと呼ばれます。
ボードを制御するには、次の方法を使用します。矢印キーは使用できません。
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
便宜上、次の変数が定義されています。
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
ルール:
- ランダム性はありません。ロジックを使用する必要があります。(はい、私はサンプルコードがランダムを使用することを知っています。)
- ゲーム機能へのフックや他の方法での不正行為はありません
- 通常、サイクルごとに1つのmoveメソッドのみを呼び出してください。さらに使用しても問題ありませんが、アニメーションにねじ込みます
- ボードはランダムな状態で開始する必要があり、ゲーム前の状態を変更しないでください
- 投稿には、コードの非圧縮バージョンとゴルフバージョンの両方を提供する必要があります。
- PasteBinを介して提供されるコードの非圧縮バージョンを既に読み込むサイトへのリンクを提供する必要があります(たとえば、... thatcoolidea.com/2048?i=pH18GWtuはサンプルコードを読み込みます)。
得点:
- あなたのコードは私によって採点されます。
- スコアのパートAは、コードの平均3回の実行であり、切り捨てられています。
- スコアのパートBは、ゴルフコードの文字の長さです。
- 最終スコアはパートAをパートBで割ったものです
勝者は、選択した場合、サイト上のサンプルコードとしてコードを不滅化し、コード内のコメントで承認します。
幸運を!チャレンジをお楽しみください。
現在のハイスコア 225.22-フリーザー-user3217109