[Java五子棋小游戏

您所在的位置:网站首页 bcm2711多少纳米 [Java五子棋小游戏

[Java五子棋小游戏

2024-07-13 14:02:18| 来源: 网络整理| 查看: 265

五子棋智能下棋怎么实现的?来揭晓吧

源码连接:Java五子棋小游戏(控制台纯Ai算法)

基本权重计算

现在说说五子棋胜算是怎样判定的 这里就说到权重 如果你下棋的位置的权重是 4 那么你就能获得游戏的胜利

这里说位置 1>2>3>4>O 的权重 O 的最大权重是4 如果他在这个位置下棋了 那么他就能获得游戏的胜利

这里的O代表着下棋的位置

在这里插入图片描述 有的人怪说了 如果下棋的位置位于中间呢 正好集齐5个棋子 这里也要说明一下

反向计算权重

像这种情况 其实可以反向查询权重 然后把它加起来 例如图中 1>5> O 的方向 假如后面还有两个棋子 那么下 O 的位置就会获得游戏胜利 我们可以反向取权重 前面权重是2 后面权重是2 加起来正好是4 所以获得游戏胜利

稍后在高级算法详解

权重实现代码

这里我自己把之前发的 java代码扣过来了

/* x 和 y 代表坐标 * xx :x方向需要增加的值 * yy :y方向需要增加的值 * * 例如xx = -1 yy= -1 * 代表需要获取(x-1,y-1)的棋子 * * xx = 1 yy= 1 * 代表需要获取(x+1,y+1)的棋子 * * */ /** * 计算权重 * @param x x坐标 * @param y y坐标 * @param xx x方向 * @param yy y方向 * @param size 缓存变量如果当前检测是棋子是你的棋子 * 那么就会保存这个变量继续递归获取下一个位置的权重 * @param c 自己的棋子颜色 * @return 返回计算后的权重 */ private int ishas(int x,int y,int xx,int yy,int size ,char c){ //边缘检测防止超出棋盘位置 if((x==0&&xx==-1)|| (x==15&&xx==1) || (y==0&&yy==-1) || (y== 15&&yy==1)) return size; //如果 if(table[x+xx][y+yy] == c){ return ishas(x+xx,y+yy,xx,yy,size+1,c); } return size; } 计算权重伪代码–如果看着上面的费劲看这个 char table [16][16] ;//棋盘 /* * x 和 y 代表坐标 * xx :x方向需要增加的值 * yy :y方向需要增加的值 * * 例如xx = -1 yy= -1 * 代表需要获取(x-1,y-1)的棋子 * * xx = 1 yy= 1 * 代表需要获取(x+1,y+1)的棋子 * */ 计算权重( x, y, xx, yy ,初始权重 简称 -> 权重 , 你棋子的颜色 简称 -> 颜色){ //边缘检测防止超出棋盘位置 if((x==0&&xx==-1)|| (x==15&&xx==1) || (y==0&&yy==-1) || (y== 15&&yy==1)) return 权重; //不能计算墙以外的 所以直接返回权重 /*上面这句话的意思是 就拿 第一个 (x==0&&xx==-1) 来说: 如果他的横坐标为x 那么 就不能再进行x-1操作了 因为棋盘就这么大 */ //这里假设 xx 和 yy = 1 //如果棋盘里的指定的格子(x+1,y+1)的颜色和你的棋子颜色一样 那么就对那个棋子在进行一次计算权重 if(table[x+xx][y+yy] == 颜色){ return 计算权重( x+xx,y+yy , xx , yy , 权重+1, 颜色);//递归 // x坐标 y坐标 下一个棋子方向 本次计算权重+1 颜色不变 } //如果不等直接把权重的值返回 return 权重; } 游戏运算伪代码

这里用伪代码写吧

char table [16][16]; //棋盘 Player p1 = new Player("P1","黑"); //这里就不弄类了 懂啥意思就行 Player.下棋(){ //里面定义的方法 控制台输入 Player p = 获取下棋玩家(轮到谁返回谁); p.下棋() 打印棋盘(); }

一个十分简陋的程序就写出来了 ,这就是游戏运行过程 单拿这个代码创建两个玩家 ,可以人对人下棋

Ai是怎么下棋的

人与人的PK方法已经知道了 下面就来说说Ai下棋算法思路 还是拿权重的图在这里插入图片描述

初级算法 发现对我有威胁的格子 我要赶紧补坑对我威胁不大的 我走我自己的 伪代码实现 char table [16][16]; //棋盘 List 棋子列表; // Ai 玩家 也是玩家 所以 他有玩家的功能 只不过下棋方式 是自己定义的 class AiPlayer extends Player{ @重写 下棋(){ //里面定义的方法 控制台输入 if(当前格子颜色 == 空){ //两个都要计算并且把计算结果保存到棋子类 计算权重(x,y,对手)-->两个方向计算权重 计算权重(x,y,自己)-->两个方向计算权重 //如果权重一样那么 对手权重-1 让自己先来 谁的权重大--> 棋子列表.加入棋子(new 棋子(x,y,权重)) } } //遍历完毕 棋子列表.按权重排序() 返回棋子 = 棋子列表.get(0); return (返回棋子); } } 下一篇[Java五子棋小游戏-Ai算法精讲以及实现]-02-高级算法初步

源码连接:Java五子棋小游戏(控制台纯Ai算法)



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