Heim >Backend-Entwicklung >Python-Tutorial >Wie kann verhindert werden, dass der Ball in PyGame Grenzen überschreitet?
Wie verhindert man in PyGame, dass ein Ball in eine Wand hineinfliegt, wenn es trifft eins?
Verschachtelte Schleifen:
Das Problem entsteht durch die Verwendung mehrerer verschachtelter Schleifen. Es ist effizienter, Bewegungen innerhalb der Anwendungsschleife zu handhaben.
<code class="python">while run: # Handle movement continuously box.y -= box.vel_y box.x += box.vel_x</code>
Grenzdefinition:
Definieren Sie einen rechteckigen Bereich für die Ballbewegung mithilfe eines pygame.Rect-Objekts:
<code class="python">bounds = window.get_rect() # full screen bounds = pygame.Rect(450, 200, 300, 200) # rectangular region</code>
Handhabung von Grenzkollisionen:
Aktualisieren Sie die Ballrichtung, wenn sie die Grenzen schneidet:
<code class="python">if box.x - box.radius < bounds.left or box.x + box.radius > bounds.right: box.vel_x *= -1 if box.y - box.radius < bounds.top or box.y + box.radius > bounds.bottom: box.vel_y *= -1</code>
<code class="python">box = Circle(600,300,10) run = True start = False clock = pygame.time.Clock() while run: clock.tick(120) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False keys = pygame.key.get_pressed() if keys[pygame.K_SPACE]: start = True bounds = pygame.Rect(450, 200, 300, 200) if start: box.y -= box.vel_y box.x += box.vel_x if box.x - box.radius < bounds.left or box.x + box.radius > bounds.right: box.vel_x *= -1 if box.y - box.radius < bounds.top or box.y + box.radius > bounds.bottom: box.vel_y *= -1 window.fill((0,0,0)) pygame.draw.rect(window, (255, 0, 0), bounds, 1) pygame.draw.circle(window, (44,176,55), (box.x, box.y), box.radius) pygame.display.update()</code>
Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass der Ball in PyGame Grenzen überschreitet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!