Python 让两类游戏互动
所以我知道这个网站有太多关于Zed Shaw的《艰苦学习Python》的问题,但我正在经历ex42,额外的学分#3,让我挂断了电话 我很难让类引擎有效地启动并转换到类映射中,在那里游戏可以开始执行我定义的不同函数 代码如下:Python 让两类游戏互动,python,class,function,Python,Class,Function,所以我知道这个网站有太多关于Zed Shaw的《艰苦学习Python》的问题,但我正在经历ex42,额外的学分#3,让我挂断了电话 我很难让类引擎有效地启动并转换到类映射中,在那里游戏可以开始执行我定义的不同函数 代码如下: from sys import exit from random import randint class Map(object): def death(): print quips[randint (0, len(quips)-1)]
from sys import exit
from random import randint
class Map(object):
def death():
print quips[randint (0, len(quips)-1)]
exit(1)
def princess_lives_here():
print "You see a beautiful Princess with a shiny crown."
print "She offers you some cake."
eat_it = raw_input(">")
if eat_it == "eat it":
print "You explode like a pinata full of frogs."
print "The Princess cackles and eats the frogs. Yum!"
return 'death'
elif eat_it == "do not eat it":
print "She throws the cake at you and it cuts off your head."
print "The last thing you see is her munching on your face. Yum!"
return 'death'
elif eat_it == "make her eat it":
print "The Princess screams as you cram the cake in her mouth."
print "Then she smiles and cries and thank you for saving her."
print "She points to a tiny door and says, 'The Koi needs cake too.'"
print "She gives you the very last bit of cake and shoves you in."
return 'gold_koi_pond'
else:
print "The Princess looks at you confused and just points at the cake."
return 'princess_lives_here'
class Engine(Map):
def _init_(self, start):
self.quips = [
"You died. You suck at this.",
"Your mom would be proud, if she were smarter",
"Such a luser.",
"I have a small puppy that's better at this."
]
self.start = start
def play(self):
next = self.start
while True:
print "\n-----"
room = getattr(self, next)
next = room()
e = "princess_lives_here".Map.Engine
e.play()
现在的问题不是Map类中的其他函数,而是从类引擎到类Map的转换,这样游戏就可以继续了。它不是在类引擎中定义“Map”,就是在我最后设置的变量中定义“Map”,并尝试使用play()命令运行
任何其他链接,你可以指给我关于课堂互动将是伟大的。再一次这里有很多错误 所示代码非法缩进;它看起来像是
\uu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
类的\uuuu init\uuuu
两端需要双下划线,而不是单下划线
该行:
e = "princess_lives_here".Map.Engine
是荒谬的蟒蛇;它首先尝试在字符串中查找“Map”属性。如果您想实例一个类的新对象,您可以说
e = Engine( "princess_lives_here" ) # or Map( "...")?
我不清楚你们需要地图和引擎做什么,但我猜你们要么想让地图成为引擎的一个子类(引擎对所有游戏都是通用的,地图对这个游戏是特定的),要么想让它们成为独立的对象,引擎和地图相互引用
目前,引擎是Map的一个子类。如果它们应该是分开的,那么将引擎声明为一个对象,让它的\uuuu init\uuuu
同时获取一个起点和一个映射实例,然后执行以下操作
m = Map()
e = Engine( m, "princess_lives_here" )
这里有很多错误
所示代码非法缩进;它看起来像是\uu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
类的\uuuu init\uuuu
两端需要双下划线,而不是单下划线
该行:
e = "princess_lives_here".Map.Engine
是荒谬的蟒蛇;它首先尝试在字符串中查找“Map”属性。如果您想实例一个类的新对象,您可以说
e = Engine( "princess_lives_here" ) # or Map( "...")?
我不清楚你们需要地图和引擎做什么,但我猜你们要么想让地图成为引擎的一个子类(引擎对所有游戏都是通用的,地图对这个游戏是特定的),要么想让它们成为独立的对象,引擎和地图相互引用
目前,引擎是Map的一个子类。如果它们应该是分开的,那么将引擎声明为一个对象,让它的\uuuu init\uuuu
同时获取一个起点和一个映射实例,然后执行以下操作
m = Map()
e = Engine( m, "princess_lives_here" )
不应该是e=Engine(“公主生活在这里”)
?不应该是e=Engine(“公主生活在这里”)
?实际上,如果单击“编辑”,代码的缩进是正确的。也许markdown太挑剔了?@Russell-我把问题写错了。在我的代码中正确缩进了init()、play()、death()和princess_lives_here()。但thx用于初始化函数的提示。现在,在我将它们更正为独立并将引擎设置为一个对象之后,我得到了:TypeError:\uuuu init\uuuuu()正好接受2个参数(给出了3个参数)…在我的理解中,错误正在发生,因为我有self、start和quips在其中。请建议如何更正我给uu init_uuuuuuuuuuuuuuu()fcn构造函数调用的参数数量,以获得一个隐式的“self”,因此e=Engine(“princess_ulives_uhere”,quips)需要uuu init_uuuuuuuuu(self,start,quips)-我得到以下响应:getattr():属性名称必须是字符串…鉴于我创建了Map(),getattr()似乎应该简单地获取我们在类映射中指定的fcn,我们将其指定为“princess_lives_here”。在Engine()调用中传递的参数需要与类引擎的_uinit_u()中指定的参数匹配,除了“自我”。所以引擎(m,“公主生活在这里”)需要初始(self,map,to,use,start),而不是初始(self,start,quips)。实际上,如果单击“编辑”,代码的缩进是正确的。也许markdown太挑剔了?@Russell-我把问题写错了。在我的代码中正确缩进了init()、play()、death()和princess_lives_here()。但thx用于初始化函数的提示。现在,在我将它们更正为独立并将引擎设置为一个对象之后,我得到了:TypeError:\uuuu init\uuuuu()正好接受2个参数(给出了3个参数)…在我的理解中,错误正在发生,因为我有self、start和quips在其中。请建议如何更正我给uu init_uuuuuuuuuuuuuuu()fcn构造函数调用的参数数量,以获得一个隐式的“self”,因此e=Engine(“princess_ulives_uhere”,quips)需要uuu init_uuuuuuuuu(self,start,quips)-我得到以下响应:getattr():属性名称必须是字符串…鉴于我创建了Map(),getattr()似乎应该简单地获取我们在类映射中指定的fcn,我们将其指定为“princess_lives_here”。在Engine()调用中传递的参数需要与类引擎的_uinit_u()中指定的参数匹配,除了“自我”。所以引擎(m,“公主就住在这里”)需要初始化(self,map,to,use,start),而不是初始化(self,start,quips)。