I need help with my collision, what I thought was fixing it, was actually a step in the wrong direction. As well as the source (I have cut all the bits that don’t make sense if you don’t have the bitmaps with them) I am providing a zip file of all the .bmps.
SET DISPLAY MODE 320, 200, 16
HIDE MOUSE
REM * LOADING FILES
LOAD IMAGE "MAN.BMP", 1
LOAD IMAGE "0001.BMP", 101
REM * LOADING VARIABLES
MANX = 150
MANY = 90
WORLDX = 0
WORLDY = 0
REM * SYNC SETTINGS
SYNC ON
SYNC RATE 0
REM * START LOOP
DO
CLS
REM * LOADING VARIABLES
OLDMANX = MANX
OLDMANY = MANY
OLDWORLDX = WORLDX
OLDWORLDY = WORLDY
REM * CONTROLS
IF DOWNKEY() = 1 AND MANY < 170 THEN MANY = MANY + 2
IF DOWNKEY() = 1 AND MANY = 170 THEN WORLDY = WORLDY - 2
IF LEFTKEY() = 1 AND MANX > 60 THEN MANX = MANX - 2
IF LEFTKEY() = 1 AND MANX = 60 THEN WORLDX = WORLDX + 2
IF RIGHTKEY() = 1 AND MANX < 260 THEN MANX = MANX + 2
IF RIGHTKEY() = 1 AND MANX = 260 THEN WORLDX = WORLDX - 2
IF UPKEY() = 1 AND MANY > 60 THEN MANY = MANY - 2
IF UPKEY() = 1 AND MANY = 60 THEN WORLDY = WORLDY + 2
REM * PRINT LEVEL + TILE PROPERTIES
FOR A = 0 TO 19
FOR B = 0 TO 19
READ DATA
REM * TILES START
REM * TILE 1
REM ****************************************************
REM * ONLY SHOW TILES ON SCREEN
IF (B*16)+WORLDX > 320 OR (B*16)+WORLDX < -16 OR (A*16)+WORLDY > 200 OR (A*16)+WORLDY < -16
ELSE
REM * PRINT IMAGES
IF DATA = 1
PASTE IMAGE 101,(B*16)+WORLDX,(A*16)+WORLDY,1
REM * HIT TEST
IF MANX+8=>(B*16)+WORLDX AND MANX-8<=(B*16)+(16+WORLDX) AND MANY+8=>(A*16)+WORLDY AND MANY-8<=(A*16)+(16+WORLDY)
MANX=OLDMANX
MANY=OLDMANY
ENDIF
ENDIF
ENDIF
REM ****************************************************
REM * TILES END
NEXT B
NEXT A
REM * PRINT LEVEL END
PASTE IMAGE 1,MANX-8,MANY-8,1
REM * END LOOP + LOOP
RESTORE
SYNC
LOOP
REM * DATA FILE
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1, , , , , , , , , , , , , , , , , , ,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Click here for the .zip file
I have gotten rid of the code that was causing me problems, now this is what I would like some help with:
Basically the ‘man’ image can freely move around inside the white square, as soon as a black border hits the middle of the ‘man’ image he stops moving and the background scrolls. If the ‘man’ hits a wall while he’s freely walking around in the white square, he is stopped from going any further in that direction, but the problem is when the background is scrolling the collision does not work. I tried to fix it by replacing:
MANX=OLDMANX
MANY=OLDMANY
With:
IF MANX = 60 OR MANX = 260 OR MANY = 60 OR MANY = 170
WORLDX = OLDWORLDX
WORLDY = OLDWORLDY
ELSE
MANX=OLDMANX
MANY=OLDMANY
ENDIF
But this is where I got a load of errors, can someone please help? If you can't help but know of a different way i could do it, please say.
erm...