2017-01-03 83 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