Thanks Kitty,

But I am still a bit confused because...

I kinda do that with the current array except the block are multiples of the 16 x 16 sizes.

So a block could be 64 x 32, or 128 x 32 etc...

I then step through the screen in 16 x 16 blocks

which is like the [100][100] as x,y are divided by 16px simulating the screen as a 16x16 grided area.

When I collide I find that I need to loop through the whole array once again to test against the position before the collision and to the left and right of the 32x32 block (2 x 16px blocks)

I will try to explain in a diagram

B = My Sprite Block 32 x 32

W = Water sections in arrays with height of 32 but width varies in mulples of 16

B moves down 16px then accross from far left in blocks of 16 until it collides

START:

B

WWW

WWWWWWWWWWWWWWWWW

COLLISION DETECTED:

**BW**WW

WWWWWWWWWWWWWWWWW

COLLISION ITEM IS MOVED UP AND PLACED IN POSITION:

B

WWW

WWWWWWWWWWWWWWWWW

HOWEVER THE IDEAL POSITION IN ABOVE IS:

WWW B

WWWW

**WWWWW**WWWWWWWW

This is due to having adequate water below and space above in equal measure...

So the collision is reversed and areas around need to be checked for collisions and empty squares...

Its finding the solution to this problem that I am struggling with...

G