python - Pygame Pong 有条件使球弹跳

标签 python pygame bounce pong

是否可以将一个条件添加到此代码中,从而导致 x_direction 进行更改,使球在超出宽度时看起来会弹跳?类似于:如果 x_val > width x_direction == x_direction * -1? (对于 y 方向也是如此)。

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()

最佳答案

您的x_valy_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_valy_val 变量代表球的中心,因此您必须将球包括在内上面条件中的大小使球从其边缘而不是中心弹起。

关于python - Pygame Pong 有条件使球弹跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53179247/

相关文章:

python - 为什么 Alpha 混合不能正常工作?

google-analytics - 实现Analytics(分析)自定义变量时出现问题(跳出率变为零)

python - centos6.9 上的 cassandra 无法连接到服务器

python - Matplotlib:在另一个轴面板上方绘制一条线

python - 通过 `re.split` 直接(在 Python 中)分隔每两个相邻不同数字之间的字符串?

python - 敌人跟随中间的玩家

python - 有没有更快的方法来检查 pygame 表面的 list[i] 是否具有 alpha 0

java - 盒子碰撞检测和弹跳

Jquery 跳到一个 div 上然后下来

python - f2py:在与 python 交互时在 fortran 中指定真正的精度?