如何使用pygame使圆形物体跳跃? [英] How to make a circular object jump using pygame?
本文介绍了如何使用pygame使圆形物体跳跃?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我刚刚开始使用
I have just started using pygame, 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屋!
查看全文