2048 ゲームの正しいタイルの動き
人気のゲーム 2048 のコマンドライン版を作成しようとすると、問題が発生する可能性があります
タイルの結合の問題
発生する可能性のある問題の 1 つは、タイルが同じ値を持つ別のタイルを通過する場合です。たとえば、次のボードの場合:
[2][2][4]
プレーヤーが「->」を入力すると、望ましい結果は次のようになります:
[0][4][4]
ただし、現在のアプローチでは処理できない可能性があります。このシナリオを正しく実行すると、4 がマージされ、次のような望ましくない結果が生じる可能性があります。
[0][0][8]
解決策
この問題を解決するには、タイルのマージ ロジックを次のようにする必要があります。プレイヤーの移動方向を考慮します。移動の反対方向にタイルをスキャンし、その方向のタイルの結合を優先します。これにより、前の反復で既にマージされたタイルのマージを確実に回避できます。
たとえば、上記のシナリオでは、右端の列からスキャンを開始し、左に向かって進み、見つかった 4 をマージします。
コードの最適化
コードには、さまざまな動作ケースにわたるループの重複がいくつか含まれています。効率を向上させるには、これらのループをすべてのケースを処理する単一のループにリファクタリングすることを検討してください:
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) [...] } } }
以上が2048 年のゲームで適切なタイルの移動を保証する戦略は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。