そこで、AI を使って独自のスネーク ゲームを作成しましたが、非常に奇妙なスネーク アクションが表示されます。
したがって、私のアルゴリズムは次のとおりです。
- マップを取得: 1 - パスはクリア、0 - パスなし (壁、ヘビ)
- 果物の位置を取得する
- SnakeAI の頭の位置を取得する
- A* アルゴリズムに送信する (正常に動作)
- パスを取得します (ポイントの配列。末尾はフルーツの位置、先頭はスネークAi の頭)
- snakeAI の向きを設定する
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 週間、その間違った動きと戦っていますが、エラーがどこにあるのか本当にわかりません。ヨーダマスター、助けて。