2013-12-21 3 views
0

Я создаю объектыСоздание массива объектов в Python для 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) 

Моя программа работает, когда я пытаюсь создать массив дисков и с помощью этих дисков вместо жесткого кодирования каждого отдельного диска, за исключением.

+0

Так что происходит, когда вы создаете список 'Disk'? –

+0

В нем говорится, что «диск» не определен, но я не понимаю, почему – user3029845

+0

Где диск определен? – Sebi2020

ответ

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 
+0

для i в диапазоне (num) дает рейтинг индекса за пределами диапазона – user3029845

+0

Является ли 'colours' 25 единиц длинным? – jonrsharpe

+0

Да, это было то, что было, я даже не заметил, что – user3029845

Смежные вопросы