def pong_collision(paddles, pong, size):
''' paddles and pong out of bounds collison '''
for paddle in paddles:
ends = [0, size[0] - paddle.rect.width]
# pong|paddle collision
if paddle.rect.colliderect(pong.rect):
pong.vel.x = -pong.vel.x
pong.music.sound.play(loops=0, maxtime=0, fade_ms=0)
if (ends[1] <= pong.rect.x or pong.rect.x <= ends[0]):
# pong out of bounds collision
if pong.rect.x <= ends[0]:
# add point to right paddle if pong is < 0
if paddle.side == 'right':
paddle.text.value += 1
if pong.rect.x >= ends[1]:
# add poitn to left paddle if pong is > screen size
if paddle.side == 'left':
paddle.text.value += 1
# freezes ball until user starts game
pong.state = False
# resets pong position to initial
pong.rect.topleft = [
(size[0]-pong.rect.width)/2,
(size[1]-pong.rect.height)/2
]
So habe ich diese Pong-Kollisionserkennung oben, die erkennt, wenn der Ping-Pong-Ball die Grenze des Bildschirms erreicht. Was passieren soll ist, dass der Spieler als Punktestand den Punkt bekommt. Dann wird der Ball angehalten und auf die Mitte des Bildschirms zurückgesetzt. Alles funktioniert gut bis auf eine Sache, wenn der rechte Spieler einen Punkt erzielt, wird der Punkt nicht hinzugefügt.Hinzufügen von Punkten zum Spieler, wenn Pong Bildschirm grenzt
Ich bin verwirrt, warum das passiert, klar ist die Kollisionserkennung für beide Paddel gleich, also warum funktioniert man nicht?
Sie hatten Recht, das war das Problem, es ist schade, jetzt muss ich zusätzlichen Code hinzufügen, um es zu beheben. –
Wenn es nur die zusätzliche Schleife ist, sollte der Code 1 zusätzliche Zeile, 2 Operationen insgesamt (beide der if-Anweisungen) sein, die auf 1 reduziert werden könnte, wenn ein Elif verwendet wird. – njoosse