类函数中发生无限循环 - Pygame

时间:2017-08-18 16:09:57

标签: python pygame

我正在尝试为对象Note创建一个类,但由于某种原因,我创建了一个循环,并且该类无限地遍历所有函数。我需要x和y在每次对新对象Note(a,b,c,d).ExNote()时永久更改,所以我创建了包含x和y值的列表,因为我可以更改列表中的值,然后将值附加到列表中下次我在新对象上使用.ExNote()。 以下是所有代码:

class Note:
    x=[0]
    u=-4
    y=[0]
    def __init__(self, Num, staff, note, notetype):
        self.staff = staff
        self.note = note
        self.notetype = notetype
        self.Num=Num
    def Wstaff(self):
        for char in self.staff:
             if char == int:
                self.y[self.Num]+=160*int(char)
                break
                print(self.y)
                print(self.x)
             if self.Num==0 and char == 'R' and self.notetype=='Half':
                 self.x[self.Num]+=98
                 self.y[self.Num]+=59     # (51, -4)
                 break
                 print(self.y)
                 print(self.x)
             if self.Num==0 and char == 'R' and self.notetype=='4th':
                 self.x[self.Num]+=83
                 self.y[self.Num]+=62        #(31, -4)
                 break
                 print(self.y)
                 print(self.x)
             if self.Num==0 and char == 'R' and self.notetype==EthnoteIMG:
                self.x[self.Num]+=63
                self.y[self.Num]+=59       #(17, -4)
                print('wstaff')
                print(self.y)
                print(self.x)
             if self.Num==0 and char == 'R' and self.notetype=='16th':
                self.x[self.Num]+=49
                self.y[self.Num]+=54      #(9, -4)
                break
             #if Num=1 and char = 'L':
              #whole note () ()
              #half note () ()
              #4th note () ()
              #8th note () ()
              #16th note () ()
    def noteZ(self):
        print(self.y[self.Num])
        self.y[self.Num]+=(-4)*int(NoteDe[(str(self.note))])
        print('noteZ')
        print(self.y)
        print(self.x)
    def getcoord(self):
        self.Wstaff()
        self.Wnotetype()
        self.noteZ()
        print('getcoord')
        print(self.y)
        print(self.x)
    def ExNote(self):
        self.getcoord()
        self.Wnotetype()
        screen.blit(self.notetype, (self.x[self.Num],self.y[self.Num]))
        print('exnote')
        print(self.y)
        print(self.x)
    def Wnotetype(self):
        if self.Num!=0 and self.notetype == 'EthnoteIMG':
            self.x.append(self.x[self.Num]+17)
            self.y.append(self.y[self.Num])
            print('Wnotetype')
            print(self.y)
            print(self.x)
        if self.Num!=0 and self.notetype == '4th':  #Note(1, '0R', 'd', 'Ethnote').Exnote()
            self.x[self.Num]+=31
        if self.Num!=0 and self.notetype == 'Half':
            self.x[self.Num]+=51
        if self.Num!=0 and self.notetype == 'Whole':
            self.x[self.Num]+=76.5

Note(0, '0R', 'd', EthnoteIMG).ExNote()打印出来:

wstaff
[59]
[63]
59
noteZ
[55]
[63]
getcoord
[55]
[63]
exnote
[55]
[63]
wstaff
[114]
[126]
114
noteZ
[110]
[126]

我不明白为什么它在打印exnote [55] [63]之后不会停止,以及为什么它会通过所有功能返回。我确定它与其他功能中的类功能有关,但我之前没有遇到任何问题。

0 个答案:

没有答案