浔川AI五子棋(改进(完整)版1.3)——浔川python社
简介:
浔川AI五子棋是一种使用人工智能技术来进行五子棋对弈的游戏。它采用了先进的算法和模型,在对弈过程中能够实时分析棋局并进行决策,使得游戏更具挑战性和趣味性。
(图片来源网络,侵删)
浔川AI五子棋的核心技术是人工智能算法。它使用深度学习模型对大量的五子棋对局进行训练,从而学习到了不同棋局下的最优解策略。通过不断的优化和迭代,浔川AI五子棋的对弈水平逐渐提高。
浔川AI五子棋还具有一些其他的特性。它可以提供不同难度的对手选择,从初级到高级,以满足不同水平玩家的需求。此外,游戏还提供了多种游戏模式和主题,使得玩家能够体验到不同的游戏风格和乐趣。
总的来说,浔川AI五子棋是一款结合了人工智能技术的棋类游戏,通过对局分析和决策,提供了更具挑战性和趣味性的游戏体验。
本代码由浔川python社、浔川AI社联合创作。
下次更新: 2024/07/06 更新:v1.3 → v1.4
浔川AI五子棋 v1.0链接:浔川AI五子棋——浔川AI社_ai五子棋人工智能对弈-CSDN博客
正式代码:
-*- coding: utf-8 -*- import tkinter as tk import tkinter.messagebox import pickle import random # 窗口 window = tk.Tk() window.title('欢迎进入python') window.geometry('450x200') # 画布放置图片 # canvas=tk.Canvas(window,height=300,width=500) # imagefile=tk.PhotoImage(file='qm.png') # image=canvas.create_image(0,0,anchor='nw',image=imagefile) # canvas.pack(side='top') # 标签 用户名密码 Verification_Code = random.randint(1000, 9999)#设置一个随机的四位数 Verification_Code = str(Verification_Code)#把类型转换为str型 print(type(Verification_Code)) tk.Label(window, text='用户名:').place(x=100, y=30) tk.Label(window, text='密码:').place(x=100, y=70) tk.Label(window, text='验证码').place(x=100, y=110) tk.Label(window, text=Verification_Code).place(x=320, y=110) # 用户名输入框 var_usr_name = tk.StringVar() entry_usr_name = tk.Entry(window, textvariable=var_usr_name) entry_usr_name.place(x=160, y=30) # 密码输入框 var_usr_pwd = tk.StringVar() entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*') entry_usr_pwd.place(x=160, y=70) #验证码输入框 var_usr_yzm = tk.StringVar() entry_usr_yzm = tk.Entry(window, textvariable=var_usr_yzm) entry_usr_yzm.place(x=160, y=110) # 登录函数 def usr_log_in(): # 输入框获取用户名密码 usr_name = var_usr_name.get() usr_pwd = var_usr_pwd.get() usr_yzm = var_usr_yzm.get() #测试类型 print(type(usr_yzm),type(Verification_Code)) # 从本地字典获取用户信息,如果没有则新建本地数据库 try: with open('usr_info.pickle', 'rb') as usr_file: usrs_info = pickle.load(usr_file) except FileNotFoundError: with open('usr_info.pickle', 'wb') as usr_file: usrs_info = {'admin': 'admin'} pickle.dump(usrs_info, usr_file) # 判断验证码是否正确用户名和密码是否匹配 if usr_yzm == Verification_Code: if usr_name in usrs_info: if usr_pwd == usrs_info[usr_name]: tk.messagebox.showinfo(title='welcome', message='欢迎您:' + usr_name) else: tk.messagebox.showerror(message='密码错误') # 用户名密码不能为空 elif usr_name == '' or usr_pwd == '': tk.messagebox.showerror(message='用户名或密码为空') # 不在数据库中弹出是否注册的框 else: is_signup = tk.messagebox.askyesno('欢迎', '您还没有注册,是否现在注册') if is_signup: usr_sign_up() elif usr_yzm == '': tk.messagebox.showerror(message='验证码不能为空') else: tk.messagebox.showerror(message='验证码有误!') # 注册函数 def usr_sign_up(): # 确认注册时的相应函数 def signtowcg(): # 获取输入框内的内容 nn = new_name.get() np = new_pwd.get() npf = new_pwd_confirm.get() # 本地加载已有用户信息,如果没有则已有用户信息为空 try: with open('usr_info.pickle', 'rb') as usr_file: exist_usr_info = pickle.load(usr_file) except FileNotFoundError: exist_usr_info = {} # 检查用户名存在、密码为空、密码前后不一致 if nn in exist_usr_info: tk.messagebox.showerror('错误', '用户名已存在') elif np == '' or nn == '': tk.messagebox.showerror('错误', '用户名或密码为空') elif np != npf: tk.messagebox.showerror('错误', '密码前后不一致') # 注册信息没有问题则将用户名密码写入数据库 else: exist_usr_info[nn] = np with open('usr_info.pickle', 'wb') as usr_file: pickle.dump(exist_usr_info, usr_file) tk.messagebox.showinfo('欢迎', '注册成功') # 注册成功关闭注册框 window_sign_up.destroy() # 新建注册界面 window_sign_up = tk.Toplevel(window) window_sign_up.geometry('350x200') window_sign_up.title('注册') # 用户名变量及标签、输入框 new_name = tk.StringVar() tk.Label(window_sign_up, text='用户名:').place(x=10, y=10) tk.Entry(window_sign_up, textvariable=new_name).place(x=150, y=10) # 密码变量及标签、输入框 new_pwd = tk.StringVar() tk.Label(window_sign_up, text='请输入密码:').place(x=10, y=50) tk.Entry(window_sign_up, textvariable=new_pwd, show='*').place(x=150, y=50) # 重复密码变量及标签、输入框 new_pwd_confirm = tk.StringVar() tk.Label(window_sign_up, text='请再次输入密码:').place(x=10, y=90) tk.Entry(window_sign_up, textvariable=new_pwd_confirm, show='*').place(x=150, y=90) # 确认注册按钮及位置 bt_confirm_sign_up = tk.Button(window_sign_up, text='确认注册', command=signtowcg) bt_confirm_sign_up.place(x=150, y=130) # 退出的函数 def usr_sign_quit(): window.destroy() # 登录 注册按钮 bt_login = tk.Button(window, text='登录', command=usr_log_in) bt_login.place(x=140, y=150) bt_logup = tk.Button(window, text='注册', command=usr_sign_up) bt_logup.place(x=210, y=150) bt_logquit = tk.Button(window, text='退出', command=usr_sign_quit) bt_logquit.place(x=280, y=150) # 主循环 window.mainloop() #下载、安装 import tkinter as tk import time # 创建主窗口 window = tk.Tk() window.title('进度条') window.geometry('630x150') # 设置下载进度条 tk.Label(window, text='下载进度:', ).place(x=50, y=60) canvas = tk.Canvas(window, width=465, height=22, bg="white") canvas.place(x=110, y=60) # 显示下载进度 def progress(): # 填充进度条 fill_line = canvas.create_rectangle(1.5, 1.5, 0, 23, width=0, fill="green") x = 500 # 未知变量,可更改 n = 465 / x # 465是矩形填充满的次数 for i in range(x): n = n + 465 / x canvas.coords(fill_line, (0, 0, n, 60)) window.update() time.sleep(0.02) # 控制进度条流动的速度 # 清空进度条 fill_line = canvas.create_rectangle(1.5, 1.5, 0, 23, width=0, fill="white") x = 500 # 未知变量,可更改 n = 465 / x # 465是矩形填充满的次数 for t in range(x): n = n + 465 / x # 以矩形的长度作为变量值更新 canvas.coords(fill_line, (0, 0, n, 60)) window.update() time.sleep(0) # 时间为0,即飞速清空进度条 btn_download = tk.Button(window, text='开始下载', command=progress) btn_download.place(x=400, y=105) window.mainloop() import tkinter as tk import time # 创建主窗口 window = tk.Tk() window.title('进度条') window.geometry('630x150') # 设置下载进度条 tk.Label(window, text='安装进度:', ).place(x=50, y=60) canvas = tk.Canvas(window, width=465, height=22, bg="white") canvas.place(x=110, y=60) # 显示下载进度 def progress(): # 填充进度条 fill_line = canvas.create_rectangle(1.5, 1.5, 0, 23, width=0, fill="green") x = 500 # 未知变量,可更改 n = 465 / x # 465是矩形填充满的次数 for i in range(x): n = n + 465 / x canvas.coords(fill_line, (0, 0, n, 60)) window.update() time.sleep(0.02) # 控制进度条流动的速度 # 清空进度条 fill_line = canvas.create_rectangle(1.5, 1.5, 0, 23, width=0, fill="white") x = 500 # 未知变量,可更改 n = 465 / x # 465是矩形填充满的次数 for t in range(x): n = n + 465 / x # 以矩形的长度作为变量值更新 canvas.coords(fill_line, (0, 0, n, 60)) window.update() time.sleep(0) # 时间为0,即飞速清空进度条 btn_download = tk.Button(window, text='开始安装', command=progress) btn_download.place(x=400, y=105) window.mainloop() #五子棋 from tkinter import * import tkinter.messagebox # 弹窗库 import numpy as np root = Tk() #创建窗口 root.title("浔川五子棋") #窗口名字 w1 = Canvas(root, width=600,height=600,background='chocolate') w1.pack() for i in range(0, 15): w1.create_line(i * 40 + 20, 20, i * 40 + 20, 580) w1.create_line(20, i * 40 + 20, 580, i * 40 + 20) w1.create_oval(135, 135, 145, 145,fill='black') w1.create_oval(135, 455, 145, 465,fill='black') w1.create_oval(465, 135, 455, 145,fill='black') w1.create_oval(455, 455, 465, 465,fill='black') w1.create_oval(295, 295, 305, 305,fill='black') num=0 A=np.full((15,15),0) B=np.full((15,15),'') def callback(event): global num ,A for j in range (0,15): for i in range (0,15): if (event.x - 20 - 40 * i) ** 2 + (event.y - 20 - 40 * j) ** 2 = 0 and x + a = 0 and y - b >= 0 and B[x - a][y - b] == B[i][j]: [x, y] = np.array([x, y]) - np.array([a, b]) else: break if count1 + count2 == 6: if B[i][j] == 'b': tkinter.messagebox.showinfo('提示', '黑棋获胜') else: tkinter.messagebox.showinfo('提示', '白棋获胜') w1.bind("",callback) w1.pack() def quit(): root.quit() u=Button(root,text="退出",width=10,height=1,command=quit,font=('楷体',15)) u.pack() mainloop()
即将上线 公告!
浔川AI翻译v3.0 即将上线!
公告链接:
“浔川AI翻译机v3.0”即将上线!-CSDN博客
浔川画板v5.1 即将上线!
公告链接:‘浔川画板v5.1’即将上线!——浔川python社-CSDN博客
浔川AI五子棋v1.4 即将线!
公告链接:浔川AI五子棋——浔川AI社_ai五子棋人工智能对弈-CSDN博客
本代码由浔川python社、浔川AI社联合创作。
版权所有,未经许可不得复制。
版权所有,未经许可不得复制。
本内容版权独有,未经授权不得以任何形式复制、转载、摘编和使用,违者必究。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。