import random
import tkinter
import tkinter.messagebox
from tkinter import *
from tkinter import scrolledtext
class App(object):
def __init__(self, window):
window.title('人生重开模拟器')
window.geometry('600x600')
# label只需要展示,无需挂载事件
tkinter.Label(window, text='请设置初始属性(可用点数总数为20)', font=('Arial', 20)).pack()
tkinter.Label(window, text='颜值(1-10):', font=('宋体', 14)).place(x=100, y=60)
tkinter.Label(window, text='体制(1-10):', font=('宋体', 14)).place(x=100, y=90)
tkinter.Label(window, text='智力(1-10):', font=('宋体', 14)).place(x=100, y=120)
tkinter.Label(window, text='家境(1-10):', font=('宋体', 14)).place(x=100, y=150)
self.face = tkinter.Entry(window, font=('Arial', 14))
self.face.place(x=210, y=60)
self.strong = tkinter.Entry(window, font=('Arial', 14))
self.strong.place(x=210, y=90)
self.iq = tkinter.Entry(window, font=('Arial', 14))
self.iq.place(x=210, y=120)
self.home = tkinter.Entry(window, font=('Arial', 14))
self.home.place(x=210, y=150)
self.btn_start = tkinter.Button(window, text='重启人生', command=self.start_game)
self.btn_start.place(x=280, y=180)
self.show_message = scrolledtext.ScrolledText(window, width=65, height=20,
font=("隶书", 12))
self.show_message.place(x=50, y=220)
def start_game(self):
face = str(self.face.get()).strip()
strong = str(self.strong.get()).strip()
iq = str(self.iq.get()).strip()
home = str(self.home.get()).strip()
if face == '':
tkinter.messagebox.showinfo(title='提示', message='你不要颜值了?')
return
elif strong == '':
tkinter.messagebox.showinfo(title='提示', message='你不要体质了?')
return
elif iq == '':
tkinter.messagebox.showinfo(title='提示', message='你不要智力了?')
return
elif home == '':
tkinter.messagebox.showinfo(title='提示', message='你不要家境了?')
return
try:
face = int(face)
strong = int(strong)
iq = int(iq)
home = int(home)
except:
tkinter.messagebox.showinfo(title='提示', message='您输入了非数字')
return
if face < 1 or face > 10:
tkinter.messagebox.showinfo(title='提示', message='你有那么高的颜值?')
return
if strong < 1 or strong > 10:
tkinter.messagebox.showinfo(title='提示', message='你体质能有那么好?')
return
if iq < 1 or iq > 10:
tkinter.messagebox.showinfo(title='提示', message='你智力能有那么高?')
return
if home < 1 or home > 10:
tkinter.messagebox.showinfo(title='提示', message='你家境能有那么好?')
return
if face + strong + iq + home > 20:
tkinter.messagebox.showinfo(title='提示', message='还想上天那,总共就20点属性!')
return
self.show_message.insert(tkinter.END, f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}\n')
# 设置角色性别
point = random.randint(1, 6)
if point % 2 == 1:
gender = 'boy'
self.show_message.insert(tkinter.END, '你是个男孩\n')
else:
gender = 'girl'
self.show_message.insert(tkinter.END, '你是个女孩\n')
# 设置角色出生点
point = random.randint(1, 3)
if home == 10:
# 第一档
self.show_message.insert(tkinter.END, '你出生在帝都, 你的父母是高官政要\n')
home += 1
iq += 1
face += 1
elif 7 <= home <= 9:
# 第二档
if point == 1:
self.show_message.insert(tkinter.END, '你出生在大城市,父母是公务员\n')
face += 2
elif point == 2:
self.show_message.insert(tkinter.END, '你出生在大城市,父母是企业高管\n')
home += 2
else:
self.show_message.insert(tkinter.END, '你出生在大城市,父母是大学教授\n')
iq += 2
elif 4 <= home <= 6:
# 第三档
if point == 1:
self.show_message.insert(tkinter.END, '你出生在三线城市,你的父母是医生\n')
strong += 1
elif point == 2:
self.show_message.insert(tkinter.END, '你出生在镇上,你的父母是老师\n')
iq += 1
else:
self.show_message.insert(tkinter.END, '你出生在镇上,你的父母是个体户\n')
home += 1
else:
# 第四档
if point == 1:
self.show_message.insert(tkinter.END, '你出生在农村,父母是辛苦劳作的农民\n')
strong += 15
face -= 2
elif point == 2:
self.show_message.insert(tkinter.END, '你出生在穷乡僻壤,你的父母是无业游民\n')
home -= 1
else:
self.show_message.insert(tkinter.END, '你出生在镇上,你的父母感情不和\n')
strong -= 1
# print(f'颜值: {face}, 体制: {strong}, 智力: {iq}, 家境: {home}')
# 幼年阶段
for age in range(1, 11):
info = f'你今年{age}岁, '
point = random.randint(1, 3)
# 性别触发的事件
if gender == 'girl' and home <= 3 and point == 1:
info += '你的家里人重男轻女思想非常严重, 你被遗弃了!\n游戏结束!\n'
self.show_message.insert(tkinter.END, info)
sys.exit(0)
# 体制触发的事件
elif strong < 6 and point < 3:
info += '你生了一场病, '
if home >= 5:
info += '在父母的细心照料下, 你康复了\n'
self.show_message.insert(tkinter.END, info)
strong += 1
home -= 1
else:
info += '你的父母没精力管你, 你的身体状况更遭了\n'
self.show_message.insert(tkinter.END, info)
strong -= 1
# 颜值触发的事件
elif face <= 4 and age >= 7:
info += '你长得太丑了, 别的小朋友不喜欢你, '
if iq > 5:
info += '你决定用学习填充自己!\n'
self.show_message.insert(tkinter.END, info)
iq += 1
else:
if gender == 'boy':
info += '你和别的小朋友经常打架!\n'
self.show_message.insert(tkinter.END, info)
strong += 1
iq -= 1
else:
info += '你经常被别的小朋友欺负\n'
self.show_message.insert(tkinter.END, info)
strong -= 1
# 智力触发的事件
elif iq < 5:
info += '你看起来傻傻的, '
if home >= 7 and age >= 6:
info += '你的父母把你送到更好的学校学习\n'
self.show_message.insert(tkinter.END, info)
iq += 1
elif 4 <= home <= 6:
if gender == 'boy':
info += '你的父母鼓励你多运动, 争取成为运动员\n'
self.show_message.insert(tkinter.END, info)
strong += 1
else:
info += '你的父母鼓励你多打扮自己\n'
self.show_message.insert(tkinter.END, info)
face += 1
else:
info += '你的父母为此经常吵架\n'
self.show_message.insert(tkinter.END, info)
if point == 1:
strong -= 1
elif point == 2:
iq -= 1
else:
pass
# 健康成长事件
else:
info += '你健康成长, '
if point == 1:
info += '你看起来更结实了\n'
strong += 1
elif point == 2:
info += '你看起来更好看了\n'
face += 1
else:
info += '这一年没有特别的事情发生\n'
self.show_message.insert(tkinter.END, info)
self.show_message.insert(tkinter.END, '---------------------------------------------\n')
if __name__ == '__main__':
window = tkinter.Tk()
app = App(window)
window.mainloop()
然后使用pyinstaller打包成exe即可