Dalam Pygame, kaedah rect.move digunakan untuk menggerakkan objek segi empat tepat dengan bilangan piksel tertentu. Walau bagaimanapun, kaedah ini hanya menerima nilai integer. Ini boleh menjadi masalah apabila anda ingin mengalihkan objek dengan jumlah pecahan, seperti semasa anda mensimulasikan graviti.
Terdapat dua cara untuk mengatasi had ini. Yang pertama ialah menggunakan fungsi round() untuk membundarkan nilai titik terapung kepada integer terdekat. Sebagai contoh, kod berikut akan mengalihkan segi empat tepat sebanyak 0.5 piksel ke arah y:
rect.move((0, round(0.5)))
Cara kedua untuk mengatasi had ini ialah menggunakan kaedah set_topleft() untuk menetapkan sudut kiri atas segi empat tepat ke kedudukan baharu. Contohnya, kod berikut akan mengalihkan segi empat tepat sebanyak 0.5 piksel ke arah y:
rect.set_topleft((rect.left, rect.top + 0.5))
Akhirnya, kaedah terbaik untuk digunakan bergantung pada keperluan khusus anda. Jika anda perlu memindahkan objek dengan jumlah yang sangat kecil, maka menggunakan fungsi round() mungkin merupakan pilihan terbaik. Walau bagaimanapun, jika anda perlu memindahkan objek dengan jumlah yang lebih besar, maka menggunakan kaedah set_topleft() mungkin merupakan pilihan yang lebih baik.
Berikut ialah contoh bagaimana anda boleh menggunakan fungsi round() untuk menggerakkan objek dengan jumlah pecahan:
import pygame # Create a new Pygame window window = pygame.display.set_mode((400, 300)) # Create a new rectangle object rect = pygame.Rect(100, 100, 100, 100) # Move the rectangle by 0.5 pixels in the y direction rect.move((0, round(0.5))) # Draw the rectangle to the window pygame.draw.rect(window, (255, 0, 0), rect) # Update the display pygame.display.update() # Wait for the user to close the window while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit()
Atas ialah kandungan terperinci Bagaimana untuk Menggerakkan Pygame Rect dengan Jumlah Pecahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!