0
工作代码是在这里:http://codepad.org/L0OkeHlkPython类(基本)
from sys import exit
class Map(object):
def __init__(self, start):
self.start = start
def play(self):
next = self.start
while True:
print "\n---------"
room = getattr(self,next)
next = room()
def death(self):
exit(1)
def redroom(self):
prompt = raw_input("> ")
if "white" in prompt:
return "whiteroom"
elif "blue" in prompt:
return "blueroom"
else:
print "DOES NOT COMPUTE (RED ROOM)"
return 'death'
def whiteroom(self):
prompt = raw_input("> ")
if "red" in prompt:
return "redroom"
elif "blue" in prompt:
return "blueroom"
else:
print "DOES NOT COMPUTE (WHITE ROOM)"
return 'death'
def blueroom(self):
prompt = raw_input("> ")
if "white" in prompt:
return "whiteroom"
elif "red" in prompt:
return "redroom"
else:
print "DOES NOT COMPUTE (BLUE ROOM)"
return 'death'
class Engine(object):
pass
x = Map("redroom")
x.play()
上述作品。但仅仅是因为我在一堂课中做了所有事情。我想要玩耍和死亡的功能,并把它们放在他们自己的班里。
我的问题来自两个地方。我如何让Engine类调用地图类中的函数来使游戏工作?我怎么知道在Map/Engine类中初始化什么?我知道我应该初始化一些东西,但是我不知道如何设计它。在决定初始化时,我应该首先考虑什么?
非功能代码(我的最好的尝试):http://codepad.org/ELlaHQiB
from sys import exit
class Map(object):
def redroom(self):
prompt = raw_input("> ")
if "white" in prompt:
return "whiteroom"
elif "blue" in prompt:
return "blueroom"
else:
print "DOES NOT COMPUTE (RED ROOM)"
return 'death'
def whiteroom(self):
prompt = raw_input("> ")
if "red" in prompt:
return "redroom"
elif "blue" in prompt:
return "blueroom"
else:
print "DOES NOT COMPUTE (WHITE ROOM)"
return 'death'
def blueroom(self):
prompt = raw_input("> ")
if "white" in prompt:
return "whiteroom"
elif "red" in prompt:
return "redroom"
else:
print "DOES NOT COMPUTE (BLUE ROOM)"
return 'death'
class Engine(object):
def __init__(self, start):
self.start = start
def play(self):
next = self.start
while True:
print "\n---------"
room = getattr(self,next)
next = room()
def death(self):
exit(1)
x = Engine("redroom")
x.play()
而且,我不能确定的播放功能。它的作品,但只是因为我从我正在阅读的教程中获得它。下一个变量变为self.start然后在while循环中变成room()的目的是什么?
我想你可以尝试创建一个类调用'房间',并且要么将它们作为子类'redroom','blueroom'? 'play'函数可以在'Room'类中实现,所以它们都可以使用。最后,您可以将所有“房间”对象放入地图中。 – George 2012-04-07 20:26:52
为什么你想在这里上课呢?除了想要更多,你应该怀疑你是否需要任何。你没有做任何数据封装,这是在Python中做类的主要原因。 – 2012-04-07 20:50:40
'getattr(self,next)'正在寻找叫做'redroom'的'x'属性,并且它没有这样的属性。很难弄清楚你想在这里做什么,但是我怀疑你需要使用'getattr'。将“房间”表示为“地图”的方法似乎也很奇怪,并且避免命名变量“next”可能是一个好主意,因为这是重要的内置函数的名称。 – James 2012-04-07 21:33:32