由于在florr里疯狂炸卡(炸了600+m),本蒟蒻气得不行,又只会一点python的tkinter,便想在python里解恨,也就用了亿点点时间做了个极低配版,不美观,能用就行:
from tkinter import *
from tkinter import messagebox
import random
petal_level = ["Common", "Unusual", "Rare", "Epic","Legendary", "Mythic", "Ultra", "Super"]
petal_counts = [0] * len(petal_level)
probability_thresholds = [6400, 3200, 1600, 800, 400, 200, 100]
def update_labels():
for i in range(len(petal_level)):
label_list[i].config(text="{}: {}".format(petal_level[i], petal_counts[i]))
def start_synthesis():
try:
grade = grade_var.get()
count = int(count_var.get())
if grade in petal_level:
index = petal_level.index(grade)
petal_counts[index] += count
update_labels()
else:
messagebox.showerror("错误", "拼写错误")
except ValueError:
messagebox.showerror("错误", "数字错误")
def synthesize_grade(index):
if petal_counts[index] < 5:
messagebox.showwarning("注意", "花瓣不够")
return
while petal_counts[index] >= 5:
x = random.randint(1, 10000)
if 0 < x < probability_thresholds[index]:
petal_counts[index + 1] += 1
petal_counts[index] -= 5
else:
petal_counts[index] -= random.randint(1, 4)
update_labels()
def Return_to_zero():
global petal_counts
petal_counts = [0] * len(petal_level)
update_labels()
root = Tk()
root.title("florr.io 合卡模拟")
root.geometry("1200x250")
grade_var = StringVar(root)
count_var = StringVar(root)
input_frame = Frame(root)
input_frame.grid(row=0, column=0, padx=20, pady=20)
Label(input_frame, text="等级:").grid(row=0, column=0, sticky="e")
Entry(input_frame, textvariable=grade_var).grid(row=0, column=1, sticky="ew")
Label(input_frame, text="数量:").grid(row=0, column=2, sticky="e")
Entry(input_frame, textvariable=count_var).grid(row=0, column=3, sticky="ew")
Button(input_frame, text="OK", command=start_synthesis).grid(row=0, column=4)
label_frame = Frame(root)
label_frame.grid(row=1, column=0, padx=20, pady=20, columnspan=5)
label_list = []
for i, grade in enumerate(petal_level):
label = Label(label_frame, text=f"{grade}: {petal_counts[i]}")
label.grid(row=0, column=i, padx=20, pady=2, sticky="ew")
label_list.append(label)
button_frame = Frame(root)
button_frame.grid(row=2, column=0, padx=20, pady=20, columnspan=5)
buttons = []
for i in range(len(petal_level) - 1):
button = Button(button_frame, text=f"{petal_level[i]} -> {petal_level[i+1]}", command=lambda i=i: synthesize_grade(i))
button.grid(row=0, column=i, padx=20, pady=2, sticky="ew")
buttons.append(button)
rbutton = Button(root, text="重置", command=Return_to_zero)
rbutton.grid(row=2, column=5, padx=20, pady=2)
root.mainloop()
什么?你说大数字会TLE?管他的,反正你也攒不了那么多(bushi),或者有大佬帮忙优化下也行,谢谢(可转载,二创)