Masalah mengemas kini segi empat tepat dengan sifat tersuai dalam Pygame

王林
Lepaskan: 2024-02-09 19:42:04
ke hadapan
451 orang telah melayarinya

在 Pygame 中使用自定义属性更新矩形时出现问题

Kandungan soalan

Saya sedang menyahpepijat salah satu atur cara saya dan saya cuba menetapkan pembolehubah tersuai pada segi empat tepat untuk mengemas kini kedudukannya.

Ini kod saya:

import os ; os.environ['PYGAME_HIDE_SUPPORT_PROMPT']='False'
import pygame, random

pygame.init()
display = pygame.display.set_mode((401, 401))
display.fill("white") ; pygame.display.flip()

class MyRect(pygame.Rect):

    def __setattr__(self, attr, value): # Sets a custom attribute to a rectangle
        super().__setattr__(attr, value)
        if attr == 'xValue':
            pygame.Rect.move(self, (value-self.centerx), 0) # Move the rectangle according to the xValue
    
    def contains(self, coords):
        return self.collidepoint(coords)

square = MyRect(175, 175, 50, 50)
pygame.draw.rect(display, 'steelBlue', square) # Draw the rectangle to the screen
square.xValue = 200

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit() ; exit()
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if square.contains(pygame.mouse.get_pos()):
                square.xValue = random.randint(0, display.get_width()) # Update the square.xValue property
        pygame.display.flip() # Update the screen
Salin selepas log masuk

Apabila saya melaksanakan program, sifat square.xvalue berubah, tetapi kedudukan segi empat sama pada skrin tidak berubah.

Apa yang saya terlepas?


Jawapan betul


Anda perlu melukis semula adegan itu. Segi empat tepat mesti dilukis semula selepas perubahan. Paparan jelas dan lukis segi empat tepat dalam gelung aplikasi:

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit() ; exit()
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if square.contains(pygame.mouse.get_pos()):
                square.xValue = random.randint(0, display.get_width()) # Update the square.xValue property

    display.fill("white");   
    pygame.draw.rect(display, 'steelBlue', square)     
    pygame.display.flip() # Update the screen
Salin selepas log masuk

Atas ialah kandungan terperinci Masalah mengemas kini segi empat tepat dengan sifat tersuai dalam Pygame. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!