天天看點

《易學Python》——6.3 玩家輸入

本節書摘來自異步社群《易學python》一書中的第6章,第6.3節,作者[澳]anthony briggs,王威,袁國忠 譯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

大多數冒險遊戲的玩法都是這樣的:玩家輸入指令,如往北走、拾劍、殺怪物和檢寶,遊戲再顯示操作結果,以及有關玩家所處房間和房間中物件的描述。這裡采取同樣的方法,并利用一些對象的屬性簡化程式的擴充工作。别忘了,您還需讓代碼易于測試,是以将把處理使用者輸入的代碼放在獨立的函數中。

您将首先尋找一種不錯的方式,在類結構中編寫将名詞轉換為動詞的接口。通常情況下,對象為名詞,而操作對象的方法為動詞,是以指令get sword應在目前房間找到sword對象,并調用其get接口。這樣設計意味着不用編寫一個什麼都會做的大型player類,而可編寫大量更容易了解、修改和擴充的小型類。

《易學Python》——6.3 玩家輸入

程式清單6.3是該程式的核心代碼:player類。它負責讀取玩家的輸入,并尋找合适的對象來解讀指令。您應将這些代碼儲存在檔案player.py中。

程式清單6.3 player類

《易學Python》——6.3 玩家輸入
《易學Python》——6.3 玩家輸入
《易學Python》——6.3 玩家輸入

編寫player類後,您需要從玩家那裡讀取輸入,并執行相應的指令。程式清單6.4是一個示例架構,它建立一個簡單的洞穴,讓玩家置身中,然後開始循環:不斷地讀取輸入并執行相應的指令,直到玩家結束遊戲。以後您可能将這些代碼封裝在game類中,但由于python非常靈活,您可将其保留為函數,并編寫和測試其他類。

程式清單6.4 使用player類

《易學Python》——6.3 玩家輸入
《易學Python》——6.3 玩家輸入

如果您現在運作這個冒險遊戲,應該能夠指定指令look和quit。這個程式很簡單,下一節将介紹如何擴充接口。