人生模拟器

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即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值