Help with jump platform code please!!
Blitz3D Forums/Blitz3D Beginners Area/Help with jump platform code please!!
| ||
; My first Steps into Solo programming
; using Blitz 3D !!
;
; By Paul Harthen (aka Spectre)
; 14 - 3 - 2004 (C)
Const screenx=800
Const screeny=600
Graphics screenx,screeny,16,2
SetBuffer BackBuffer()
player=LoadImage("alien.bmp")
Type aliens
Field char
Field x
Field y
Field speed
Field jump_height
Field jump_width
Field jump_angle
End Type
alien.aliens=New aliens
alien\char=player
alien\x=screenx/2
alien\y=screeny/2
alien\speed=2
alien\jump_height=100
alien\jump_width=90
alien\jump_angle=0
char=alien\char
charx=alien\x
chary=alien\y
charspeed=alien\speed
height=alien\jump_height
width=alien\jump_width
charangle=alien\jump_angle
direction=0
While Not KeyHit(1)
Cls
If KeyDown(203)
charx=charx-charspeed
direction=-1
EndIf
If KeyDown(205)
charx=charx+charspeed
direction=1
EndIf
If KeyDown(57)
Gosub jump
EndIf
If charx<0 Then charx=0
If charx>screenx-ImageWidth(char) Then charx=screenx-ImageWidth(char)
DrawImage char,charx,chary
Flip
Wend
For alien.aliens=Each aliens
Delete alien
Next
End
.Jump
If charangle < 181
If direction=-1
x=Cos(charangle)*width/2
charx=xoffset+x-width/2
EndIf
If direction=1
x=-Cos(charangle)*width/2
charx=xoffset+x+width/2
EndIf
y=Sin(charangle)*height/2
chary=yoffset+y
charangle=charangle+charspeed
Else
chary=yoffset
charangle=0
EndIf
Return
Can anyone help with this code I am working on please!!??? What I am trying to do is get this sprite to move left and right and jump when you press the space bar!! I have really messed up somewhere!! Also if you could explain or change the jump routine to a function, that would be great as I couldn't do it!! :) Another thing....... Am I doing the Type thing correct as it is hard to understand!!! :))) Thanks if you can help. |
| ||
| Hey Spec, I'll look at your code. Also, you might want to check this out. |
| ||
| Thanks a lot m8 :) Goin to check it now!! |
| ||
| Inside the Jump label, there's a variable called xoffset that isn't declared anywhere else. That could be your problem. |
| ||
had another bash at it, see code below, but still not great looks a bit false and if you keep hitting space quick whilst moving it goes higher up the screen!!! :) lol
; My first Steps into Solo programming
; using Blitz 3D !!
;
; By Paul Harthen (aka Spectre)
; 14 - 3 - 2004 (C)
Const screenx=800
Const screeny=600
Graphics screenx,screeny,16,2
SetBuffer BackBuffer()
player=LoadImage("alien.bmp")
Type aliens
Field char
Field x
Field y
Field speed
Field jump_height
Field jump_width
Field jump_angle
Field jump_speed
End Type
alien.aliens=New aliens
alien\char=player
alien\x=screenx/2
alien\y=screeny/2
alien\speed=2
alien\jump_height=100
alien\jump_width=90
alien\jump_angle=0
alien\jump_speed=4
char=alien\char
charx=alien\x
chary=alien\y
charspeed=alien\speed
height=alien\jump_height
width=alien\jump_width
charangle=alien\jump_angle
jumpspeed=alien\jump_speed
direction=0 : jumping=0
While Not KeyHit(1)
Cls
If KeyDown(203)
charx=charx-charspeed
direction=-1
EndIf
If KeyDown(205)
charx=charx+charspeed
direction=1
EndIf
If KeyHit(57)
xoffset=charx
yoffset=chary
jumping=1
EndIf
If jumping=1 Then Gosub jump
If charx<0 Then charx=0
If charx>screenx-ImageWidth(char) Then charx=screenx-ImageWidth(char)
DrawImage char,charx,chary
Flip
Wend
For alien.aliens=Each aliens
Delete alien
Next
End
.Jump
If charangle < 181
If direction=-1
x=Cos(charangle)*width/2
charx=xoffset+x-width/2
direction=0
EndIf
If direction=1
x=-Cos(charangle)*width/2
charx=xoffset+x+width/2
direction=0
EndIf
y=-Sin(charangle)*height/2
chary=yoffset+y
charangle=charangle+charspeed*jumpspeed
Else
jumping=0
chary=yoffset
charangle=0
EndIf
Return
|
| ||
Maybe make a variable called "AlreadyJumping" or something, and make it so that if the player is already jumping, the player can't jump again. Try this:
; My first Steps into Solo programming
; using Blitz 3D !!
;
; By Paul Harthen (aka Spectre)
; 14 - 3 - 2004 (C)
Const screenx=800
Const screeny=600
Graphics screenx,screeny,16,2
SetBuffer BackBuffer()
player=LoadImage("alien.bmp")
Type aliens
Field char
Field x
Field y
Field speed
Field jump_height
Field jump_width
Field jump_angle
Field jump_speed
End Type
alien.aliens=New aliens
alien\char=player
alien\x=screenx/2
alien\y=screeny/2
alien\speed=2
alien\jump_height=100
alien\jump_width=90
alien\jump_angle=0
alien\jump_speed=4
char=alien\char
charx=alien\x
chary=alien\y
charspeed=alien\speed
height=alien\jump_height
width=alien\jump_width
charangle=alien\jump_angle
jumpspeed=alien\jump_speed
direction=0 : jumping=0
While Not KeyHit(1)
Cls
If KeyDown(203)
charx=charx-charspeed
direction=-1
EndIf
If KeyDown(205)
charx=charx+charspeed
direction=1
EndIf
If KeyHit(57) And alreadyjumping=0
xoffset=charx
yoffset=chary
jumping=1
alreadyjumping=1
EndIf
If jumping=1 Then Gosub jump
If charx<0 Then charx=0
If charx>screenx-ImageWidth(char) Then charx=screenx-ImageWidth(char)
DrawImage char,charx,chary
Flip
Wend
For alien.aliens=Each aliens
Delete alien
Next
End
.Jump
If charangle < 181
If direction=-1
x=Cos(charangle)*width/2
charx=xoffset+x-width/2
direction=0
EndIf
If direction=1
x=-Cos(charangle)*width/2
charx=xoffset+x+width/2
direction=0
EndIf
y=-Sin(charangle)*height/2
chary=yoffset+y
charangle=charangle+charspeed*jumpspeed
Else
jumping=0
chary=yoffset
charangle=0
alreadyjumping=0
EndIf
Return
|
| ||
why use another value "alreadyjumping"? you can just use "jumping":If KeyHit(57) And jumping=0 |
| ||
| Oooops didn't spot that, that was when I was trying to make it into a function and forgot to delete it!! :)) Heres the new code:
; My first Steps into Solo programming
; using Blitz 3D !!
;
; By Paul Harthen (aka Spectre)
; 14 - 3 - 2004 (C)
Const screenx=800
Const screeny=600
Graphics screenx,screeny,16,2
SetBuffer BackBuffer()
player=LoadImage("alien.bmp")
Type aliens
Field char
Field x
Field y
Field speed
Field jump_height
Field jump_width
Field jump_angle
Field jump_speed
End Type
alien.aliens=New aliens
alien\char=player
alien\x=screenx/2
alien\y=screeny/2
alien\speed=2
alien\jump_height=100
alien\jump_width=60
alien\jump_angle=0
alien\jump_speed=4
char=alien\char
charx=alien\x
chary=alien\y
charspeed=alien\speed
height=alien\jump_height
width=alien\jump_width
charangle=alien\jump_angle
jumpspeed=alien\jump_speed
direction=0 : jumping=0
While Not KeyHit(1)
Cls
; detect left key
If KeyDown(203)
charx=charx-charspeed
direction=-1
EndIf
; detect right key
If KeyDown(205)
charx=charx+charspeed
direction=1
EndIf
; detect jump space key
If KeyDown(57) And jumping=0
xoffset=charx
yoffset=chary
jumping=1
EndIf
If jumping=1 Then Gosub jump
If charx<0 Then charx=0
If charx>screenx-ImageWidth(char) Then charx=screenx-ImageWidth(char)
DrawImage char,charx,chary
Flip
Wend
For alien.aliens=Each aliens
Delete alien
Next
End
; jump routine
.Jump
If charangle < 181
If direction=-1
x=Cos(charangle)*width/2
charx=xoffset+x-width/2
direction=0
EndIf
If direction=1
x=-Cos(charangle)*width/2
charx=xoffset+x+width/2
direction=0
EndIf
y=-Sin(charangle)*height/2
chary=yoffset+y
charangle=charangle+charspeed*jumpspeed
Else
jumping=0
chary=yoffset
charangle=0
EndIf
Return
Any ideas on how to make it better?? |
| ||
| Get rid off thouse gosubs sorry |
| ||
| LarsG - thanks for spotting that ;) |