python井字棋_用Python做一个井字棋小游戏

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

wx_article_20190520142443_1o6GhL.jpg

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

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

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

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

wx_article_20190520142443_6bHocZ.jpg

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

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

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

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

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

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

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

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

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

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

wx_article_20190520142444_jz1VGM.jpg

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

wx_article_20190520142444_pNZqwI.jpg

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

wx_article_20190520142444_KsbnjW.jpg

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

作者:Ashing Tsai

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值