python3.6 ai井字棋 alpha-beta剪枝3

2024-03-09 15:58

本文主要是介绍python3.6 ai井字棋 alpha-beta剪枝3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

所有代码: 

import numpy as np
from tkinter import *class Game(object):def __init__(self):self.chess = np.zeros((3, 3), dtype=int)  # 棋盘状态数组  0---空格  1---叉电脑  2---圈玩家self.iscircle = True  # 当前圈下,默认玩家先手self.select_i, self.select_j = -1, -1self.root = Tk()self.root.title('井字棋')self.canvas = Canvas(self.root, width=230, height=230, bg="white")self.canvas.pack()self.canvas.create_rectangle(25, 25, 205, 205, fill="#CA9762")for i in range(1, 5):self.canvas.create_line(25, 25 + 60 * (i - 1), 205, 25 + 60 * (i - 1))  # 横线self.canvas.create_line(25 + 60 * (i - 1), 25, 25 + 60 * (i - 1), 205)  # 竖线self.canvas.bind("<Button-1>", self.player)self.root.mainloop()def player(self, event):x = event.xy = event.yif self.iscircle and (25 <= x <= 205) and (25 <= y <= 205):i = int((y - 25) / 60)j = int((x - 25) / 60)if self.chess[i][j] == 0:self.chess[i][j] = 2# 画圈self.drawcircle(i, j)# 画完,判断是否结束游戏self.isGameOver(2)self.iscircle = False# 轮到电脑下self.computer()def win(self, chesstemp, who):t = chesstemp.copy()for i in range(3):if t[i][0] == who and t[i][1] == who and t[i][2] == who:  # 竖直方向return Trueif t[0][i] == who and t[1][i] == who and t[2][i] == who:  # 水平方向return Trueif t[0][0] == who and t[1][1] == who and t[2][2] == who:return Trueif t[0][2] == who and t[1][1] == who and t[2][0] == who:return Truereturn Falsedef isGameOver(self, who):# 游戏结束 1、满格平局  2、电脑胜 3、玩家胜t = self.chess.copy()empty_cells = [(i, j) for i in range(3) for j in range(3) if t[i][j] == 0]if self.win(t, who):return Trueelse:if len(empty_cells) == 0:  # 没有人赢,但是没有空格了,游戏结束return Trueelse:  # 游戏没有结束return Falsedef drawcircle(self, i, j):x = 25 + 60 * jy = 25 + 60 * iself.canvas.create_oval(x + 30 - 20, y + 30 - 20, x + 30 + 20, y + 30 + 20)def drawcha(self, i, j):x = 25 + 60 * jy = 25 + 60 * iself.canvas.create_line(x, y, x + 60, y + 60)self.canvas.create_line(x + 60, y, x, y + 60)def computer(self):  ## 进行 a-b剪枝 ,返回下一步该下的坐标if not self.iscircle:i, j, score = self.alphabeta2(self.chess, -10000, 10000, True, 2000000000)if 0 <= i < 3 and 0 <= j < 3:print('Computer下棋的位置 ,i ,j ', i, j, score)self.drawcha(i, j)self.chess[i][j] = 1self.isGameOver(1)self.iscircle = True'''score = self.alphabeta3(self.chess, -10000, 10000, True, True, 6)print('Computer下棋的位置 ,i ,j ', self.select_i, self.select_j, score)if 0 <= self.select_i < 3 and 0 <= self.select_j < 3:self.drawcha(self.select_i

这篇关于python3.6 ai井字棋 alpha-beta剪枝3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/791178

相关文章

Python3.6连接MySQL的详细步骤

《Python3.6连接MySQL的详细步骤》在现代Web开发和数据处理中,Python与数据库的交互是必不可少的一部分,MySQL作为最流行的开源关系型数据库管理系统之一,与Python的结合可以实... 目录环境准备安装python 3.6安装mysql安装pymysql库连接到MySQL建立连接执行S

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll