如何使用pygame使圆形物体跳跃? [英] How to make a circular object jump using pygame?

查看:71
本文介绍了如何使用pygame使圆形物体跳跃?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚开始使用

I have just started using , and I'm stuck.

I'm not getting any syntax errors, but I'm sure there is some problem with the below code.

import pygame
import sys

pygame.init()
pygame.display.set_caption('Jumper Game')

display_width = 500
display_height = 500
the_game_is_on = True

ball_pos_x = 200
ball_pos_y = 500
ball_radius = 20
ball_color = [0,0,255]
speed = 1

is_jump = False
m = 1
v = 5

dis = pygame.display.set_mode((display_width,display_height)) #screen

while the_game_is_on:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and ball_pos_x > 20:
        ball_pos_x-= speed
    if keys[pygame.K_RIGHT] and ball_pos_x < (display_width - (ball_radius)):
        ball_pos_x+= speed
    if not (is_jump):
        if keys[pygame.K_UP] and ball_pos_y > 20:
            ball_pos_y-= speed
        if keys[pygame.K_DOWN] and ball_pos_y < (display_height - (ball_radius)):
            ball_pos_y+= speed
        if keys[pygame.K_SPACE]:
            is_jump = True
    else:
        f = (1/2)*m*(v**2)
        ball_pos_y-=f
        v-=1
        if v < 0:
            m = -1
        if v >= ((v+1)*-1): #to check the initial position
            is_jump = False
    pygame.time.delay(10)
    dis.fill((0,0,0))
    pygame.draw.circle(dis,ball_color,(ball_pos_x,int(ball_pos_y)),ball_radius)
    pygame.display.update()
pygame.display.quit()

For writing the code for jump, I referred to this website, the source code in this website works perfectly.

解决方案

You have to compute m dependnet on v < 0:

m = -1 if v < 0 else 1

The jump has to end if v < -5 and when the jump ends, then v has to be reset (v = 5):

jump_h = 5 # try 10 for higher jumps
v = jump_h

while the_game_is_on:
    # [...]

    if not is_jump:
        # [...]

    else:
        if v >= -jump_h:
            m = -1 if v < 0 else 1
            f = (1/2)*m*(v**2)
            v -=1
            ball_pos_y -= f
        else:
            is_jump = False
            v = jump_h

这篇关于如何使用pygame使圆形物体跳跃?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