Log In  


Pretty basic notion, but I'm falling over on this...
With a sprite that has a starting X,Y and a speed, I'd like the sprite to remain on screen.

However:

-- locks sprite off screen after passing the screen boundary
-- if btn(0)
--and x<128
-- then//move sprite
-- if x < 128
-- then
-- x=x-speed
-- end
-- end

-- locks sprite centre screen
-- while x < 128 do
-- if btn(0) then
-- x=x-speed
-- end
-- end



x = mid(0,x+speed,127)

thanks very much. I'll need to play around with my pixel width for the right hand margin, but that does the trick!


Yep, hope it makes sense.

mid returns the middle of three values.

If x+speed is < 0 then it'll return 0, if x+speed > 127 then it'll return 127.

You could also write it as:

x += speed
if x < 0 then x = 0 end
if x > 127 then x = 127 end

How about

x=min(128,max(x+speed,0))

?


Thanks!

Is there an advantage to that particular method?

(I'll try it, obviously!)


the mid method is the simplest and uses the fewest tokens.

the if method allows you to insert extra logic such as playing sound effects when you hit the walls or bounce off or something.

the min,max method is equivalent to the mid method.



[Please log in to post a comment]