leearach2004
Technical User
Hi there i am new to director programing but understand the basics of lingo. I am creating a simple childs game that has one character that needs to collect objects by moving around a 2d screen that had walls in certain places. This works fine as does the wall hit test.
But i also want another charcter that will move all around the screen that you have to avoid. I put together the following code from some examples for the enemy charcter, it works kinda by changing direction when a wall is hit but it this also means that it does not walk around the whole screen somtimes it does other times just goes in a circle.
anyone know any simple ai tutrials or can sugest where i am going wrong would be great
thanks in advance to all
lee
But i also want another charcter that will move all around the screen that you have to avoid. I put together the following code from some examples for the enemy charcter, it works kinda by changing direction when a wall is hit but it this also means that it does not walk around the whole screen somtimes it does other times just goes in a circle.
Code:
global movemalc, malcdir
-- exit frame event handler
on exitFrame me
-- if left key pressed
if (movemalc = 1) then
-- set sprite to left direction member
sprite(26).member = "malcleft"
-- set sprite's width and height
sprite(26).width = 25
sprite(26).height = 25
-- set malc direction to l
malcdir ="l"
-- set move function
movem(me,-5,0)
--if right key pressed
else if (movemalc = 2) then
-- set sprite to right direction member
sprite(26).member = "malcright"
-- set sprite's width and height
sprite(26).width = 25
sprite(26).height = 25
-- set malc direction to r
malcdir ="r"
-- set move function
movem(me,5,0)
-- if down key pressed
else if (movemalc = 3) then
-- set sprite to down direction member
sprite(26).member = "malcdown"
-- set sprite's width and height
sprite(26).width = 25
sprite(26).height = 25
-- set malc direction to b
malcdir ="b"
-- set move function
movem(me,0,5)
-- if up key pressed
else if (movemalc = 4) then
-- set sprite to top direction member
sprite(26).member = "malctop"
-- set sprite's width and height
sprite(26).width = 25
sprite(26).height = 25
-- set malc direction to t
malcdir ="t"
-- set move function
movem(me,0,-5)
end if
end
-- move function
on movem me, dx, dy
-- get this sprite rect and add change to it
oldRect = sprite(me.spriteNum).rect
newRect = oldRect + rect(dx,dy,dx,dy)
--set hitWall to false
hitWall = FALSE
-- loop through wall sprites 2 to 22 and detect collisions
repeat with i = 2 to 21
-- if sprite returns hitwall = true
if sendSprite(i,#hitWall,newRect) then
-- set hitwall to true
hitWall = TRUE
moved
-- exit repet statment
exit repeat
end if
-- end repeat statment
end repeat
-- if no collision, then move sprite
if not hitWall then
-- set sprite location to dx dy co-ordinates
sprite(me.spriteNum).loc = sprite(me.spriteNum).loc + point(dx,dy)
end if
end
-- move malc function
on moved
-- check previous direction
if(malcdir = "l") then
movemalc = 4
else if(malcdir = "r") then
movemalc = 1
else if(malcdir = "t") then
movemalc = 2
else if(malcdir = "b") then
movemalc = 3
end if
end
anyone know any simple ai tutrials or can sugest where i am going wrong would be great
thanks in advance to all
lee