Java 蛇AI怪异动作(错误动作)
所以,我用人工智能创建了我自己的蛇游戏,但现在我有非常奇怪的蛇动作 因此,我的算法是:Java 蛇AI怪异动作(错误动作),java,game-ai,Java,Game Ai,所以,我用人工智能创建了我自己的蛇游戏,但现在我有非常奇怪的蛇动作 因此,我的算法是: 获取地图时使用:1-路径已清除,0-无路径(墙、蛇) 取果位 得到蛇头的位置 将其发送到*算法(正常工作) 获取路径(点数组;结束为果实位置,开始为蛇头) 设定蛇行方向 private void AI(){ 点s=新点(); //蛇头 点n=新点(); //食物 n、 x=食品,x/13; n、 y=食品。y/13; s、 x=snakei.getBody().get(0.x/13; s、 y=snake
private void AI(){
点s=新点();
//蛇头
点n=新点();
//食物
n、 x=食品,x/13;
n、 y=食品。y/13;
s、 x=snakei.getBody().get(0.x/13;
s、 y=snakei.getBody().get(0.y/13;
int-px;
int-py;
//路径
g=f.findPath(map,n,s);
如果(g.size()>0){
//下一个蛇蛋白
px=g.get(g.size()-1).x;
py=g.get(g.size()-1).y;
}否则{
返回;
}
如果(s.x==px){
//上移
如果(s.y>py){
蛇。设置方向(蛇。方向向上);
}
//下移
如果(s.ypx){
蛇形方向(蛇形方向左);
}
//右移
如果(s.x
所以,我在一周左右的时间里和错误的动作斗争,我真的不知道错误在哪里。
尤达大师,帮帮我 我知道问题出在哪里 在《蛇》中,你不能翻身。换句话说,如果你向左移动,你不能向右移动,你必须先向上移动。但是,您的代码命令蛇不正确地移动,而不考虑其先前的方向。它不应该先升后降等等 解决这个问题,你可能会解决整个问题。确保A*算法考虑到转弯是非法方向 以下是正确的伪代码:
- 如果是,请继续
- 如果没有,请确定A*是想让我们左转还是右转
switch (snakeAI.getDirection()) {
case Snake.DIR_LEFT:
if (s.x >= px) { // don't go left anymore
if (s.y > py) {
snakeAI.setDirection(Snake.DIR_UP);
} else if (s.y < py) {
snakeAI.setDirection(Snake.DIR_DOWN);
} else {
// You should probably change this
snakeAI.setDircetion(Snake.DIR_DOWN);
}
}
break;
case Snake.DIR_RIGHT:
开关(snakeAI.getDirection()){
案例Snake.DIR_左:
如果(s.x>=px){//不要再向左走了
如果(s.y>py){
蛇。设置方向(蛇。方向向上);
}否则如果(s.y
“尤达大师,帮帮我?”哈哈,你真有趣!别开玩笑了。问题出在哪里?错了,错了。你可以在视频上看到。你需要更具体地了解你的问题和期望。例如,当蛇必须左转时,蛇什么都不做,e.t.c.No。没关系。我使用我的g2变量(vars*13px)您能否创建一个具有以下内容的新粘贴箱:1)更本地化的打印输出(即仅当它开始出现错误时)2)打印出水果的位置嗯……蛇在粘贴箱中到达4,26。你确定这不是舍入误差吗?或者可能是+/-1误差,蛇到达4.27,然后离开板。蛇总是第一个水果正确。(我检查a*algo,algo总是工作得很好)让我们来看看
switch (snakeAI.getDirection()) {
case Snake.DIR_LEFT:
if (s.x >= px) { // don't go left anymore
if (s.y > py) {
snakeAI.setDirection(Snake.DIR_UP);
} else if (s.y < py) {
snakeAI.setDirection(Snake.DIR_DOWN);
} else {
// You should probably change this
snakeAI.setDircetion(Snake.DIR_DOWN);
}
}
break;
case Snake.DIR_RIGHT: