【发布时间】:2017-08-04 04:59:21
【问题描述】:
我是编码、python 和 pygame 的新手。我试图让一个球从屏幕上掉下来,在两侧反弹,直到它慢慢失去能量并停留在页面底部。我得到了大部分的工作,我的球反弹并失去了能量,但是当它减速并击中底部边缘时,它被卡住并慢慢地移出屏幕。完全不明白为什么,如果有人能告诉我我做错了什么,或者我需要添加到我的代码中,那将会很有帮助。谢谢!
import pygame
from math import pi
pygame.init()
red = (255,0,0)
black = (0,0,0)
white = (255,255,255)
blue = (0,0,255)
pygame.mouse.set_visible(0)
clock = pygame.time.Clock()
displaySize = (800,600)
screen = pygame.display.set_mode(displaySize)
gameon = True
dt = 0.05
m= 5
ball_r = 30
ball_x = 100
ball_y = 500
ball_vx = 50
ball_vy = -50
g = 10
while gameon == True:
Dy = 0.05*ball_vy*ball_vy
Dx = 0.05*ball_vx*ball_vx
Fy = m*g + Dy
Fx = -Dx
ay = Fy/m
ax = Fx/m
ball_vy += ay*dt
ball_vx += ax*dt
ball_x +=ball_vx*dt
ball_y +=ball_vy*dt
if ball_x <= ball_r or ball_x >= displaySize[0]-ball_r:
ball_vx *=-1
if ball_y <= ball_r or ball_y >= displaySize[1] - ball_r:
ball_vy *=-1
pos = pygame.mouse.get_pos()
screen.fill(red)
pygame.draw.circle(screen, white,(pos[0],pos[1]),30,0)
pygame.draw.circle(screen, blue,(long(round(ball_x)),long(round(ball_y))),ball_r,0)
pygame.display.update()
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
【问题讨论】:
-
long()的功能是什么? -
long() 类似于 int() 但用于更长的整数。我使用它是因为它有时会在使用 int() 时给我错误。
标签: python python-2.7 pygame