Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membuat Bola Melantun dalam PyGame tanpa Bergantung pada Kelas Vector2?
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!