Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membuat Bola Melantun dalam PyGame tanpa Bergantung pada Kelas Vector2?

Bagaimana untuk Membuat Bola Melantun dalam PyGame tanpa Bergantung pada Kelas Vector2?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-18 20:57:02736semak imbas

How to Make a Bouncing Ball in PyGame without Relying on Vector2 Class?

Melantun Bola dalam PyGame Tanpa Kelas Vector2

Dalam senario ini, anda menghadapi masalah membuat bola melantun dari dinding dalam skrip PyGame , terutamanya apabila berlanggar dengan dinding atas. Walaupun penyelidikan anda, anda masih mengalami cabaran.

Gelung Bersarang dan Pendekatan Alternatif:

Isu utama ialah gelung bersarang berbilang. Sebaliknya, gerakkan bola secara berterusan dalam gelung aplikasi.

<code class="python">box.y -= box.vel_y        
box.x += box.vel_x</code>

Menentukan Wilayah Segi Empat:

Buat kawasan segi empat tepat, atau sempadan, untuk bola menggunakan Objek PyGame Rect. Ini akan menentukan kawasan di mana bola boleh bergerak.

<code class="python">bounds = window.get_rect() # full screen</code>

Atau, anda boleh menentukan kawasan segi empat tepat tertentu:

<code class="python">bounds = pygame.Rect(450, 200, 300, 200) </code>

Menukar Arah Pergerakan:

Apabila bola mencecah sempadan, tukar arah pergerakannya menggunakan kod berikut:

<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>

Contoh:

Berikut ialah contoh yang menunjukkan pendekatan ini:

<code class="python">import pygame

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>

Contoh ini termasuk segi empat tepat merah yang mewakili sempadan di mana bola bergerak dan melantun dari dinding.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Bola Melantun dalam PyGame tanpa Bergantung pada Kelas Vector2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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