炸裂情感史

随手和同学写的小东西

可以生成一些炸裂的故事

欢迎大家改编

import tkinter as tk
from tkinter import filedialog, messagebox
from random import *

# 窗口类
class Window(tk.Tk):
    # 变量
    width, height = 400, 410
    label1, entry, label2, text, button, button_again = None, None, None, None, None, None
    main, names, married = None, None, None
    # 初始化
    def __init__(self):
        super().__init__()
        self.title("炸裂情感史")
        # self.geometry("%sx%s" % (self.width, self.height))
        self.input()

    # 输入数据
    def input(self):
        # 主角
        self.label1 = tk.Label(self, text="请输入主角名:")
        self.label1.pack(anchor="nw")
        self.entry = tk.Entry(self)
        self.entry.pack(fill="x")
        # 配角
        self.label2 = tk.Label(self, text="请输入配角名(一行一个):")
        self.label2.pack(anchor="nw")
        self.text = tk.Text(self)
        self.text.pack(fill="both")
        # 确定
        self.button = tk.Button(self, text="确定", command=self.get)
        self.button.pack(fill="both")

    # 读取数据
    def get(self):
        # 读取
        self.main = self.entry.get()
        self.names = self.text.get("1.0", tk.END)
        # 配角名称列表
        self.names = self.names.split('\n')
        if self.names[len(self.names)-1] == "":
            self.names.pop()
        self.clear()
        self.output()

    # 输出生成结果
    def output(self):
        # 文本
        self.text = tk.Text(self, state="disable")
        self.text.pack(fill="both")
        # 保存按钮
        self.button.config(text="保存", command=self.save)
        self.button.pack(fill="x")
        # 重来按钮
        self.button_again = tk.Button(self, text="再来一次", command=self.again)
        self.button_again.pack(fill="x")
        # 生成算法部分
        self.result()

    # 生成算法
    def result(self):
        self.write(self.main+"从小喜欢"+choice(self.names))
        self.write(self.main+"和"+choice(self.names)+"是青梅竹马")
        self.write(self.main+"的白月光是"+choice(self.names))
        self.write(self.main+"的初恋是"+choice(self.names))
        self.names.append(self.main)
        while len(self.names) > 1:
            self.a, self.b = None, None
            while (self.a == self.b):
                self.a = randint(0, len(self.names)-1)
                self.b = randint(0, len(self.names)-1)
            self.sentence(self.names[self.a], self.names[self.b])
        self.write(self.names[0]+"是最后赢家")

    # 单次剧情生成
    def sentence(self, x, y):
        self.c = randint(0, 7)
        if self.c == 0:
            self.write(x+"和"+y+"结婚了")
        elif self.c == 1:
            self.write(x+"爱上了"+y)
        elif self.c == 2:
            self.write(x+"绿了"+y)
        elif self.c == 3:
            self.write(x+"失手杀了"+y)
            self.names.remove(y)
        elif self.c == 4:
            self.write(x+"因爱生恨,杀了"+y)
            self.names.remove(y)
        elif self.c == 5:
            self.write(x+"爱上了错误的人,自杀了")
            self.names.remove(x)
        elif self.c == 6:
            self.write(x+"抢婚了"+y+"的婚礼")
        elif self.c == 7:
            self.write(x+"发现"+y+"绿了他,于是和他离婚了")

    # 保存为txt
    def save(self):
        # 文件路径
        self.path = tk.filedialog.asksaveasfilename(title='保存文件', filetypes=[("文本文件", "*.txt")])
        self.file_text = self.text.get("1.0", tk.END)
        # 写入内容
        if self.path != "":
            with open(file=self.path, mode="a+", encoding="utf-8") as self.file:
                self.file.write(self.file_text)
            messagebox.showinfo(title="提示", message="保存成功!")

    # 重来
    def again(self):
        self.button_again.pack_forget()
        self.clear()
        self.input()

    # 清空
    def clear(self):
        self.label1.pack_forget()
        self.label2.pack_forget()
        self.text.pack_forget()
        self.button.pack_forget()
        self.entry.pack_forget()

    # 写入
    def write(self, text):
        self.text.config(state="normal")
        self.text.insert("end", text+"\n")
        self.text.config(state="disable")

if __name__ == "__main__":
    win = Window()
    win.mainloop()

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值