AI Seeker w/ Wall

Ches's Avatar
Light Poster
Hey its me again... This time my problem is a little more advanced....
I need to create an Ai that seeks out an opponent(think Ghosts on PacMan kinda thing. )

they wil have ap points and eveytime the move they'll lose an ap point, when these points are 0 it ened their "turn"
....These enemies i have dubbed enemy(x) and i need it to move, then check if it is in range to attack me(That area being enemymelee(x) )...Im stuck on a proper ai...because they will seek my character out that not run ingto walls...however, they sometimes warp or fly offsreeen........Please Help...Thanks
0
Ches's Avatar
Light Poster
This is What I have right now...but for some reason its doesn't stop them from hitting walls(enemy border)

Code:
 ' go left
  If knight.Top > Enemymelee(x).Top And (knight.Top + knight.Height) > (Enemymelee(x).Top + Enemymelee(x).Height) And (knight.Width + knight.Left) < Enemymelee(x).Left Then Enemy(x).Left = Val(Enemy(x).Left) - 160: enemymovement(x).Caption = "Left1":  Goblinap(x).Caption = Val(Goblinap(x).Caption) - 1: GoTo checkers
    'go right
  If knight.Top > Enemymelee(x).Top And (knight.Top + knight.Height) > (Enemymelee(x).Top + Enemymelee(x).Height) And knight.Left > (Enemymelee(x).Left + Enemymelee(x).Width) Then Enemy(x).Left = Val(Enemy(x).Left) + 160: enemymovement(x).Caption = "right1": Goblinap(x).Caption = Val(Goblinap(x).Caption) - 1: GoTo checkers
   'go up
   If knight.Left > Enemymelee(x).Left And (knight.Left + knight.Width) < (Enemymelee(x).Left + Enemymelee(x).Width) And knight.Top < Enemymelee(x).Top Then Enemy(x).Top = Val(Enemy(x).Top) - 270: enemymovement(x).Caption = "up1": Goblinap(x).Caption = Val(Goblinap(x).Caption) - 1: GoTo checkers
  'go down
   If knight.Left > Enemymelee(x).Left And (knight.Left + knight.Width) < (Enemymelee(x).Left + Enemymelee(x).Width) And knight.Top > Enemymelee(x).Top Then Enemy(x).Top = Val(Enemy(x).Top) + 270: enemymovement(x).Caption = "down1": Goblinap(x).Caption = Val(Goblinap(x).Caption) - 1: GoTo checkers
  ' Moveupleft1
 If knight.Left < Enemymelee(x).Left And knight.Top < Enemymelee(x).Top Then If Val(Goblinap(x).Caption) > 0 Then Enemy(x).Left = Val(Enemy(x).Left) - 160: Enemy(x).Top = Val(Enemy(x).Top) - 270: enemymovement(x).Caption = "Moveupleft1": Goblinap(x).Caption = Val(Goblinap(x).Caption) - 1: GoTo checkers
' Movedownright1
 If knight.Left > Enemymelee(x).Left And knight.Top > Enemymelee(x).Top Then If Val(Goblinap(x).Caption) > 0 Then Enemy(x).Left = Val(Enemy(x).Left) + 160:  Enemy(x).Top = Val(Enemy(x).Top) + 270: enemymovement(x).Caption = "Movedownright1": Goblinap(x).Caption = Val(Goblinap(x).Caption) - 1: GoTo checkers
' moveDownleft1
 If knight.Left < Enemymelee(x).Left And knight.Top > Enemymelee(x).Top Then If Val(Goblinap(x).Caption) > 0 Then Enemy(x).Left = Val(Enemy(x).Left) - 160: Enemy(x).Top = Val(Enemy(x).Top) + 270: enemymovement(x).Caption = "moveDownleft1": Goblinap(x).Caption = Val(Goblinap(x).Caption) - 1: GoTo checkers
   ' Moveupright1
   If knight.Left > Enemymelee(x).Width And knight.Top < Enemymelee(x).Top Then If Val(Goblinap(x).Caption) > 0 Then Enemy(x).Left = Val(Enemy(x).Left) + 160: Enemy(x).Top = Val(Enemy(x).Top) - 270: enemymovement(x).Caption = "Moveupright1": Goblinap(x).Caption = Val(Goblinap(x).Caption) - 1: GoTo checkers
checkers:

  Dim Q As Integer
    For Q = 0 To enemyborder.ubound
     
If Enemy(x).Left < Val(enemyborder(Q).Left + enemyborder(Q).Width) And _
 enemyborder(Q).Left < Val(Enemy(x).Left + Enemy(x).Width) And _
 Enemy(x).Top < enemyborder(Q).Top + enemyborder(Q).Height And _
 enemyborder(Q).Top < Enemy(x).Top + Enemy(x).Height Then enemywallCollision = True
         Next
         
         Q = Q + 1
         
      If enemywallCollision = True Then GoTo falalalal Else GoTo huh2
            
                
        
falalalal:

   If enemywallCollision = True Then If enemymovement(x).Caption = "Moveupright1" Then GoTo Moveupright1: If enemymovement(x).Caption = "Movedownright1" Then GoTo Movedownright1: If enemymovement(x).Caption = "moveDownleft1" Then GoTo moveDownleft1:      If enemymovement(x).Caption = "Moveupleft1" Then GoTo Moveupleft1: If enemymovement(x).Caption = "left1" Then GoTo Left1: If enemymovement(x).Caption = "up" Then GoTo up1: If enemymovement(x).Caption = "right1" Then GoTo Right1: If enemymovement(x).Caption = "down1" Then GoTo down1
                            
Left1: If enemywallCollision = True Then Enemy(x).Left = Val(Enemy(x).Left) + 160: enemywallCollision = False: GoTo huh2
Right1: If enemywallCollision = True Then Enemy(x).Left = Val(Enemy(x).Left) - 160: enemywallCollision = False: GoTo huh2
up1: If enemywallCollision = True Then Enemy(x).Top = Val(Enemy(x).Top) + 270: enemywallCollision = False: GoTo huh2
down1: If enemywallCollision = True Then Enemy(x).Top = Val(Enemy(x).Top) - 270: enemywallCollision = False: GoTo huh2
Moveupright1: If enemywallCollision = True Then Enemy(x).Left = Val(Enemy(x).Left) - 160: Enemy(x).Top = Val(Enemy(x).Top) + 270: enemywallCollision = False: GoTo huh2
Movedownright1: If enemywallCollision = True Then Enemy(x).Left = Val(Enemy(x).Left) - 160: Enemy(x).Top = Val(Enemy(x).Top) - 270: enemywallCollision = False: GoTo huh2
moveDownleft1: If enemywallCollision = True Then Enemy(x).Left = Val(Enemy(x).Left) + 160: Enemy(x).Top = Val(Enemy(x).Top) - 270: enemywallCollision = False: GoTo huh2
Moveupleft1: If enemywallCollision = True Then Enemy(x).Left = Val(Enemy(x).Left) + 160: Enemy(x).Top = Val(Enemy(x).Top) + 270: enemywallCollision = False: GoTo huh2
__________________________________________________ __________

...........also how would i slow the movement down a little ...make their movements more singularily visible...instead of just seeing the final result.....? Thanks......*ches

Last edited by shabbir; 8Apr2007 at 19:56.. Reason: Code formatting
0
riffz's Avatar, Join Date: Apr 2007
Newbie Member
Funny you should ask... I just completed a Pacman game in VB6!

I used the A* Pathfinding Algorithm to give the ghosts AI to move around walls and stuff. Here's a tutorial:
A* Tutorial
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Offtopic comment:
Use the CODE block when you have code in the posts.