这两天闲来无事,用python的tkinter库函数制作了一个剧情走向小游戏。
中二的初始化界面:
代码思路如下:首先创建一个基本root窗口basedesk
,其他窗口均为root窗口的子窗口。
class basedesk():
def __init__(self, master):
self.root = master
self.root.config()
self.root.title('大冒险')
self.root.geometry('750x150')
Init(self.root)
在basedesk
中建立Init
窗口为初始化界面:
class Init():
def __init__(self, master):
self.master = master
self.master.config()
self.face = tk.Frame(self.master,)
self.face.pack()
self.texts = get_story()
global key
key = False
label = tk.Label(self.face, text="准备好开始一场惊险刺激的冒险了吗?", font=font).pack()
b = tk.Button(self.face, text='开始冒险', command=self.begin)
b.pack()
def begin(self,):
self.face.destroy()
BaseChoices(self.master, self.texts)
显示界面如下:
然后从Init
界面进入基本选择界面BaseChoices
,其中设置全局变量key
为触发键,只有前文剧情满足条件才能触发关键选项。
class BaseChoices():
def __init__(self, master, texts):
global key
self.master = master
self.master.config()
self.face = tk.Frame(self.master,)
self.face.pack()
self.texts = texts
print(self.texts['text'])
tk.Label(self.face, text=self.texts['text'], font=font).pack()
if self.texts['key'] != 'b1_key' or key:
b1 = tk.Button(self.face, text=self.texts['b1text'], command=self.b1)
b1.pack()
if self.texts['key'] != 'b2_key' or key:
b2 = tk.Button(self.face, text=self.texts['b2text'], command=self.b2)
b2.pack()
def b1(self):
self.next('b1')
def b2(self):
self.next('b2')
def next(self, s):
self.face.destroy()
if self.texts['key'] == '{}_lose'.format(s) or self.texts['key'] == 'lose':
Lose(self.master, texts=self.texts[s])
elif self.texts['key'] == '{}_key'.format(s):
Win(self.master, texts=self.texts[s])
else:
if self.texts['key'] == '{}_getkey'.format(s):
global key
key = True
BaseChoices(self.master, texts=self.texts[s])
正文中的texts['key']
用来判断接下来是进入基本选择界面、还是结束界面(通关或失败)。
class Lose():
def __init__(self, master, texts):
self.master = master
self.master.config()
self.face = tk.Frame(self.master,)
self.face.pack()
self.texts = texts
print(self.texts['text'])
tk.Label(self.face, text=self.texts['text'], font=font).pack()
tk.Label(self.face, text="游戏失败,你输了", fg='red', font=font).pack()
b = tk.Button(self.face, text='重新开始', command=self.begin)
b.pack()
def begin(self,):
self.face.destroy()
Init(self.master)
class Win():
def __init__(self, master, texts):
self.master = master
self.master.config()
self.face = tk.Frame(self.master,)
self.face.pack()
self.texts = texts
print(self.texts['text'])
tk.Label(self.face, text=self.texts['text'], font=font).pack()
tk.Label(self.face, text="恭喜你通关!", fg='green', font=font).pack()
b = tk.Button(self.face, text='再玩一次', command=self.begin)
b.pack()
def begin(self,):
self.face.destroy()
Init(self.master)