Pygame Pong有条件使球反弹

时间:2018-11-06 20:09:01

标签: python pygame bounce pong

是否有可以添加到此代码中的条件,会导致 如果x_val> width x_direction == x_direction * -1? (对于y_direction同样如此)。

import pygame
BLACK = (0,0,0)
WHITE = (255,255,255)
BLUE = (50,50,255)
YELLOW = (255,255,0)
width = 64
height = 480
pygame.init()
size = (width,height)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pong")
done = False
clock = pygame.time.Clock()
ball_width = 20
x_val = 150
y_val = 200
x_direction = 1
y_direction = 1

while not done:
    for event in pygame.event.get():
       if event.type == pygame.QUIT:
           done = True

x_val = x_val + x_direction
y_val = y_val + y_direction  
screen.fill (BLACK)
# condition to go here to make ball bounce

pygame.draw.rect(screen, BLUE, (x_val,y_val,ball_width,20))      
pygame.display.flip()
clock.tick(60)

pygame.quit()

1 个答案:

答案 0 :(得分:0)

您的 1. dc(null,null); 2. dc("a","a"); 3. dc("a","ab"); 4. dc("a",undefined); 5. dc(undefined,undefined); 6. dc({},[]); 7. dc({a:1},{}); 8. dc({a:1},{a:1}); 9. dc(true,true); 10. dc(true,false); x_val需要在主循环内递增,否则它们将被递增一次,再也不会递增。

您非常接近需要的条件。这是一些代码,如果球碰到了屏幕的壁,它们就会改变方向:

y_val

该代码也必须包含在主循环中,因为我们需要检查球的位置以查看它是否在每帧中都与墙碰撞。

由于您的球有一个尺寸,并且您的if x_val < 0 or x_val > width: x_direction = x_direction * -1 if y_val < 0 or x_val > height: y_direction = y_direction * -1 x_val变量代表球的中心,因此您必须在上述条件中包括球的尺寸,使球从其边缘而不是其中心反弹。