DeepSeek动手实践:创建一个自动连点器
deepseek作为国产开源大模型,其效果比肩OpenAI的GPT-4o。 想必你早就通过各家的chatbot体验过deepseek的对话能力了。 今天动手实践它的代码能力:动手创建一个连点器
注意:本工具仅限合法用途使用,请勿用于游戏作弊等违规场景
动手实践
Step1.生成连点器的代码逻辑
- 提示词
使用python和tkinter和autopy生成一个带界面的连点器工具,可设置两次单击的时间间隔、总单击次数、单击时间间隔的随机delta、esc停止、单击启动按钮启动等功能
- 响应代码部分(复制到文件autoclicker.py)
python
import tkinter as tk
from tkinter import ttk, messagebox
import autopy
import time
import random
import threading
import keyboard
class AutoClickerApp:
def __init__(self, root):
self.root = root
self.root.title("连点器工具")
self.root.geometry("400x300")
self.root.resizable(False, False)
# 控制变量
self.running = False
self.click_thread = None
# 创建UI
self.create_widgets()
# 绑定ESC键
keyboard.add_hotkey('esc', self.stop_clicking)
def create_widgets(self):
# 主框架
main_frame = ttk.Frame(self.root, padding="10")
main_frame.pack(fill=tk.BOTH, expand=True)
# 间隔时间设置
ttk.Label(main_frame, text="单击间隔时间(秒):").grid(row=0, column=0, sticky=tk.W, pady=5)
self.interval_var = tk.DoubleVar(value=0.5)
ttk.Entry(main_frame, textvariable=self.interval_var, width=10).grid(row=0, column=1, sticky=tk.W, pady=5)
# 随机变化范围
ttk.Label(main_frame, text="随机变化范围(秒):").grid(row=1, column=0, sticky=tk.W, pady=5)
self.delta_var = tk.DoubleVar(value=0.1)
ttk.Entry(main_frame, textvariable=self.delta_var, width=10).grid(row=1, column=1, sticky=tk.W, pady=5)
# 总点击次数
ttk.Label(main_frame, text="总点击次数(0=无限):").grid(row=2, column=0, sticky=tk.W, pady=5)
self.total_clicks_var = tk.IntVar(value=100)
ttk.Entry(main_frame, textvariable=self.total_clicks_var, width=10).grid(row=2, column=1, sticky=tk.W, pady=5)
# 点击类型
ttk.Label(main_frame, text="点击类型:").grid(row=3, column=0, sticky=tk.W, pady=5)
self.click_type_var = tk.StringVar(value="left")
ttk.Combobox(main_frame, textvariable=self.click_type_var,
values=["left", "right", "middle"], width=8).grid(row=3, column=1, sticky=tk.W, pady=5)
# 状态显示
self.status_var = tk.StringVar(value="准备就绪")
ttk.Label(main_frame, textvariable=self.status_var).grid(row=4, column=0, columnspan=2, pady=10)
# 按钮框架
button_frame = ttk.Frame(main_frame)
button_frame.grid(row=5, column=0, columnspan=2, pady=10)
# 开始按钮
self.start_button = ttk.Button(button_frame, text="开始", command=self.start_clicking)
self.start_button.pack(side=tk.LEFT, padx=5)
# 停止按钮
self.stop_button = ttk.Button(button_frame, text="停止", command=self.stop_clicking, state=tk.DISABLED)
self.stop_button.pack(side=tk.LEFT, padx=5)
# 作者信息
ttk.Label(main_frame, text="连点器工具 - 使用ESC键可随时停止").grid(row=6, column=0, columnspan=2, pady=10)
def start_clicking(self):
if self.running:
return
try:
interval = float(self.interval_var.get())
delta = float(self.delta_var.get())
total_clicks = int(self.total_clicks_var.get())
click_type = self.click_type_var.get()
if interval <= 0:
messagebox.showerror("错误", "间隔时间必须大于0")
return
if delta < 0:
messagebox.showerror("错误", "随机变化范围不能为负数")
return
if total_clicks < 0:
messagebox.showerror("错误", "总点击次数不能为负数")
return
except ValueError:
messagebox.showerror("错误", "请输入有效的数字")
return
self.running = True
self.start_button.config(state=tk.DISABLED)
self.stop_button.config(state=tk.NORMAL)
self.status_var.set("运行中...")
# 在新线程中运行点击操作
self.click_thread = threading.Thread(
target=self.auto_click,
args=(interval, delta, total_clicks, click_type),
daemon=True
)
self.click_thread.start()
def stop_clicking(self):
if not self.running:
return
self.running = False
self.status_var.set("已停止")
self.start_button.config(state=tk.NORMAL)
self.stop_button.config(state=tk.DISABLED)
def auto_click(self, interval, delta, total_clicks, click_type):
click_count = 0
while self.running and (total_clicks == 0 or click_count < total_clicks):
# 计算实际间隔时间
actual_interval = interval + random.uniform(-delta, delta)
actual_interval = max(0.01, actual_interval) # 确保最小间隔为0.01秒
# 执行点击
try:
if click_type == "left":
autopy.mouse.click(autopy.mouse.Button.LEFT)
elif click_type == "right":
autopy.mouse.click(autopy.mouse.Button.RIGHT)
elif click_type == "middle":
autopy.mouse.click(autopy.mouse.Button.MIDDLE)
click_count += 1
self.status_var.set(f"运行中... 已点击: {click_count}次")
except Exception as e:
self.status_var.set(f"错误: {str(e)}")
self.running = False
break
# 等待间隔时间
start_time = time.time()
while self.running and (time.time() - start_time) < actual_interval:
time.sleep(0.01)
# 循环结束后更新状态
if self.running:
self.running = False
self.status_var.set(f"已完成 {click_count}次点击")
self.root.after(0, lambda: self.start_button.config(state=tk.NORMAL))
self.root.after(0, lambda: self.stop_button.config(state=tk.DISABLED))
if __name__ == "__main__":
root = tk.Tk()
app = AutoClickerApp(root)
root.mainloop()
keyboard.unhook_all() # 清理键盘钩子
- 其他关键输出
- 运行则需要安装相关依赖包 -
pip install autopy keyboard
- 运行则需要安装相关依赖包 -
Step2.生成连点器的打包逻辑
- 提示词(在Step1的基础上继续追问)
如何将该连点器打包成windows上的可执行文件,不依赖环境下是否有python环境
- 响应代码部分(创建build.spec文件)
python
# build.spec
block_cipher = None
a = Analysis(
['autoclicker.py'], # 你的主程序文件名
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='AutoClicker', # 生成的exe名称
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False, # 设置为False可以隐藏控制台窗口
icon='icon.ico', # 可选:添加图标文件
)
- 其他关键输出
- 打包需要安装相关依赖包 -
pip install pyinstaller
- 打包命令 -
pyinstaller build.spec
- 打包需要安装相关依赖包 -
Step3.配置环境并打包
1.打包运行依赖配置好的Python环境,去下载安装到本地即可
- 可去官网下载 -
https://www.python.org/getit/
- 可去官网下载 -
2.按Step1 和 Step2 的响应安装依赖包
pip install autopy keyboard pyinstaller
3.按Step2 生成的 build.spec 文件的说明,需要一个图标文件(
.ico
格式),随便找一个ico格式的文件就可以,如果没有的话可以用 软件 格式工厂 进行转换生成- 这里就用 大千AI 的图标转换为 ico 格式的
4.打包
pyinstaller build.spec
- 等命令执行完成就在
dist
目录生成了一个名为AutoClicker.exe
的文件(也就是我们的连点器)
- 等命令执行完成就在
5.结果演示
- 我这里将python文件中的
连点器工具
修改为了连点器工具(By 大千AI助手)
- 我这里将python文件中的
打包后的文件张这个样子
- 双击打开界面这个样子