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 ;) |