Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menghalang Pergerakan Terlalu Pantas Semasa Mengendalikan Input Papan Kekunci dalam Pygame?

Bagaimana untuk Menghalang Pergerakan Terlalu Pantas Semasa Mengendalikan Input Papan Kekunci dalam Pygame?

DDD
DDDasal
2024-12-18 01:13:10587semak imbas

How to Prevent Excessively Fast Movement When Handling Keyboard Input in Pygame?

Input Papan Kekunci dalam Pygame: Mengendalikan Peristiwa Ketukan Kekunci

Dalam membangunkan permainan mudah menggunakan pygame 1.9.2, anda mungkin menghadapi isu di mana a kapal dikawal oleh kekunci anak panah bergerak terlalu pantas. Masalah ini berpunca daripada mendaftarkan penekanan kekunci secara berterusan semasa kekunci ditekan.

Untuk mengatasinya, bukannya bergantung pada pygame.key.get_pressed(), yang mendapatkan semula kekunci yang ditekan pada masa ini, pertimbangkan untuk mengendalikan peristiwa ketukan kekunci. Acara KEYDOWN menangkap kekunci yang ditekan dalam bingkai semasa, memastikan pergerakan hanya berlaku sekali setiap ketukan kekunci.

events = pygame.event.get()
for event in events:
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_LEFT:
            location -= 1
        if event.key == pygame.K_RIGHT:
            location += 1

Walau bagaimanapun, jika pergerakan berterusan dikehendaki, anda boleh melaksanakan pengehadan untuk menyekat kekerapan pergerakan. Satu pendekatan ialah menetapkan kadar bingkai maksimum atau menggunakan pembilang untuk mengehadkan pergerakan setiap beberapa kutu.

move_ticker = 0
keys = pygame.key.get_pressed()
if keys[K_LEFT]:
    if move_ticker == 0:
        move_ticker = 10
        location -= 1
        if location == -1:
            location = 0
if keys[K_RIGHT]:
    if move_ticker == 0:
        move_ticker = 10
        location += 1
        if location == 5:
            location = 4

Selain itu, semasa gelung permainan, anda akan mengurangkan pembilang:

if move_ticker > 0:
    move_ticker -= 1

Ini memastikan pergerakan berlaku hanya setiap 10 bingkai.

Atas ialah kandungan terperinci Bagaimana untuk Menghalang Pergerakan Terlalu Pantas Semasa Mengendalikan Input Papan Kekunci dalam Pygame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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