《笨辦法學(xué)Python》筆記30-----來(lái)自Percal 25號(hào)行星的哥頓人

來(lái)自Percal 25號(hào)行星的哥頓人

本節(jié)搭建了一個(gè)文字游戲证鸥,講述了科幻故事镜盯。一伙來(lái)自Percal 25號(hào)行星的哥頓人入侵飛船吗浩,昏迷中的你醒來(lái)發(fā)現(xiàn)全體船員都已陣亡,你與哥頓人斗智斗勇沖到武器庫(kù)中取出中子彈炸毀飛船并成功逃生来累。

CODE

#coding:utf-8

from sys import exit
from random import randint

def death():
    quips = ["你死了砚作。你在這有點(diǎn)糟糕","干得漂亮,你死了嘹锁,愚蠢的人類","失敗者","我有只小狗很擅長(zhǎng)這個(gè)"]
    print quips[randint(0,len(quips)-1)]
    exit(1)


def central_corridor():
    print "來(lái)自Percal25號(hào)行星的哥頓人入侵并破壞了你的飛船"
    print "你的全體船員已經(jīng)陣亡葫录,你是最后的幸存者"
    print "任務(wù)是從武器庫(kù)中拿到中子自毀炸彈"
    print "把它放在艦橋上,在你進(jìn)入一個(gè)兼耀。压昼。后炸毀飛船"
    print "逃生倉(cāng)"
    print "\n"
    print "你正奔跑在中央走廊到武器庫(kù)的路上"
    print "這時(shí)一個(gè)哥頓人跳出來(lái)求冷,紅皮膚瘤运,黑牙齒,邪惡的服裝"
    print "怨恨充斥著他的身體匠题,他正在擋在武器庫(kù)的門外拯坟,好像正準(zhǔn)備扔出炸彈炸死你"

    action = raw_input("> ")

    if action == "shoot!":

        print "快速拔出你的槍并朝哥頓人開火"
        print "他靈活的移動(dòng)讓你失去了目標(biāo),你的激光槍擊中了他的服裝韭山,這"
        print "讓他整個(gè)燃燒起來(lái)"    
        print "這讓他非常憤怒郁季,不停的揍你的臉,直到"
        print "你死了钱磅,然后他吃了你"
        return "death"
    elif action == "dodge!":
        print "像一個(gè)世界級(jí)拳擊手梦裂,你躲閃"
        print "哥頓人的槍射穿了你的頭,然后把你吃了"
        return "death"
    elif action == "tell a joke":
        print "哥頓人喜歡聽(tīng)笑話"
        print "你給他講了個(gè)非常搞笑的笑話盖淡,趁他不注意年柠,你爆了他的頭"
        print "穿過(guò)了武器庫(kù)的門"    
        return "laser_weapon_armory"
    else:
        print "別想了"
        return 'central_corridor'

def laser_weapon_armory():
    print "你打了個(gè)洞進(jìn)入武器庫(kù)"
    print "這里死靜死靜的,好像埋伏著好多哥頓人"
    print "你發(fā)現(xiàn)了中子炸彈褪迟,但是它被密碼鎖鎖著"
    print "你需要代碼才能打開"
    print "如果輸錯(cuò)10次冗恨,密碼鎖將永遠(yuǎn)鎖著"
    print "提示:代碼是3個(gè)數(shù)字"
    code = "%d%d%d" % (randint(1,9),randint(1,9),randint(1,9))
    guess = raw_input("[keypad]> ")

    guesses = 0

    while guess != code and guesses < 10:
        print "BZZZZEDDD!"
        guesses += 1
        guess = raw_input("[keypad]> ")

    if guess == code:
        print "鎖打開了答憔,飄蕩出白色的氣體"
        print "你帶著中子彈跑得越來(lái)越快"
        print "你必須把中子彈放在艦橋正確的位置"
        return "the_bridge"
    else:
        print "你最后一次聽(tīng)到了滴滴聲"
        print "鎖永久鎖定了"
        print "你決定靜靜的坐著,最終哥頓人炸掉了飛船掀抹,你掛了"
        return "death"

def the_bridge():
    print "你帶著中子彈突然出現(xiàn)在艦橋"
    print "驚動(dòng)了5個(gè)哥頓人"
    print "他們正試圖控制飛船虐拓,他們每個(gè)人都穿著一套丑陋的服裝"
    print "他們還沒(méi)有拿出武器,因?yàn)樗麄兛吹侥闶稚险弥粋€(gè)已經(jīng)啟動(dòng)的炸彈傲武,他們不想看著它爆炸"

    action = raw_input("> ")
    if action == "throw the bomb":
        print "恐慌中蓉驹,你把炸彈扔向了哥頓人"
        print "這時(shí)一個(gè)哥頓人從背后把你射殺,你倒地的時(shí)候看見(jiàn)一個(gè)哥頓人正在解除炸彈"


        return "death"

    elif action == "slowly place the bomb":
        print "你指著手中的炸彈揪利,哥頓人被嚇到了戒幔,他們舉起手開始驚慌,"
        print "你慢慢地移動(dòng)到門口土童,小心的把炸彈放到地上"
        print "你把門鎖住诗茎,哥頓人出不來(lái)。炸彈放置好了献汗,你跑向逃生倉(cāng)"
        return "escape_pod"

    else:
        print "DOES NOT COMPUTE"
        return "the_bridge"


