我正在编写一个python gui,最终将生成一个用于桌面RPG(主要是龙与地下城)的随机村庄
我有下面的代码,根据用户想要的城镇大小生成一些小酒馆,到目前为止一切正常。我希望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')
NPC课程基本上创造了一个随机名称,我想在其他领域(商店,市场,铁匠等)使用它,而不仅仅是生成旅店老板的名字。
我的问题是;
是否可以创建一个将使用脚本的函数
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 :(得分:0)
在函数中定义while循环,可能有一个额外的参数,它获取它应该生成的实体类型(Tavern,shop,...),然后将它放在另一个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):