Dalam membangunkan aplikasi Pygame anda, anda telah menghadapi kesukaran dengan kefungsian gelung permainan. Khususnya, anda cuba mencipta sistem kamera tetapi mendapati bahawa tutorial lapuk tidak lagi digunakan. Artikel ini memberikan cerapan untuk menyelesaikan masalah aplikasi anda dan melaksanakan sistem kamera.
Gelung permainan Pygame adalah penting untuk kelancaran aplikasi anda. Ia biasanya dilaksanakan dalam gelung malar, mengendalikan tugas berikut:
Dalam coretan kod asal anda, anda salah tafsir proses pemaparan. Daripada melukis latar belakang pada kedudukan objek pemain, menggerakkan pemain, dan kemudian memberikan pemain itu semula, anda hanya perlu membuat latar belakang sekali dan melukis semua objek di atasnya. Pygame hanya mengemas kini paparan apabila anda memanggil pygame.display.update() atau pygame.display.flip().
Berdasarkan cerapan ini, berikut ialah versi semakan anda gelung permainan yang memisahkan pemaparan dengan betul daripada kemas kini keadaan objek:
while 1: # Handle events for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # Update object states (based on input and time) keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: objects[0].move_left() if keys[pygame.K_RIGHT]: objects[0].move_right() if keys[pygame.K_UP]: objects[0].move_up() if keys[pygame.K_DOWN]: objects[0].move_down() for num in range(num_objects - 1): objects[num + 1].rand_move() # Draw background screen.blit(background, (0, 0)) # Draw scene for o in objects: screen.blit(o.image, o.pos) # Update display pygame.display.update() pygame.time.delay(100)
Melaksanakan sistem kamera dalam Pygame memerlukan beberapa pertimbangan tambahan:
Dengan mengambil kira konsep ini, anda boleh melaksanakan sistem kamera asas dengan mengubah suai gelung permainan seperti berikut:
# Add camera attributes camera_viewport = (0, 0, screen_width, screen_height) camera_target = characters[0] # Update game loop to follow the camera while 1: # ... (same event handling and object state update) # Calculate camera offset camera_offset_x = camera_target.pos.x - camera_viewport[0] - camera_viewport[2] / 2 camera_offset_y = camera_target.pos.y - camera_viewport[1] - camera_viewport[3] / 2 # Set the camera viewport screen.blit(background, (camera_offset_x, camera_offset_y), camera_viewport) # Render objects relative to the camera viewport for o in objects: screen.blit(o.image, (o.pos.x - camera_offset_x, o.pos.y - camera_offset_y)) # ... (same display update)
Pelaksanaan ini memastikan kamera mengikut sasaran, menyediakan persekitaran permainan yang dinamik.
Atas ialah kandungan terperinci Mengapa Gelung Permainan Pygame Saya Tidak Berfungsi dan Bagaimana Saya Boleh Melaksanakan Sistem Kamera?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!