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

Mary-Kate Olsen
Lepaskan: 2024-10-18 20:57:02
asal
619 orang telah melayarinya

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

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

Atau, anda boleh menentukan kawasan segi empat tepat tertentu:

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

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

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!