2017-01-03 23 views
-1

我目前正在寫一個python圖形用戶界面,最終將產生一個隨機村在桌面RPG使用(主要是龍與地下城)使用函數來調用while循環類

我有下面的代碼將根據用戶需要的城鎮多大來生成許多小酒館,到目前爲止它工作正常。我希望GUI最終會創建商店,寺廟和其他建築物。

class NPC: 
    def __init__(self, first, last): 
     self.first = first 
     self.last = last 
     self.name = first + ' ' + last 

class Tavern: 
    def __init__(self, name1, name2): 
     self.name1 = name1 
     self.name2 = name2 
     self.name = 'The ' + name1 + ' ' + name2 

while num_tav != 0: 
    morf = random.randint(1, 2) 
    if morf == 1: 
     sex = 'male' 
    else: 
     sex = 'female' 
    first = open(set_race + '_' + sex + '.txt') 
    name1 = first.readlines() 
    first = random.choice(name1).strip() 

    last = open(set_race + '_surnames.txt') 
    name2 = last.readlines() 
    last = random.choice(name2).strip() 

    npcname = NPC(first, last) 

    tavern1 = open('tavnames1.txt') 
    name1 = tavern1.readlines() 
    name1 = random.choice(name1).strip() 

    tavern2 = open('tavnames2.txt') 
    name2 = tavern2.readlines() 
    name2 = random.choice(name2).strip() 
    tavern = Tavern(name1, name2) 
    print('Taverns/Inns: ' + tavern.name + "The inkeeper is a tall " + set_race + ' ' + sex + " named " + npcname.name + '\n') 
    num_tav = num_tav - 1 

    w.insert(END, not_b + 'Taverns/Inns: ' + tavern.name + "The inkeeper is a tall " + set_race + ' ' + sex + " named " + npcname.name + '\n' + 'Population is approx. ' + str(population) + ' people\n') 

全國人大類基本上genreates一個隨機的名字,我想在其他領域(商店,市場,鐵匠等),使用這個,不只是產生一個店主的名字。

我的問題是;

是否有可能創建使用腳本

first = open(set_race + '_' + sex + '.txt') 
name1 = first.readlines() 
first = random.choice(name1).strip() 

last = open(set_race + '_surnames.txt') 
name2 = last.readlines() 
last = random.choice(name2).strip() 

npcname = NPC(first, last) 

因爲這將調用NPC類,然後纔有其他while循環調用它的函數功能?而不是在每個循環中重複使用相同的代碼來生成其他建築物?

我假設如此,但我不知道它會被稱爲所以任何幫助表示讚賞。

+0

是的,對不起,在複製和粘貼錯誤的進入 「代碼」 的格式。 – user1630350

+0

已修復,對不起。 – user1630350

回答

0

定義一個函數while循環與也許這獲取它應該產生(小酒館,商店,...),然後把它放在另一個Python文件並將其導入實體的類型,一個額外的參數。作爲一個模塊。

def mynewfunction(set_race,sex): 
    first = open(set_race + '_' + sex + '.txt') 
    name1 = first.readlines() 
    first = random.choice(name1).strip() 

    last = open(set_race + '_surnames.txt') 
    name2 = last.readlines() 
    last = random.choice(name2).strip() 


    return NPC(first, last) 

然後:

while (x,y,z): 
    npcname = mynewfunction(set_race): 
+0

這是比回答更多的評論。你能否解釋並解釋答案? – MSeifert

+0

是的,我沒有評論權限:) – Shobeir