python井字棋游戏人机对战_用Python做一个井字棋小游戏

井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜。

今天就用Python编写一个井字棋小游戏,与电脑对战。

程序执行画面如下图所示:

程序提供了两种人工智能选择,一个是强人工智能另一个是弱人工智能,选择强人工智能,如果计算机先下,玩家可以说是没有赢的可能,因此特地弄出一个弱人工智能选项,一来增加游戏的趣味,一来可以比较这两者在程序设计上的差异。选择弱人工智能,玩家通常可以简单的获胜。

游戏一开始还须得选择O或X,然后会随机选择玩家先下或是计算机先下。

整个程序最主要的核心在于如何决定计算机如何落子,也就是人工智能实现的部分,这部分的程序落在底下程序,function:getComputerMove(self,board) 是实现强人工智能的方法。他有几个判断步骤,首先:

第一步骤:程序代码165~170 ,先判断该次落子"计算机"是否有获胜的可能,用循环寻访所有

可落子地方,若有可获胜的可能则在该地方落子

第二步骤:程序代码172~178 ,先判断该次落子"玩家"是否有获胜的可能,用循环寻访所有

可落子地方,若"玩家"有可获胜的可能则在该地方落子,目的是为了阻止玩家获胜

若上述两个动作都不成立,则接着判断以下步骤落子

第三步骤:程序代码180~183,[1,3,7,9]代表着在九宫格的四个角的编号,此段程序在此四个角落随机选择一地方下子

第四步骤:程序代码185~187,[5]代表着在九宫格的中间位置的编号,此段程序判断中间位置是否可落子

第五步骤:程序代码189~190,[2,4,6,8]代表着在九宫格的四个边的编号,此段程序在此四个边落随机选择一地方下子

透过判断以上五个步骤的落子选择ˊ,可以让计算机无论是先手或是后手都可以处于不败之地。

底下程序,function:getComputerMove_2(self,board) 则是实现弱人工智能的方法,其实也就是改变上述强人工智能的方法,只保留第一步骤规则,其余落子则是随机选择。

另一个重要的程序片段如下266~276,用来判断是否胜出,也就是判断每列或每行或是对角线是否有相同的O或X即可获胜。

这是一个小游戏的范例,或许也称不上人工智能,主要是拿来练习Python程序的应用。

作者:Ashing Tsai

更多精彩文章请关注微信公众号‍易心Microbit编程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机管理内默认共享,关于Windows的默认共享介绍

C:\Documents and Settings\Administrator>net share ?此命令的语法是:NET SHAREsharenamesharenamedrive:path [/GRANT:user,[READ | CHANGE | FULL]][/USERS:number | /UNLIMITED][/REMARK:"text"][/CACHE:Manual | Documents| Programs | BranchCache | None]…

中绘制折线_漂亮图表也可信手拈来,一文学会用Python绘制堆积折线图

今天咱们还是接着上次的话题,继续和大家聊聊关于Python绘图相关的东东哦,上次已经和大家讨论完了如何给自己所绘制的图表中添加装饰线以及修改装饰线密度的方法,今天呢,咱们再聊点的新的东东哦,还是和大家继续深耕Pyth…

计算机病毒的危害主要体现于对计算机系统的信息破坏和,2014年中央电大专科信息技术应用理论题.doc...

一村一《信息技术应用》复习资料(注:仅提供理论题30分,操作题请大家按照下发的自测光盘综合练习多做多练,考试范围难度差不多)第1套一、单选题1.某单位的人事档案管理程序属于(应用软件)2.微机的核心部件是(微处理器 )3.内存储器根据工作方式的不同可以分…

seo vue 动态路由_VUE项目SEO问题的解决

1. SEOSEO(搜索引擎优化):搜索引擎优化的中文翻译。使用搜索引擎的规则来提高网站的自然排名相关的搜索引擎。当一个网络爬虫抓取网页的内容,它需要分析的内容页面。要点如下:阅读内容的关键字和描述元标签。抓取和分析基于语义html标记的内容。的影响一个网站,作为一个整体使用…

计算机电缆对绞节距,DJYPVP阻燃计算机电缆32/0.2芯数直径

电缆敷设在既有正压力作用又有拉力作用的场合(如水中、垂直竖井或落差较大的土壤中),应选用具有内钢丝铠装的结构型。外护套外护套是保护电线电缆的绝缘层防止环境因素侵蚀的结构部分。外护套的主要作用是提高电线电缆的机械强度、防化学腐蚀、防潮、防水浸人、阻止…

php 监听端口数据客户端ip_PHP做端口监听示例代码

1,PHP端口监听之服务器端复制代码 代码示例:// Server// 设置错误处理error_reporting(E_ALL);// 设置运行时间set_time_limit(0);// 起用缓冲ob_implicit_flush();$ip "127.0.0.1"; // IP地址$port 1000; // 端口号$socket socket_create(AF_INET, SO…

软件测试条件组合覆盖三角形,软件测试三角形问题(覆盖测试)

软件测试三角形问题(覆盖测试) (9页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分成绩辽宁工程技术大学上机实验报吿课程名称软件测试与评估实验题目基于覆盖测试技术院系软件学院专业软件工…

flog和flag_FLAG:写作,英语和持续学习

新年计划一:日更千字只差一个月就可以完成日更100字的任务了。日更百字对我来说已经不再是一种负担和任务,而是每天碎碎念的日记,解压的方式。但是我知道这些碎碎念的日记本质上是没有用的。既没有信息增量,也没有变现价值&#x…

设备dp信号测试软件,DP信号完整性测试,信号质量测试

DP信号完整性测试,信号质量测试在视频和音频内容通过DP link发送并显示在显示屏上之前,在DPsource和sink(可能还有分支装置)之间已经进行了大量通信。DP主数据Link中的多媒体内容传输与数据link的类似程度高于DVI或HDMI。另外连接之前的握手也比纯插件要…

软件测试报告费计什么科目,软件记什么会计科目

1软件记什么 会计 科目会计学的研究对象包括会计的所有方面,如会计的性质、对象、职能、任务、方法、程序、组织,制度、技术等。会计学用自己特有的概念和理论,概括和总结它的研究对象。接下来小编就告诉你软件记什么会计科目。根据《企业会计…

php mysql 统计_PHP和MySQL实现优化统计每天数据

在互联网项目中,对项目的数据分析必不可少。通常会统计某一段时间内每天数据总计变化趋势调整营销策略。下面来看以下案例。案例在电商平台中通常会有订单表,记录所有订单信息。现在我们需要统计某个月份每天订单数及销售金额数据从而绘制出如下统计图&a…

专科计算机专业能报考南方电网,大学毕业想进国家电网?3大条件不可或缺!专科生也有报考机会...

国家电网是许多学子心目中理想的工作,每年的毕业季都有国家电网进入校园招聘。同时每年报考国家电网的人数大概在40万左右,今天,小编就来带大家盘点一下,报考国家电网需要满足哪些条件,方便大四学生对照要求&#xff0…

计算机中丢失了ll是什么意思,丢失了ntoskrnl.exe和hal.ll

满意答案hal.dll丢失、损坏、找不到等情况的解决办法1.尝试使用windows光盘启动,按提示选择修复,再选择启动到故障恢复控制台,输入管理员口令,一部分用户安装时并没有输入管理员口令,可以直接按回车通过。当系统成功的…

执行计划 分析一条sql语句的效率 mysql_mysql的SQL语句执行计划分析:EXPLAIN

数据库最常见的操作就是查询了,我们经常要用"SELECT"语法对已有的表进行某种检索,但是在实际应用中,查询前我们并不知道该查询会如何运行、会使用多少时间、会涉及多少字段和记录,每次输入了SQL语句,点击运行…

计算机和单片机概述,微机与单片机概述课件.ppt

《微机与单片机概述课件.ppt》由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关《微机与单片机概述课件.ppt》文档请在天天文库搜索。1、1.微机与单片机概述1.1 微型计算机的特点和发展1.2 微机的分类与单片机1.3 微处理器、…

mysql 5.6 command line client闪退_MySQL 5.6 Command Line Client 点开闪退解决方法

先看下连接mysql本地库的2种方式。第一种运行cmd,键入mysql -uroot -p,如果提示mysql不是内部或外部命令,也不是可运行的程序或批处理文件。就将mysql的安装路径添加的系统的环境变量中。连接成功的界面如下第二种方式:安装程序中搜索mysql找…

虚拟服务器的好处与坏处,常见服务器虚拟化的弊端主要是什么问题?

常见服务器虚拟化的弊端问题主要有以下几点:1、虚拟机蔓延:避免虚拟机蔓延一个常用的策略是为虚拟机分配有效期。临近有效期的虚拟机将会被打上标记,而且会给相关人员发送消息,要求批准保留该虚拟机。2、资源争用。在虚拟环境中&a…

centos7安装mysql的rpm_Centos7 安装MySQL(rpm方式)

1 软件准备(我的网盘链接:https://pan.baidu.com/s/1c2AS6uG 密码:e1sj)mysql-5.6.29-1.el7.x86_64.rpm-bundle.zip Centos7 (我遇到的坑 :用cnetos6.5mini版的时候很难找到依赖,网上可靠的资料不多,结果安装了一大…

计算机重启很慢,电脑重启慢的原因

电脑重启慢的原因电脑开机速度慢是现在比较常见的一个问题,但是有时候重启也很慢,那么,电脑重启慢的原因是什么?下面跟小编一起来了解一下吧!电脑重启慢的原因1、遭到木马病毒入侵,系统遭到破坏和修改,导致程序运行缓…

ibm招mysql_IBM-ETP实训之MySql基本命令总结

MySql学习笔记SQL的三种表示DDL(create、drop、alter)--隐式提交、DQL(select)、DML(insert、delete、update)--自动提交、DCL(commit、rollback)MySql的一些常用语句:1、 show databases;显示所有存在的数据库2、 use 数据库名;选择数据库3、 show tables;显示所选…