Pygame Pong условно, чтобы мяч подпрыгивал - PullRequest
0 голосов
/ 06 ноября 2018

Есть ли условие, которое можно добавить к этому коду, которое вызовет 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 ()

1 Ответ

0 голосов
/ 07 ноября 2018

Ваши 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 и y_val представляют центр вашего шара, вам нужно будет включить размер шара в условное выше, чтобы заставить мяч отскочить от его край, в отличие от его центра.

...