So, I'm trying to make a pacman game and while I was making the ghost AI, I ran into a wall.
When I used "getOneObjectAtOffset" when it hits a wall and decide which way to go, it stops(like it should), but it's not seeing any walls apparently(it should go left). I had it to print out which wall it sees, but it doesn't see any, thus it's not doing any of the conditions I set and stops at the wall it hit... Even my teacher took a long look at it, and she couldn't figure out why it's not seeing any walls. Please help! Thanks :)
Here's the code:
Wall w = (Wall)getOneIntersectingObject(Wall.class);
Wall walll =(Wall)getOneObjectAtOffset(getX()-2,getY(), Wall.class);
Wall wallr =(Wall)getOneObjectAtOffset(getX()+2,getY(), Wall.class);
Wall wallu =(Wall)getOneObjectAtOffset(getX(),getY()-2, Wall.class);
Wall walld =(Wall)getOneObjectAtOffset(getX(),getY()+2, Wall.class);
List<Pac> player= getObjectsInRange(100,Pac.class);
if(w!=null)//see when it hits a wall
{
lockl=false;
lockr=false;
locku=false;
lockd=false;
stop=true;
}
if(stop==true)
{
//see if its seeing walls at all
if(walll==null)
{
System.out.println("no wall left");
}
if(wallr==null)
{
System.out.println("no wall right");
}
if(walld==null)
{
System.out.println("no wall down");
}
if(wallu==null)
{
System.out.println("no wall up");
}
//3 ways to go
if(walll==null && wallr==null && wallu!=null && walld==null)//left,right,down
{
System.out.println("cantgoup");
lockl=true;
}
if(walll==null && wallr==null && wallu==null && walld!=null)//left,right,up
{
lockr=true;
}
//2ways to go
if(walll==null && wallr!=null && wallu==null && walld!=null)//left,up
{
lockr=true;
}
if(walll==null && wallr!=null && wallu!=null && walld==null)//left,down
{
lockl=true;
}
if(walll!=null && wallr==null && wallu==null && walld!=null)//right,up
{
locku=true;
}
if(walll!=null && wallr==null && wallu!=null && walld==null)//right,down
{
lockd=true;
}
//one way to go
if(walll==null && wallr!=null && wallu!=null && walld!=null)//left
{
lockr=true;
}
if(walll!=null && wallr==null && wallu!=null && walld!=null)//right
{
lockl=true;
}
if(walll!=null && wallr!=null && wallu==null && walld!=null)//down
{
lockd=true;
}
if(walll!=null && wallr!=null && wallu!=null && walld==null)//up
{
lockr=true;
}
if(lockl==true)
{
xl=getX()-1;
}
if(lockr==true)
{
xl=getX()+1;
}
if(locku==true)
{
yl=getY()-1;
}
if(lockd==true)
{
yl=getY()+1;
}}
