Public Group

# jump algorithm

## Recommended Posts

well let me explain that my code  does when I hit the space bar my sprite moves up to a limit and  when I hit the space bar again it moves my sprite down when I keep the space bar down it moves up and down. my question is how do I hit the space bar and  get my sprite  to move up and down of its own accord, I want  it to jump like in video games. I just need a little  hint I have  almost solved my problem.

void spritejump()
{
if (state == false)
{
if (positionY <= 20.0f)
{
positionY += 5.0f;
}
if (positionY == 20.0f)
{
state = true;
}
}
else if (state == true)
{
if (positionY >= 0.0f)
{
positionY -= 5.0f;
}
if (positionY == 0.0f)
{
state = false;
}
}
}

void handleKeypress(unsigned char key, int x, int y)
{
switch (key)
{
case 27:
exit(0);
break;
case 32:
for (int i = 0; i <= 10; i++)
{
spritejump();
}


##### Share on other sites

Why do you call spritejump() ten eleven times? I think the answer might be related to your asking of 'what is a frame?' in the other topic.

Edited by Prototype
Fixed off-by-one error

##### Share on other sites

well I call spritejump 11 times because I want the jump algorithm to jump up and down and up again but I want it to only jump  up and down like in Mario brothers. I am sorry but it is hard for me to explain what I want my code to do.

##### Share on other sites

The jumping should be integrated into your game loop, so that with every screen update you move one step up or down. The same thing for every other movement. You are running at 60fps so you cannot do a complete jump with a single function call. Hope this makes sense.

I think from your previous snippets you seem to run everything on timers, which isn't really a good idea. Perhaps it's better to take a step back and rework everything into a proper game loop. Have functions that can create and control sprites etc. You cannot make anything without these building blocks. Otherwise the old advice is still valid: use a f* library.

See:

##### Share on other sites

well I watched the video, and I am going to brush  up on my linear algebra and calculus, specifically parabolas. I like the f(x)=1/2*g*t^2+Vo+Po equation. I am going to try to integrate this into my jump algorithm.

##### Share on other sites
22 hours ago, Rutin said:

See:

That is a terrible video for someone just trying to get a basic jump working.

##### Share on other sites

I found it to be interesting.

##### Share on other sites

Here is a pseudo game loop that implements jumping in a quick and dirty way. It implicitly describes a parabola.
Maybe this can get you going.

void nextFrame()
{
if (jumping)
{
if (jumpVelocity < 4.0) jumpVelocity += 0.1;
playerY += jumpVelocity;
if (playerY > floorY) jumping = false;
}
else if (jumpKeypressed) {
jumping = true;
jumpVelocity = -4.0;
}

// Do other stuff and draw your frame
}

##### Share on other sites
2 hours ago, fleabay said:

That is a terrible video for someone just trying to get a basic jump working.

Please do elaborate on why the video is terrible. The video itself provides insightful information that is valuable to anyone looking to improve. Consistent negativity however is counter productive.

##### Share on other sites
This topic is now closed to further replies.

• ### Game Developer Survey

We are looking for qualified game developers to participate in a 10-minute online survey. Qualified participants will be offered a \$15 incentive for your time and insights. Click here to start!

• 11
• 23
• 36
• 16
• 75