def escape_pod():
    print "你沖向逃生倉(cāng)敢订,爭(zhēng)取整個(gè)船爆炸前,"
    print "似乎船上沒(méi)有其他哥頓人罢吃,你一路很順利"
    print "你來(lái)到逃生倉(cāng)楚午,這里有5個(gè)倉(cāng)位,你要選擇一個(gè)"
    print "你選擇哪一個(gè)尿招?"

    good_pod = randint(1, 5)
    guess = raw_input("[pod #]> ")


    if int(guess) != good_pod:
        print "你跳進(jìn) %s 號(hào)逃生倉(cāng)矾柜,按下了彈出按鈕" % guess
        print "逃生倉(cāng)發(fā)生了爆炸"
        print "你掛了"

        return "death"

    else:

        print "你跳進(jìn) %s 號(hào)逃生倉(cāng),按下了彈出按鈕" % guess
        print "你贏了"

        exit(0)

ROOMS = {
    'death':death,
    'central_corridor':central_corridor,
    'laser_weapon_armory':laser_weapon_armory,
    'the_bridge':the_bridge,
    'escape_pod':escape_pod
}



def runner(map, start):
    next = start
    while True:
        room = map[next]
        print "\n-----------"
        next = room()



runner(ROOMS, 'central_corridor')


這個(gè)游戲其實(shí)是一個(gè)小版本的有限狀態(tài)機(jī)FSM

wiki FSM

有限狀態(tài)機(jī)(英語(yǔ):finite-state machine就谜,縮寫:FSM)又稱有限狀態(tài)自動(dòng)機(jī)怪蔑,簡(jiǎn)稱狀態(tài)機(jī),是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動(dòng)作等行為的數(shù)學(xué)模型丧荐。

有限狀態(tài)機(jī)@維基百科

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缆瓣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子虹统,更是在濱河造成了極大的恐慌弓坞,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件车荔,死亡現(xiàn)場(chǎng)離奇詭異渡冻,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)忧便,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門族吻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事呼奢∫巳福” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵握础,是天一觀的道長(zhǎng)辐董。 經(jīng)常有香客問(wèn)我,道長(zhǎng)禀综,這世上最難降的妖魔是什么简烘? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮定枷,結(jié)果婚禮上孤澎,老公的妹妹穿的比我還像新娘。我一直安慰自己欠窒,他們只是感情好覆旭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岖妄,像睡著了一般型将。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荐虐,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天七兜,我揣著相機(jī)與錄音,去河邊找鬼福扬。 笑死腕铸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铛碑。 我是一名探鬼主播狠裹,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼亚茬!你這毒婦竟也來(lái)了酪耳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刹缝,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后颈将,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梢夯,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年晴圾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颂砸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖人乓,靈堂內(nèi)的尸體忽然破棺而出勤篮,到底是詐尸還是另有隱情,我是刑警寧澤色罚,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布碰缔,位于F島的核電站,受9級(jí)特大地震影響戳护,放射性物質(zhì)發(fā)生泄漏金抡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一腌且、第九天 我趴在偏房一處隱蔽的房頂上張望梗肝。 院中可真熱鬧,春花似錦铺董、人聲如沸巫击。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)喘鸟。三九已至,卻和暖如春驻右,著一層夾襖步出監(jiān)牢的瞬間什黑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工堪夭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愕把,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓森爽,卻偏偏與公主長(zhǎng)得像恨豁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子爬迟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 練習(xí) 30:有限狀態(tài)機(jī) 原文:Exercise 30: Finite State Machines 譯者:飛龍 協(xié)...
    布客飛龍閱讀 1,322評(píng)論 0 2
  • 齊總給手算了萬(wàn)盛大溝橘蜜,基礎(chǔ)資料我給的不準(zhǔn)確。還是要扎實(shí)付呕,避免僥幸心理啊计福。
    Uncle_Ma閱讀 293評(píng)論 0 0
  • 今天跟幾個(gè)朋友一起聚餐象颖,看到胖子帶著他傳說(shuō)中的女神閃亮登場(chǎng)。 眼前的這一對(duì)才子佳人簡(jiǎn)直亮瞎了我們所有人的眼姆钉,怪不得...
    陳以壹閱讀 518評(píng)論 18 16
  • 【幸福女孩 唐墨軒 一年級(jí) 堅(jiān)持原創(chuàng)分享第90天 2017.12.1 星期五】 今天中午我到媽媽教室说订,先讀...
    何亞珂閱讀 184評(píng)論 0 0
  • 主隊(duì)列是GCD自帶的一種特殊串行隊(duì)列抄瓦。放到主隊(duì)列的任務(wù)都會(huì)放到放到主線程執(zhí)行。 主隊(duì)列特點(diǎn):如果主隊(duì)列發(fā)現(xiàn)當(dāng)前主線...
    BEYOND黃閱讀 1,951評(píng)論 0 5