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) [...] } } }
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3