AI Implementation question

Hi, im new here so, Hi :smiley:

I have a game where im working on, but now I don’t really now how I should implement a AI in this game, this is my first game so I want it to be a simple ai I read you can do this:
So lets say Monster is defined like this:


class Monster{
private int x;
private int y;
//Add Getter and setters

//Logic and stuff

// This is the way I should do it:
if (x==10 && y==20){
 move(20,10); // Move method is defined as move(int x , int y);
}
}



Is this correct or is there a better way?

Because they also walk in straight line’s and they don’t here player’s action(sounds)

Thanks!

*Fixed some typos and error’s… :slight_smile:

Do you mean you want them to walk in a straight line? or do you want them to chase the player? anyway you should read my entire post as it might give you a few ideas.
either way you are not doing it right. The way you code it, the monster will only move once, and only if they are in that exact position.

If you want to make the monster chase the player:


if (monster.x > player.x)
    move(-1,0);
else
if (monster.x < player.x)
    move(1,0);

//do the same with y

Otherwise if you want the monster to move randomly, you could choose a random position to move to each frame/length of time
eg.


//initialise
long lastTime = 0;
Random random = new Random();
int targetX = 0;
int targetY = 0;


//in ai processing
if (System.currentTimeMillis() - lastTime > 3000) //change target position every 3 seconds
{
       lastTime = System.currentTimeMillis();
      targetX = random.nextInt(width); //choose a random place to walk to on the screen
      targetY = random.nextInt(height);
}

if (monster.x > targetX )
    move(-1,0);
else
if (monster.x < targetX)
    move(1,0);
//again do same with y


Otherwise if you want the monster to patrol up and down the screen or something,
have 2(or more) positions and move back and forward between them


int[] x = new int[2];
int[] y = new int[2]; //2 x and y positions
int currentTarget = 0; // the position to go to

x[0] = 0;
y[0] = 20;
x[1] = 100;
y[1] = 30; 
//will make the monster walk from (0,20) to (100,30), then back, and then there again, and back etc


if (monster.x > x[currentTarget])
    move(-1,0);
else
if (monster.x < x[currentTarget])
    move(1,0);
//do same with y yet again...


if ((monster.x == x[currentTarget]) && (monster.y == y[currentTarget]))
{
    currentTarget++;
    if (currentTarget > x.length)
       currentTarget = 0;
}