-1

そこで、AI を使って独自のスネーク ゲームを作成しましたが、非常に奇妙なスネーク アクションが表示されます。

ビデオ

したがって、私のアルゴリズムは次のとおりです。

  1. マップを取得: 1 - パスはクリア、0 - パスなし (壁、ヘビ)
  2. 果物の位置を取得する
  3. SnakeAI の頭の位置を取得する
  4. A* アルゴリズムに送信する (正常に動作)
  5. パスを取得します (ポイントの配列。末尾はフルーツの位置、先頭はスネークAi の頭)
  6. snakeAI の向きを設定する

Pastebin のコード

private void AI() {

        Point s = new Point();
        //SnakeAI head
        Point n = new Point();
        //Food
        n.x = food.x / 13;
        n.y = food.y / 13;
        s.x = snakeAI.getBody().get(0).x / 13;
        s.y = snakeAI.getBody().get(0).y / 13;

        int px;
        int py;

        //Path
        g = f.findPath(map, n, s);

        if (g.size() > 0) {
        //Next snake positin
            px = g.get(g.size() - 1).x;
            py = g.get(g.size() - 1).y;
        } else {
           return;
            }

            if (s.x == px) {  
                //Move UP
                if (s.y > py) {
                    snakeAI.setDirection(Snake.DIR_UP);
                }
                //Move DOWN
                if (s.y < py) {
                    snakeAI.setDirection(Snake.DIR_DOWN);
                }
            }
            if (s.y == py) {
                //Move LEFT    
                if (s.x > px) {
                    snakeAI.setDirection(Snake.DIR_LEFT);
                }
                //Move RIGHT
                if (s.x < px) {
                    snakeAI.setDirection(Snake.DIR_RIGHT);
                }
            }
        }

それで、私は約 1 週間、その間違った動きと戦っていますが、エラーがどこにあるのか本当にわかりません。ヨーダマスター、助けて。

4

1 に答える 1