创建弹跳球pygame的多个实例

时间:2016-07-07 17:27:00

标签: python variables pygame

所以我是pygame的新手,我制作了一个程序,可以根据重力使球弹跳,并且它完美地工作但是现在我希望能够通过创建一个无限的方式来创造它们。我知道如何获取点击的坐标,但我不知道如何创建多个圆圈。我会以某种方式使用函数或类吗?这是我的代码,对不起,如果它有点乱。

import pygame,random,time
pygame.init()
infoObject = pygame.display.Info()
side = pygame.display.Info().current_h
side = side - ((1.0/12)*(pygame.display.Info().current_h))
side = int(side)
screen = pygame.display.set_mode([side, side])
pygame.display.set_caption("")
clock = pygame.time.Clock()
done = False
BLACK = (0,0,0)
WHITE = (255,255,255)
RED = (250,30,25)
GREEN = (25, 240, 25)
YELLOW = (250,240,25)
FPS = 60
x=100
y=100
t=0
r=10
direction=0
count = 0
def faller(x,y,color,size):
    pygame.draw.circle(screen,color,(x,y),size,0)
def reverse():
    global t,direction
    if direction == 0:
        direction = 1
        t=t*4/5
    elif direction == 1:
        direction = 0
        t=1
while not done:
        clock.tick(FPS)
        events = pygame.event.get()
        screen.fill(BLACK)
        for event in events:
            if event.type == pygame.QUIT or  (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
                done = True
        if direction==0:
            t+=1
            y+=int((9.8/FPS)*t)
        elif direction==1:
            t-=1
            y-=int((9.8/FPS)*t)
        if t==0:
            reverse()
        if y+r>side:
            y=side-r
            faller(x,y,RED,r)
            reverse()
        else:
            faller(x,y,RED,r)
        if y==side-r:
            count+=1
        else:
            count=0
        if count>=3:
            done = True
        pygame.display.flip()
pygame.quit()

1 个答案:

答案 0 :(得分:1)

我鼓励您尝试使用类和方法。一旦你有了Ball类,你就可以制作一个Ball对象列表并立即处理它们。然后,您可以使用error: previous declaration for ...列表方法在鼠标单击时添加新的球。

我建议您使用变量,例如: POS_X, 铭文, vel_x, vel_y,

如果您想实现冲突,这将使事情变得更容易理解。别忘了评论你的代码:)