gpt4 book ai didi

python - 初始化类属性 Python

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:24 24 4
gpt4 key购买 nike

我有一个 Pygame 程序:

import pygame
import time
pygame.init()
white = (255,255,255)
red = (255,0,0)
gameDisplay = pygame.display.set_mode((600,800))
gameExit = False
x=0
y=0
w=25
h=25
class Shape:
square = pygame.draw.rect(gameDisplay,color,[x,y,w,h])
def __init__(self,color,x,y,w,h):
self.color = color
self.x = x
self.y = y
self.w = w
self.h = h
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
gameDisplay.fill(white)
shape = Shape(white,x,y,w,h)
pygame.display.update()
clock.tick(60)
pygame.quit()
quit()

我想用 init 初始化 Shape 类的 square 属性,但出现以下错误。 NameError:未定义名称“颜色”。如何初始化 square 属性。

最佳答案

我建议以这种方式重写代码:只需将颜色和一个 pygame.Rect 存储在 Shape 类中并给它一个 draw方法。将主循环放在 Shape 类中是没有意义的。现在您可以创建任意数量的形状并在 while 循环中绘制它们。

import sys
import pygame


pygame.init()
WHITE = pygame.Color('white')


class Shape:

def __init__(self, color, x, y, w, h):
self.color = color
self.rect = pygame.Rect(x, y, w, h)

def draw(self, surface):
pygame.draw.rect(surface, self.color, self.rect)


def main():
game_display = pygame.display.set_mode((600, 800))
shape = Shape(WHITE, 0, 0, 25, 25)
shape2 = Shape(pygame.Color('sienna1'), 100, 100, 25, 25)
clock = pygame.time.Clock()
game_exit = False

while not game_exit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_exit = True

game_display.fill((40, 40, 40))
shape.draw(game_display)
shape2.draw(game_display)
pygame.display.update()
clock.tick(60)


if __name__ == '__main__':
main()
pygame.quit()
sys.exit()

作为旁注,Python 中的变量名应以 snake_case(带下划线的小写)编写。此外,使用 sys.exit() 退出游戏。

关于python - 初始化类属性 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43735131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com