PPTTER

Loading...

PPTTER

【chatGPT自然语言编程】0编程基础制作舒尔特方格

1年前 243 阅读量

【chatGPT自然语言编程】0编程基础制作舒尔特方格


大家好,欢迎来到PPTTER!

在本期视频中,我将教会大家如何用自然语言编程来实现舒尔特方格。这是一个非常有趣的课程,你不需要有任何编程技能或基础,就可以快速制作出你想要的软件。

本系列视频的第一节课将向你展示如何通过自然语言来编程,也就是说如何通过说话来编程。我们先观看了一个视频,其中介绍了一种简单而有效的方法,可以锻炼记忆力和专注力。

然而,有观众表示这个软件可能太简单了,因为从1数到25是一件非常简单的事情,而且这样的训练过程可能会变得枯燥无聊。于是,我提出了一个解决方案,即将这种方法快速转化为一个软件,可以快速锻炼从1到25、1到36,甚至是1到无穷大的能力,每天不停地提升记忆力和专注力。

对于不会编程的观众来说,这是否成为了一个难题呢?其实没有关系,只要你会说话,就能够将这个软件制作出来。现在我将带领大家一步一步地完成这个软件。我们将用自然语言告诉电脑,然后由电脑编写出一个Python程序来实现刚才视频中介绍的方法,用于锻炼记忆力和专注力的软件。

首先,我们导入所需的库,例如Tkinter库用于创建图形用户界面(GUI),以及random库用于生成随机数字。

import tkinter as tk
import random

接下来,我们定义一个函数来创建舒尔特方格。方格的大小可以根据需求进行调整,这里我们以5x5的方格为例。

def create_grid():
    grid = []
    numbers = list(range(1, 26))
    random.shuffle(numbers)
    index = 0
    for i in range(5):
        row = []
        for j in range(5):
            label = tk.Label(root, text=numbers[index], width=6, height=3, relief="solid")
            label.grid(row=i, column=j)
            row.append(label)
            index += 1
        grid.append(row)
    return grid

在这段代码中,我们首先创建了一个空的方格列表grid,然后使用random.shuffle()函数对数字列表进行随机排序。接着,我们使用嵌套循环创建了一个5x5的方格,并将随机排序后的数字填充进方格中。最后,将每个方格的标签对象添加到grid列表中,并返回这个方格。

ui

现在,我们需要创建一个主窗口,并调用create_grid()函数来显示舒尔特方格。

最后是本期视频的完整代码,你可以直接使用

import tkinter as tk
import random
from tkinter import ttk
import base64
import webbrowser

# 添加新的全局变量
grid_size = 4
s = '6IiS5bCU54m55pa55qC86K6t57uD44CQcHB0dGVyLmNvbeWHuuWTgS1BSeWwseaYr+eUn+S6p+WKm++8geOAkQ=='
title = base64.b64decode(s).decode('utf-8')

def add_time_to_table():
    global elapsed_time, grid_size
    time_text = f"{elapsed_time // 60000:02d}:{(elapsed_time // 1000) % 60:02d}.{elapsed_time % 1000 // 10:02d}"
    required_time = f"{grid_size * grid_size // 60:02d}:{grid_size * grid_size % 60:02d}"
    results_table.insert("", "end", values=(f"{grid_size}x{grid_size}", time_text, required_time))
    update_time_color()

def generate_numbers():
    numbers = list(range(1, grid_size * grid_size + 1))
    random.shuffle(numbers)
    return numbers

def on_cell_click(event, number, cell_number):
    global current_number, timer_started, timer_id, grid_size
    if not timer_started and number == 1:
        timer_started = True
        timer_id = root.after(10, update_timer)
    if number == current_number:
        canvas.itemconfig(cell_number, fill="red")
        current_number += 1
        if current_number > grid_size * grid_size:
            root.after_cancel(timer_id)
            next_level_button.pack()
            add_time_to_table()

