Heim > Backend-Entwicklung > Python-Tutorial > Wie kann verhindert werden, dass der Ball in PyGame Grenzen überschreitet?

Wie kann verhindert werden, dass der Ball in PyGame Grenzen überschreitet?

Patricia Arquette
Freigeben: 2024-10-18 21:00:30
Original
436 Leute haben es durchsucht

How to Prevent Ball from Crossing Boundaries in PyGame?

Wie man mit PyGame einen Ball von Wänden abprallen lässt

Problem

Wie verhindert man in PyGame, dass ein Ball in eine Wand hineinfliegt, wenn es trifft eins?

Lösung

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Beispiel

<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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage