在Python中为pygame创建一个对象数组

时间:2013-12-21 22:13:54

标签: python arrays object pygame

我创建了对象

class Disk:
def __init__(self,number,colour,position,size):
    self.size = size
    self.colour = colour
    self.number = number
    self.position = position


def Render(self,screen):
    pygame.draw.rect(screen,self.colour,(self.position,self.size))

我正在尝试使用用户输入创建此对象的数组(现在我只是创建自己的数字) 颜色是我创建的一个单独的数组(它可以工作)

def drawDisk(screen,colours):

    num = 5
    for i in range (num):
         disk[i] = Disk(i,colours[i*num],(0+(i*15),500-(i*50)),(400 -(i*30),50))
    disk[i].Render(screen)

除了我尝试创建磁盘阵列并使用这些磁盘而不是对每个磁盘进行硬编码时,我的程序才有效。

1 个答案:

答案 0 :(得分:0)

您尚未定义disk。您正在尝试同时创建列表及其中的项目并对其进行迭代,但实际上并没有告诉Python disk应该是什么。尝试:

def drawDisk(screen, colours):
    disk = [Disk(i, colours[i], (0+(i*15), 500-(i*50)), (400 -(i*30), 50))
            for i in range(len(colours))] # create and fill disk
    # list comprehension, equivalent to:
    # disk = []
    # for i in range(len(colours)):
    #     disk.append(Disk(i, colours[i], ...))
    for d in disk:
        d.Render(screen) # use items in disk
    return disk # for use elsewhere