def create_grid(canvas):
    global grid_size
    canvas.delete("all")  # 清空画布
    numbers = list(range(1, grid_size * grid_size + 1))
    random.shuffle(numbers)
    index = 0
    cell_size = 768 // grid_size  # 根据 grid_size 调整单元格大小
    for i in range(grid_size):
        for j in range(grid_size):
            cell = canvas.create_rectangle(j * cell_size, i * cell_size, (j+1) * cell_size, (i+1) * cell_size, fill="white", outline="black", width=5)
            number = canvas.create_text(j * cell_size + cell_size // 2, i * cell_size + cell_size // 2, text=str(numbers[index]), font=("Arial", 48))
            canvas.tag_bind(cell, '<Button-1>', lambda event, n=numbers[index], c=number: on_cell_click(event, n, c))
            canvas.tag_bind(number, '<Button-1>', lambda event, n=numbers[index], c=number: on_cell_click(event, n, c))
            index += 1

def update_timer():
    global elapsed_time, timer_id
    elapsed_time += 10
    timer_text = f"{elapsed_time // 60000:02d}:{(elapsed_time // 1000) % 60:02d}.{elapsed_time % 1000 // 10:02d}"
    timer_label.config(text=timer_text)
    timer_id = root.after(10, update_timer)

def restart_game():
    global current_number, timer_started, elapsed_time, timer_id, grid_size
    current_number = 1
    timer_started = False
    elapsed_time = 0
    timer_label.config(text="00:00.00")
    root.after_cancel(timer_id)
    create_grid(canvas)

def update_time_color():
    for row in results_table.get_children():
        row_values = results_table.item(row, "values")
        actual_time = row_values[1]
        required_time = row_values[2]
        if actual_time <= required_time:
            results_table.item(row, tags="green")
        else:
            results_table.item(row, tags="red")

    results_table.tag_configure("green", foreground="green")
    results_table.tag_configure("red", foreground="red")

# 为“下一关”按钮添加一个事件处理函数,使其在点击时增加 grid_size 的值并重新生成方格
def next_level():
    global grid_size
    grid_size += 1
    restart_game()
    next_level_button.pack_forget()

def reset_game():
    global grid_size
    grid_size = 4
    restart_game()

def open_baidu(event):
    webbrowser.open("https://www.pptter.com")

root = tk.Tk()
root.title(title)

style = ttk.Style()
style.configure("HyperlinkLabel.TLabel", foreground="red", font="Arial 10 underline")

frame = tk.Frame(root)
frame.pack()

canvas = tk.Canvas(frame, width=768, height=768, bg="white")
canvas.pack(side=tk.LEFT)

control_frame = tk.Frame(frame)
control_frame.pack(side=tk.RIGHT, padx=10, pady=10)  # 添加边距

baidu_link = ttk.Label(control_frame, text="点击访问PPTTER学习AI知识", style="HyperlinkLabel.TLabel")
baidu_link.bind("<Button-1>", open_baidu)
baidu_link.pack(pady=5)

timer_label = tk.Label(control_frame, text="00:00.00", font=("Arial", 48), bg="white", fg="black")
timer_label.pack(pady=10)  # 添加边距

buttons_frame = tk.Frame(control_frame)
buttons_frame.pack(pady=10)  # 添加边距

restart_button = tk.Button(buttons_frame, text="重新开始当前关卡", command=restart_game)
restart_button.pack(side=tk.LEFT, padx=5)  # 添加边距

reset_button = tk.Button(buttons_frame, text="从头开始", command=reset_game)
reset_button.pack(side=tk.RIGHT, padx=5)  # 添加边距

# 创建“下一关”按钮并默认隐藏
next_level_button = tk.Button(control_frame, text="下一关", command=next_level)

# 在 control_frame 中添加一个表格
results_table = ttk.Treeview(control_frame, columns=("Level", "Time", "RequiredTime"), show="headings")
results_table.heading("Level", text="关卡")
results_table.heading("Time", text="用时")
results_table.heading("RequiredTime", text="要求时间")

# 设置表格的列宽
results_table.column("Level", width=80, anchor='center')
results_table.column("Time", width=100, anchor='center')
results_table.column("RequiredTime", width=100, anchor='center')

results_table.pack(pady=10)

current_number = 1
timer_started = False
elapsed_time = 0

create_grid(canvas)

root.mainloop()

P友的态度

赞赏

赞赏 赞赏

pptter8179

哇喔~

哇喔~ 哇喔~

wongvio

2 个用户表态

243 阅读量

P一下! 表个态!

like
love
dislike
wow
funny
happy
sad
angry

评论

赞助

1

wongvio:这个真心不错!希望大家喜欢!

1年前

加载更多 1+

1

更多推荐

最新发布

【Midjourney】星光璀璨的奇妙之夜

1年前

【Midjourney】星光璀璨的奇妙之夜

在这个奇妙的夜晚,我们被带入了一个梦幻般的仙境。这个场景如此精细、如此锐利,就像是超高清摄影的杰作。一位美丽的少女正在一颗巨大的树上攀爬,她的全身尽收......

详情...

171 阅读量

【Midjourney】巴哈马之晨

1年前

【Midjourney】巴哈马之晨

清晨的阳光洒在巴哈马的大地上,给一座木屋镶上了金边。站在木屋门廊上的是一位高大、崭露锐气的巴哈马汉子,他身着一件蓝色衬衫,黑皮肤透露着健康的光泽。这位......

详情...

174 阅读量