Melaksanakan Lantunan Bola Dari Dinding Menggunakan PyGame
Memahami Masalah
Mencipta permainan di mana bola melantun dari dinding dalam PyGame melibatkan pengesanan perlanggaran antara bola dan sempadan persekitaran permainan. Walaupun kod Python yang disediakan berhasrat untuk melaksanakan tingkah laku ini, ia menghadapi masalah apabila bola memasuki dinding atas dan bukannya melantun keluar.
Penyelesaian
Untuk menangani perkara ini isu, kita boleh menggunakan pendekatan yang berbeza:
Pelaksanaan
<code class="python">import pygame # Initialize PyGame pygame.init() # Set screen dimensions screenWidth = 1200 screenHeight = 700 # Create the game window window = pygame.display.set_mode((screenWidth, screenHeight)) pygame.display.set_caption('Atari Breakout') # Define the ball's initial position and radius box = Circle(600, 300, 10) # Define the boundary bounds bounds = pygame.Rect(450, 200, 300, 200) # Main game loop run = True clock = pygame.time.Clock() while run: # Set the frame rate clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False # Check for key presses (spacebar to start the ball's movement) keys = pygame.key.get_pressed() if keys[pygame.K_SPACE]: start = True # Move the ball and adjust its velocity when it hits the boundaries 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 # Render the game window 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() # Quit PyGame pygame.quit()</code>
Dalam kod ini, pergerakan bola berterusan selama-lamanya dalam gelung permainan. Apabila ia bertemu dengan sempadan, halajunya diubah suai, menyebabkan ia melantun dari dinding. Objek pygame.Rect memastikan bola kekal dalam kawasan yang ditetapkan.
Kelas Vektor2
Walaupun kelas vektor2 tidak diperlukan untuk pelaksanaan ini, ia menyediakan pelbagai matematik operasi untuk vektor 2D. Untuk mendapatkan maklumat lanjut tentang kelas vector2, rujuk dokumentasi PyGame.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Dinding Atas Penembusan Bola dalam Senario Lantunan Bola PyGame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!