Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menghalang Bola daripada Melintasi Sempadan dalam PyGame?

Bagaimana untuk Menghalang Bola daripada Melintasi Sempadan dalam PyGame?

Patricia Arquette
Lepaskan: 2024-10-18 21:00:30
asal
387 orang telah melayarinya

How to Prevent Ball from Crossing Boundaries in PyGame?

Cara Membuat Bola Melantun Dari Dinding dengan PyGame

Masalah

Dalam PyGame, bagaimana anda menghalang bola daripada masuk ke dalam dinding apabila ia mencecah satu?

Penyelesaian

Gelung Bersarang:

Isu timbul daripada menggunakan berbilang gelung bersarang. Ia lebih cekap untuk mengendalikan pergerakan dalam gelung aplikasi.

<code class="python">while run:                     
    # Handle movement continuously
    box.y -= box.vel_y        
    box.x += box.vel_x</code>
Salin selepas log masuk

Definisi Sempadan:

Tentukan kawasan segi empat tepat untuk pergerakan bola menggunakan pygame.Rect object:

<code class="python">bounds = window.get_rect() # full screen
bounds = pygame.Rect(450, 200, 300, 200)  # rectangular region</code>
Salin selepas log masuk

Pengendalian Perlanggaran Sempadan:

Kemas kini arah bola apabila ia bersilang dengan sempadan:

<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>
Salin selepas log masuk

Contoh

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menghalang Bola daripada Melintasi Sempadan dalam PyGame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan