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

相关文章

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/