【发布时间】:2016-04-09 16:54:24
【问题描述】:
我用海龟图形用 Python 制作了游戏:河内之塔,因为这是我的学校作业。
#For moving disks
Selected = []
Steps = 0
amount = 6 #amount of disks
#Properties = [X, Y, Width, Height, Tower's Disks]
Tower1 = [-2 - amount, -1, amount, 3/2, []]
Tower2 = [0, -1, amount, 3/2, []]
Tower3 = [2 + amount, -1, amount, 3/2, []]
Tower1[4] = CreateDisks(amount, Tower1)
Tower1 = TowerCreate(Tower1)
Tower2 = TowerCreate(Tower2)
Tower3 = TowerCreate(Tower3)
#(After / Na 'TowerCreate') Properties = [X, Y, Width, Height, Tower's Disks, Tower's Button]
现在我们有了这段运动代码,但是我的老师不允许我使用类,所以我只能使用函数(defs),谁能帮我把它重新编码成defs,这样我的程序仍然可以工作?这样您仍然可以单击按钮并将磁盘移动到正确的位置。
class Move:
#'Properties' contents: [X, Y, Width, Height, Tower's Disks, Tower's Button]
#'Selected' contents: [Disk to move, Tower's selected Button / Start Disk location]
def __init__(self, Properties):
self.Properties = Properties
self.X = Properties[0] * 20
self.Disk_List = Properties[4]
self.Act_Colour = 'white'
self.Inact_Colour = 'black'
def movement(self, x, y):
global Steps
self.Y = (self.Properties[1] + len(self.Disk_List)) * 20 + 45
if len(Selected) == 0 and len(self.Disk_List) > 0:
self.Properties[5].fillcolor(self.Act_Colour)
Selected.append(self.Disk_List) #Adds the list with disks to the selected tower
Selected.append(self.Properties[5]) #To reset the color of the botton
elif len(Selected) == 2 and len(self.Disk_List) > 0 and Selected[0][-1].shapesize()[1] == self.Disk_List[-1].shapesize()[1]: #To deselect toe button
Selected[1].fillcolor(self.Inact_Colour)
del Selected[0]
del Selected[0]
elif len(Selected) == 2 and (len(self.Disk_List) == 0 or Selected[0][-1].shapesize()[1] < self.Disk_List[-1].shapesize()[1]): #Lazy function
Selected[1].fillcolor(self.Inact_Colour)
Selected[0][-1].goto(self.X, self.Y) #Highest disk of thelist
self.Disk_List.append(Selected[0][-1]) #Put the highest disk of the list in the correct place in the list
del Selected[0][-1] #del the disk from the tower and selected
del Selected[0] #del the lost from 'Selected',the list of the tower remains
del Selected[0] #del thebutton
Steps = Steps + 1
【问题讨论】:
-
什么样的老师不允许上课?没有意义,因为 OOP 是一个易于理解的有用概念……
-
他还没有向我们解释,所以我们预计不会使用它。如果我们这样做,他会怀疑我们作弊或成为麻烦,因为我们需要让我们遵守任务的规定(仅使用函数和海龟图形=p)。我也发现它更容易,但他让我重新编码。
标签: python list function turtle-graphics towers-of-hanoi