Oops There were a few bugs in there.
Change all of the following:
END IF lines to ENDIF.
Gravity to Gravity#
YSpeed to YSPEED#
Better still, have a look at my demo.
` Jump Test Demo
` Dave Mayes
SYNC RATE 30
SYNC ON
SET DISPLAY MODE 320,240,32
SET WINDOW SIZE 320,240
CLS
FOR x = 0 to 5
BOX x,x,15 - x,15 - x
GET IMAGE 1,0,0,15,15
NEXT X
CLS
BOX 0,0,10,10
GET IMAGE 2,0,0,10,10
CLS
SPRITE 1,0,200,2
STRETCH SPRITE 1, 1000,100
SPRITE 2,200,200,2
STRETCH SPRITE 2,1000,100
SPRITE 10,0,0,1
True = 1
False = 0
Gravity# = .2
JumpSpeed = -5
FallLimit = 5
YSpeed# = 0.0
XPosition = 0
YPosition = 0
OnGround = False
REPEAT
INC XPosition, (RIGHTKEY() - LEFTKEY()) * 3
JumpKey = SPACEKEY()
IF SPRITE HIT (10,1) OR SPRITE HIT(10,2)
OnGround = True
WHILE SPRITE HIT (10,1) OR SPRITE HIT(10,2)
DEC YPosition
SPRITE 10,XPosition,YPosition,1
ENDWHILE
INC YPosition
ELSE
OnGround = False
ENDIF
IF OnGround = True
YSpeed# = 0
ELSE
IF YSpeed < FallLimit
INC YSpeed#, Gravity#
ENDIF
ENDIF
IF JumpKey = True and OnGround = True
YSpeed# = JumpSpeed
OnGround = False
ENDIF
INC YPosition, YSpeed#
SPRITE 10,XPosition,YPosition,1
SYNC
IF YPosition > 260
XPosition = 0
YPosition = 0
ENDIF
UNTIL KEYSTATE(1) = 1