五子棋人机对战思路「建议收藏」

五子棋人机对战思路「建议收藏」五子棋人机对战:人机对战,我们可以想象一下我们在玩QQ游戏五子棋时的场景,根据每次下的步骤来分析电脑是怎样解析我们下棋的步骤的。下五子棋的步骤:1、第一步,黑子先下2、白子的第一步的最好的位置就是在黑子周围的八个点上3、接着黑子的第二步必然也是根据白子周围的八个点和自己的黑子所在的位置来下。4、如此循环下去。。。。那么对于计算机来说,就是让他找到第一个黑子周围的八个点,并且随机选中一个下白子。…

大家好,又见面了,我是你们的朋友全栈君。

五子棋人机对战:
人机对战,我们可以想象一下我们在玩QQ游戏五子棋时的场景,根据每次下的步骤来分析电脑是怎样解析我们下棋的步骤的。

下五子棋的步骤:
1、第一步,黑子先下
2、白子的第一步的最好的位置就是在黑子周围的八个点上
3、接着黑子的第二步必然也是根据白子周围的八个点和自己的黑子所在的位置来下。
4、如此循环下去。。。。
那么对于计算机来说,就是让他找到第一个黑子周围的八个点,并且随机选中一个下白子。
对于计算机来说(计算机执白棋):

1、赋权值

我们把棋盘上的位置都存储在一个数组中,扫描的话,怎样才能证明黑子附近的八个位置是最优位置呢?所以用权值数组,给这八个位置赋予较大的权值,这样才能证明其为最优。

活一连的话,它附近的八个位置就赋为10
死一连的话,黑子的八个方向有一个方向的一端被赋值为5,其他6个位置依然是10
活二连的话,两个子在相连的方向,两端赋为20,以两颗棋子分别为中心的八个位置,位置重复的进行权值累加.
死二连的话,两个子在相连的方向,白子堵住的另一端,赋值为15,其他都一样。
活三连的话,三个相连的方向,两端赋值为50,其他位置重复的进行权值累加.
死三连的话,三个子在相连的方向,白子堵住的另一端,赋值为18,跟活二连相比的话,会比其低,和死二连相比比其高。
四子相连时,不管是死是活,可以下棋堵住的地方都被赋值为100。

白棋也一样赋值

2、全盘遍历,找空位,每找一个空位的时候,判断这个空位的八个方向上有无棋子,若有,继续判断这个棋子的方向上是否有棋子,有的话是否是对方的棋子(黑棋白棋覆盖的权值进行累加),计算个数,判断为几连,好赋权值;若无,则赋为null。

3、用一个循环找出最大权值

4、统计权值
把最大权值的所有位置存储到一个队列中(泛型),随机选取出一个位置,下棋子。

5、清空权值数组,返回全盘遍历。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148954.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • scratch编程小游戏——黄金矿工

    黄金矿工的玩法就是操控一个不断摆来摆去的钩子去挖出黄金,现在我们就来用scratch编一个黄金矿工首先新建好变量:矿车要画出许多的造型:代码:钩爪的绳索是这个游戏最为复制的一点,方法是移动后画出一条线,返回时用背景一样的颜色来覆盖,我们首先来画出造型:红色的是中心位置代码如下:(此代码需要用到一部分自定义,不懂的见文章末尾链接)自定义部分是这个代码的核心:接下来是黄金,造型的话要画出三个:大、中、小各一个代码如下:黄金代码是程序中非常重要的一环,一定不要有差错现

    2022年4月4日
    2.3K
  • PetaLinux学习笔记 1

    PetaLinux学习笔记 1迟迟没有做底板,所以只能把Linux写到FLASH上了。还好这个FLASH够大。官方所说的有点问题,最后一句改成petalinux-package–boot–fsbl~/FTP_Folder/ax_peta/images/linux/zynq_fsbl.elf–fpga–u-boot–kernel–force再烧进去就可以跑了。手册ug821有说明,先搞清楚它…

    2022年9月12日
    0
  • mysql中length函数_length中文

    mysql中length函数_length中文1、length:返回字符串所占的字节数selectlength(“10,A,B”);2、char_length:返回字符串的字符数selectchar_length(“10,A,B”);归纳:应用场景1.查询字符串长度length(str)2.查询列最大字符串长度max(length(str))3.查询某个字符出现几次length(str1)-length(replace(‘str1’,’str2’,”))4.length求得是字符长度。【1个中文、英文字母、数字、中文

    2022年5月3日
    416
  • 杭电 2047 阿牛的EOF牛肉串 (递推)「建议收藏」

    杭电 2047 阿牛的EOF牛肉串 (递推)

    2022年2月1日
    45
  • 操作系统进程有若干个状态,若一个进程_进程和线程的概念

    操作系统进程有若干个状态,若一个进程_进程和线程的概念第二章进程管理-进程、线程进程的概念进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。(线程是调度的基本单位)程序:是静态的,是一个存放在磁盘里的可执行文件,是一系列指令的集合进程:是动态的,是程序的一次执行过程

    2022年9月3日
    3
  • postman接口自动化测试实战_python API

    postman接口自动化测试实战_python APIApifox介绍Apifox是API文档、API调试、APIMock、API自动化测试一体化协作平台,定位Postman+Swagger+Mock+JMeter。通过一套系

    2022年7月31日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号