Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Kod PyGame Saya Tidak Menarik Apa-apa?

Mengapa Kod PyGame Saya Tidak Menarik Apa-apa?

DDD
DDDasal
2024-12-26 00:37:13595semak imbas

Why Doesn't My PyGame Code Draw Anything?

Mengapa PyGame Gagal Melukis Apa-apa

Projek PyGame anda bertujuan untuk mencipta latar belakang dengan bahagian bawah kelabu dan bahagian atas hitam, menggunakan pygame.draw.rect() fungsi. Walaupun pengalaman sebelumnya yang berjaya dengan fungsi ini, anda menghadapi hasil lukisan yang tidak konsisten. Kadangkala, anda mendapat skrin hitam, manakala pada masa lain, segi empat tepat kelabu muncul sebahagiannya pada skrin.

Kekeliruan timbul daripada fakta bahawa lukisan sahaja tidak menghasilkan output yang kelihatan dalam PyGame. Selepas mengubah suai permukaan yang berkaitan, anda perlu mengemas kini paparan untuk membuat perubahan tersebut kelihatan.

Kemas Kini Paparan

Lukisan berlaku pada objek Surface yang dikaitkan dengan paparan PyGame. Walau bagaimanapun, perubahan ini tidak ditunjukkan secara automatik dalam paparan. Untuk menjadikannya kelihatan, anda mesti mengemas kini paparan secara eksplisit menggunakan pygame.display.update() atau pygame.display.flip().

pygame.display.flip() mengemas kini keseluruhan paparan, manakala pygame.display.update() menyediakan lebih banyak kemas kini terpilih untuk kawasan tertentu pada skrin. Ia biasanya lebih dioptimumkan untuk paparan perisian tetapi tidak disokong untuk paparan dipercepatkan perkakasan.

Gelung Aplikasi PyGame

Gelung aplikasi PyGame biasa terdiri daripada beberapa langkah:

  1. Pengendalian acara: Kendalikan acara menggunakan pygame.event.pump() atau pygame.event.get().
  2. Kemas kini keadaan: Kemas kini keadaan permainan dan kedudukan objek berdasarkan peristiwa input dan masa (bingkai).
  3. Paparan mengosongkan: Kosongkan paparan atau lukis latar belakang.
  4. Lukisan pemandangan: Lukis semua objek dalam pemandangan.
  5. Kemas kini paparan: Panggil pygame.display.update() atau pygame.display.flip() untuk membuat perubahan kelihatan.
  6. Penghadan kadar bingkai: Hadkan bingkai sesaat untuk mengelakkan penggunaan CPU yang berlebihan dengan pygame.time.Clock.tick.

Contoh Kod

Berikut ialah kod diubah suai yang termasuk kemas kini paparan:

import pygame
from pygame.locals import *
pygame.init()

DISPLAY = pygame.display.set_mode((800,800))
pygame.display.set_caption("thing")
clock = pygame.time.Clock()

run = True
while run:
    # handle events
    for event in pygame.event.get():
        if event.type == QUIT:
            run = False

    # clear display
    DISPLAY.fill(0)

    # draw scene
    pygame.draw.rect(DISPLAY, (200,200,200), pygame.Rect(0,400,800,400))

    # update display
    pygame.display.flip()

    # limit frames per second
    clock.tick(60)

pygame.quit()
exit()

Dengan memasukkan kemas kini paparan yang diperlukan , kini anda sepatutnya melihat latar belakang yang dijangkakan dengan bahagian bawah kelabu dan bahagian atas hitam.

Atas ialah kandungan terperinci Mengapa Kod PyGame Saya Tidak Menarik Apa-apa?. 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