Ich schreibe Code für ein Paddel-Pong-Spiel in Pygame, wo der Ball von den 3 Wänden abprallen wird, die das Paddel nicht an ist, und wenn es die Paddelwand anstelle des Paddels schlägt, macht es du verlierst ein Leben. Mein Problem ist, dass ich die Kollisionserkennung dafür nicht herausfinden kann. Hier ist, was ich bisher getan:Pong Kollision Pygame
import pygame, sys
from pygame.locals import *
pygame.init()
screen_width = 640
screen_height = 480
Display = pygame.display.set_mode((screen_width, screen_height), 0, 32)
pygame.display.set_caption('Lonely Pong')
back = pygame.Surface((screen_width, screen_height))
background = back.convert()
background.fill((255, 255, 255))
paddle = pygame.Surface((80, 20))
_paddle = paddle.convert()
_paddle.fill((128, 0, 0))
ball = pygame.Surface((15, 15))
circle = pygame.draw.circle(ball, (0, 0, 0), (7, 7), 7)
_ball = ball.convert()
_ball.set_colorkey((0, 0, 0))
_paddle_x = (screen_width/2) - 40
_paddle_y = screen_height - 20
_paddlemove = 0
_ball_x, _ball_y = 8, 8
speed_x, speed_y, speed_circle = 250, 250, 250
Lives = 5
clock = pygame.time.Clock()
font = pygame.font.SysFont("verdana", 20)
paddle_spd = 5
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
if event.type == KEYDOWN:
if event.key == K_RIGHT:
_paddlemove = paddle_spd
elif event.key == K_LEFT:
_paddlemove = -paddle_spd
elif event.type == KEYUP:
if event.key == K_RIGHT:
_paddlemove = 0
elif event.key == K_LEFT:
_paddlemove = 0
Livespr = font.render(str(Lives), True, (0, 0, 0))
Display.blit(background, (0, 0))
Display.blit(_paddle, (_paddle_x, _paddle_y))
Display.blit(_ball, (_ball_x, _ball_y))
Display.blit(Livespr, ((screen_width/2), 5))
_paddle_x += _paddlemove
passed = clock.tick(30)
sec = passed/1000
_ball_x += speed_x * sec
_ball_y += speed_y * sec
pygame.display.update()
Ein weiteres Problem, das ich habe, ist, dass, wenn ich es starten, der Ball überhaupt nicht erscheinen. Könnte mir bitte jemand in die richtige Richtung zeigen? erste
Ich nehme Ihren Code wird nie vorbei an der 'für Veranstaltung in pygame .event.get() ', zum Zeichencode. Der Zeichnungscode sollte in der inneren Schleife sein; behebe die Einrückung und versuche es erneut. – 9000
Aber es ist wie seine einzige überspringen den Ball zeichnen, weil es das Paddel und die Leben zeichnet – TheBudderBomb
Haben Sie überprüft, dass "sec" nicht Null ist? Vielleicht könnte 'sec = passed/1000.0' das beheben. – 9000