这个程序的核心内容就是def语句,if语句和while语句循环的重复使用。
参考: 习题—35
# coding: utf-8
def dead(why): # 定义dead函数,exit()可用于退出循环
print why, ‘YOU DEAD!‘ # exit(0) 表示正常退出,exit(1)表示发生了错误
exit(0)
def start():
print u">>>尊敬的客官,你的所在是红亭,曾经是当地第五座、也是唯一保存下来的\n\
城门。始建于明天启元年。因通抵学宫,取增贤进士之意,故称进贤门。"
print ">>>Choose: Turn east or western?"
next = raw_input("Turn: ")
if ‘east‘ in next:
tomb_of_goddness() # 跳到另一个地点
elif ‘west‘ in next:
tomb_of_general()
else:
dead(‘‘)
def tomb_of_goddness():
print "-" * 80 # 重复打印"-"
print u"山神: 来者何人,胆敢擅闯月容夫人圣地。"
print u"山神: 还不速速退下。以免惊扰夫人安宁。"
print ">>>Choose: ‘bow‘, ‘kneel‘, ‘flee‘, ‘taunt‘ or others?"
MountainGod = True
while True: # 创建一个无限循环,直到dead() 或 exit(0)为止
next = raw_input(">> ")
print "-" * 80
if ‘bow‘ in next or ‘kneel‘ in next and MountainGod: # 由于上面的MountainGod是True,所以该if语句可以执行
print u"我: 请问阁下可是,山神大人?后生,有礼了。在下初到宝地,\n\
未曾了解本地习俗,还望山神周知。"
print u"山神: 月容夫人托梦给我,说今日会有一位斯文的书生来拜谒。\n\
想必就是你啦!"
MountainGod = False
print "Choose: ‘kneel‘, ‘flee‘, ‘taunt‘, or others."
# MountainGod已变为False,所以not MountainGod
elif ‘kneel‘ in next and not MountainGod: 就是True,这样就确保了先执行的是上面的if语句。
print u"我: 后生谨奉上清香三支,祝告夫人圣灵。言不尽意,勿怪,勿怪!"
print u"我: 不瞒山神大人,后生也是误入山林,方知夫人之墓所在,初来乍到,\n\
实对夫人之事不甚了解。"
print u"山神: 月容夫人,是一位传奇的女子。她的事迹,在这片土地上广为\n\
流传。我送你到一个地方,你就知道了。\n"
ShuangXiZui()
elif ‘flee‘ in next:
print u"我: 好一个凶巴巴的老头。三十六计,走为上。"
start()
elif ‘taunt‘ in next:
print u"我: 好你个老头,说话这么粗鲁,吓唬谁啊?"
monster_tower()
else:
dead(‘‘)
def ShuangXiZui():
print "-" * 80
print u"我: 咦,我怎地站在小舟上,眼前是双江汇合,气势磅礴啊。更有皓月当空,夜色如水。"
print u"....远处的海浪渐渐袭来,伴随阵阵渔歌...."
print u"渔歌: 不远千里随夫来,哪知有去却无来。世上岂有天理诉,宁叫好人不长在?\n\
唉,哀哉月容兮,不得与归?皓皓榕江兮,一分为二。双溪明月兮,难分清浊!"
print "Choose: ‘boating‘, ‘praying‘ or others."
next = raw_input(">> ")
if ‘boat‘ in next:
tomb_of_general()
elif ‘pray‘ in next:
temple()
else:
dead(‘‘)
def temple():
print "-" * 80
print u"有一寺庙兮,曾为夫人建。夫人名讳兮,曰扬州才女。悠悠侣云兮,依山傍水。"
print u"钟声绕梁兮,情与铁坚。不绝于耳兮,缘从响续。"
print u"我: 看来这是专为月容夫人建的寺庙啊,还有冯太爷写的钟铭。"
exit(0)
def monster_tower():
print "-" * 80
print u"....宝塔玲珑,暗含乾坤,风起云涌,妖魔为患。...."
print u"我: 妈呀,不该乱说话啊,镇魔塔,全都是妖怪啊。"
print "Choose: ‘flee‘, ‘pray‘ or others."
next = raw_input(">> ")
if ‘flee‘ and ‘pray‘in next:
start()
elif ‘flee‘ or ‘pray‘ in next:
dead(‘‘)
else:
moster_tower()
def tomb_of_general():
print "-" * 80
print u"....好一派鸟语花香,秀色可餐的风景,西湖泛舟,亭台楼阁!...."
print u"....一行来到,宋抗元将军马发之墓...."
print "Choose: ‘clean‘, ‘kneel‘, go‘ or others."
general_moved = True
while True:
next = raw_input(">> ")
print "-" * 80
if ‘clean‘ in next or ‘kneel‘ in next and general_moved:
print u"....只见芳草丛生,墓碑荒废...."
print u"我: 看来潮州多人杰啊,前有月容夫人,后有马将军。"
print u"我: 为民族英雄扫墓,是吾辈之幸啊!"
general_moved = False
print "Choose: ‘kneel‘, ‘go‘ or others."
elif ‘kneel‘ in next and not general_moved:
print u"路人: 小伙子,看来你也是个忠义之人,昔有诗人丘逢甲曾为将军赋诗:"
print u"凭栏望,韩夫子祠,如此江山,争让前贤留姓氏。"
print u"把酒吊,马将军墓,奈何天地,竟将残局付英雄。"
print u"我: 想必...老人家可否为晚辈讲一讲马将军的英勇事迹?"
print "....Hit Enter to continue or Ctrl+C to stop!..."
raw_input(">> ")
print u"马发,潮州海阳人(今潮安县),宋末潮州摧锋营副将,临危之际挺身而出,以孤城坚"
print u"拒元兵。终因叛徒出卖,潮州城破,复退守金山子城,浴血战至最后一人,举家殉国。"
print u"潮州是宋朝最后一座沦陷的州城,城破之后元兵屠城,是潮州历史最惨重的记忆之一。"
exit(0)
elif ‘go‘ in next:
start()
else:
dead(‘‘)
start()