2014-01-12 16 views
1

我想寫一個小文本RPG類遊戲。我想要做的是讓它有多個小冒險,每個冒險都包含在他們自己的源文件中。我希望能夠隨機選擇一個源文件,創建其包含的類的實例,然後調用一個函數(我們將其稱爲Adventure#start)。我無法想到一種方法來實現這一點,而不使用瘋狂的數組/散列和大案例樹,所有這些都需要每次冒險添加更新...紅寶石:隨機選擇的文件/類

我覺得有什麼明顯的我錯過了,但是有沒有一種切實可行的方法來解決這個問題?主要的一點是,我不想爲了添加新的冒險而更新其他代碼,而只是簡單地爲冒險添加源代碼,將文件放入適當的文件夾並完成它。

+0

你基本上會用(自動)加載所有文件並讓類從一個抽象基類繼承,並實現'self.inherited',它可以讓你列出所有的孩子然後隨機挑選一個。我想不出有太多這​​些文件可供Ruby處理。 – Bartosz

回答

0

您可以通過以下步驟來做到:

  1. 獲得含有冒險文件的文件夾中的所有文件
  2. 選擇一個隨機文件
  3. 要求所選擇的文件
  4. 解析的內容類名
  5. 使用(Kernel.const_get class_name)創建冒險實例。 ll#開始新創建的實例
+0

對不起,這裏有一個新手 - 我遵循除了第4號 - 我不知道如何,也許我只是完全錯過了一些東西 - 你能指出我在一個方向找到如何解析類名? – jeremiah

+0

,或者像讀取整個文件一樣簡單,尋找以'class' 開頭的行,現在我認爲它顯得非常流血,因爲我可以輕鬆地將它留在第一行代碼中,並在第一行之後保存文檔。大聲笑。 – jeremiah

+0

您不需要將類語句放在代碼的第一行,並將文檔放在後面。你只需要找到一個以'class'開頭的行,把它拿出來解析類名。請記住,有許多方法可以在ruby中定義一個類,這個技巧只有在你使用'class Name'來定義一個類時纔有效。 – vidaica