Python初学者,基于文本的游戏
我对编程游戏相当陌生;我已经3/4完成了Python初学者,基于文本的游戏,python,text,text-based,Python,Text,Text Based,我对编程游戏相当陌生;我已经3/4完成了艰苦地学习Python,我有一个关于我制作的一个基于文本的小游戏的问题。。。所以在这个游戏中,我的家伙被困在一个荒岛上,你可以选择(原始输入)向左向右或进入丛林。选择方向后,您可以选择步行多少英里。每个方向都应该有不同的最终结果(和英里距离) 如果您输入的数字小于到达目的地的英里数,系统会提示您选择“掉头”或“继续”。如果您输入掉头,系统会将您带回起点,再次要求您选择方向。如果您输入继续,程序将返回到英里(),您可以选择新的步行里程数 def miles(
艰苦地学习Python
,我有一个关于我制作的一个基于文本的小游戏的问题。。。所以在这个游戏中,我的家伙被困在一个荒岛上,你可以选择(原始输入)向左向右或进入丛林。选择方向后,您可以选择步行多少英里。每个方向都应该有不同的最终结果(和英里距离)
如果您输入的数字小于到达目的地的英里数,系统会提示您选择“掉头”或“继续”。如果您输入掉头
,系统会将您带回起点,再次要求您选择方向。如果您输入继续
,程序将返回到英里(),您可以选择新的步行里程数
def miles():
print "How many miles do you walk?"
miles_choice = raw_input("> ")
how_much = int(miles_choice)
if how_much >= 10:
right_dest()
elif how_much < 10:
turn()
else:
print "You can't just stand here..."
miles()
def miles():
打印“你走了多少英里?”
里程选择=原始输入(“>”)
多少=整数(英里数选择)
如果多少>=10:
右图()
elif多少<10:
转()
其他:
打印“你不能站在这里…”
迈尔斯()
好的,这里有两个问题:
如果用户最初输入的英里数小于目的地距离,并且第二英里输入+第一英里输入==到目的地的英里数,那么如何使其添加输入并运行我的目的地函数,而不仅仅是重复英里()
由于所有三个最终目的地都有不同的距离,我是否应该编写三个独立的英里函数?是否有一种方法可以使英里()根据选择的原始方向运行不同的端点
如果这没有任何意义,我很抱歉……我仍在学习,我不确定如何充分解释我要表达的意思。您可以在dict中存储每个方向的行走里程数,然后检查dict,查看用户是否走得足够远:
distances = {
'right': 7,
'left': 17,
'forward': 4
}
direction_choice = raw_input("> ")
miles_choice = raw_input("> ")
if how_much >= distances['direction_choice']:
right_dest()
elif how_much < distances['direction_choice']:
turn()
else:
print "You can't just stand here..."
miles()
距离={
"对":7,,
"左":17,,
“前进”:4
}
方向选择=原始输入(“>”)
里程选择=原始输入(“>”)
如果多少>=距离[“方向选择]:
右图()
elif多少距离[方向选择]:
转()
其他:
打印“你不能站在这里…”
迈尔斯()
确保正确地验证和转换用户输入,我没有解决。<强>好运!< /强>
< p>我不完全理解需求(预期行为和约束)。但是,您可以考虑将参数传递给函数(通过和参数)传达该剧在该方向能走的最大英里数)
例如:
#!/usr/bin/env python
# ...
def miles(max_miles=10):
print "How many miles do you walk?"
while True:
miles_choice = raw_input("> ")
try:
how_much = int(miles_choice)
except ValueError, e:
print >> sys.stderr, "That wasn't a valid entry: %s" % e
continue
if max_miles > how_much > 0:
break
else:
print "That's either too far or makes no sense"
return how_much
…在这种情况下,通过“max_miles”参数将最大有效英里数传递给函数,然后返回一个有效整数(介于1和max_miles之间)
该函数的调用者有责任根据需要调用right\u dest()
或turn()
请注意,我已删除了对miles()
的递归调用,并将其替换为,而True:
循环,围绕try:…除了ValueError:…
验证循环。在这种情况下,这比递归更合适。当值多少有效时,代码将从循环中中断
(顺便说一句,如果调用miles()
,而不使用任何参数,那么参数将根据“defaulted argument”特性设置为10。这对于Python(和Ruby)来说是不寻常的……但基本上,对于有合理默认值的情况,参数是可选的).@Question#1:我使用了类intern变量。您可能需要它们来进行进一步的编程部分,当您在一个方向上完成时,应该将其设置为零,以零开始下一步/lvl
@问题#2:字典是最好的方法,self.dest
。参数pos
用作从字典中获取值的键
class MyGame:
def __init__(self):
self.current_miles = 0
self.dest = {'Left' : 10, 'Into the jungle' : 7, 'Right' : 22}
def miles(self,pos):
print "How many miles do you walk?"
miles_choice = raw_input("> ")
self.current_miles += int(miles_choice)
if self.current_miles >= self.dest.get(pos):
self.miles("Right")
elif self.current_miles < self.dest.get(pos):
print "you went "+ str(self.current_miles) + " miles"
else:
print "You can't just stand here..."
self.miles(pos)
mg = MyGame()
mg.miles('Into the jungle')
classmygame:
定义初始化(自):
自身当前里程=0
self.dest={‘左’:10,‘进入丛林’:7,‘右’:22}
def里程(自我,位置):
打印“你走了多少英里?”
里程选择=原始输入(“>”)
self.current_miles+=int(miles_选项)
如果self.current\u miles>=self.dest.get(位置):
self.miles(“右”)
elif self.current\u miles