python 下棋_用 Python 跟自己下棋(续)

上周跟着 AlphaGo vs. 李世乭人机大战的风,写了一个命令行下的 TicTacToe 井字棋。不过,电脑是随机选位置,胡乱走子,所以下赢电脑易如反掌,下输给它反倒要点运气。那么本篇的任务就是,给电脑走子加上一点点简单的策略,让它不那么“傻”。

棋类游戏最基本的 AI 方法就是给棋盘上每个位置的优劣程度打分,然后选择的最高分的位置来走。打分算法的好坏,就决定了这个 AI 的“智能”程度。

要给我们的井字棋 AI 制定打分方法,首先就得分析一下井字棋本身的对局策略。好在这个游戏的规则很简单,总结下来基本就是:

尽可能让自己走成 3 个

在自己走成 3 个之前,不要让对方走成 3 个

最好能在 2 条路线上同时走到 2 个,且第 3 个位置可走

选择还有可能走出 3 个的路线上

尽量选择路线的交叉点

在继续往下阅读之前,你可以设想一下,自己要如何来完成这段打分的代码,并把它加入现有的代码中。建议亲手试试看。

基于上面几点分析,对于棋盘上每一个还未落子的点,我制定了如下的打分方法:

每个位置默认 0 分

对横、竖、斜三条线分别进行判断,分值累加

如果线上有 2 个己方棋子,+1000

如果线上有 2 个对方棋子,+900

如果线上有 1 个己方棋子,0 个对方棋子,+100

如果线上有 1 个对方棋子,0 个己方棋子,+90

如果线上没有任何棋子,+10

如果此位置是线上的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值