181007:把 Learn Python3 The Hard Way 一书的第43道练习题改成中文版。此外,刻意调低了难度。(话说中文书名翻成《用心学python》不可以么?)
这个游戏勉强算个“有限状态机”,核心在后面的Engine和Map两个类。后者把场景名字(字符串)转化为class名,前者在此基础上调用各class里的函数,从而实现“进入场景”的效果。
from sys import exit
from random import randint
from textwrap import dedent
class Scene(object):
def enter(self):
print("这是第一个class")
print("Subclass it and implement enter().")
exit(1)
class Death(Scene):
quips = [
"你死啦",
"你妈会为你骄傲的",
"唉,菜鸡...",
"我的狗狗玩得更好",
"这让我想起你爸的笑话",
]
def enter(self):
print(Death.quips[randint(0, len(self.quips)-1)])
exit(1)
class CentralCorridor(Scene):
def enter(self):
print(dedent("""
你的宇宙飞船被外星人入侵了。聪明的你立马想出了对策——先取出炸弹,定好时,自己再乘救生船逃出去。\n
正想着,你便从中央走廊出发,准备去武器库。可是,一个黑不溜秋的外星人,被门卡住了。\n
你会怎么办呢?\n\t
1. 把它推走;\n\t
2. 把它拉出来;\n\t
3. 把它射死;\n\t
4. 讲一个笑话。
"""))
action = input("[请输入数字]> ")
if action