GobangAI(五子棋人机版)

五子棋(人机版)
一、效果演示

二、开发环境
java版本:jdk12.1
IDE工具:IDEA2020.1.3

三、开发步骤
1.窗口
2.菜单
3.棋盘
4.指示器
创建鼠标监听
创建指示器类
创建指示器数组
绘制指示器
处理显示逻辑
修改显示样式
5.落子
初始化图片
public class ImageValue { public static BufferedImage whiteImage=null; public static BufferedImage blackImage=null; private static String path="/images/";//‘/'源码代码根目录下 //初始化图片方法 public static void init(){ try{ whiteImage= ImageIO.read(ImageValue.class.getResource(path+"white.png")); blackImage= ImageIO.read(ImageValue.class.getResource(path+"black.png")); }catch (Exception e){ e.printStackTrace(); } } }
棋子类的实现
鼠标点击事件
实现落子
细节处理
6.电脑落子
电脑随机落子
最后一个落子标记
权重分设计
> 描述:计算出分数,最高分落子
> 左开:左边可落子
> 右开:右边可落子
3子相关定义(4,5子类似)
> 3子左开:已有两个子,左边可落子
> 3子只能在中间
> 3子右开:已有两个子,右边可落子
类型 3子左开 3子中间 3子右开
得分 32 30 31
类型 4子左开 4子中间 4子右开
得分 42 40 11
类型 5子左开 5子中间 5子右开
得分 52 50 51
落子顺序:5>4>3 左>右>中
代码设计思路
循环指示器;
循环4个方向;
分别计算从左往右,从右往左,并将返回的结果存在集合中;
对权重分进行排序处理,把最大的排在最前面;
取第一个元素作为落子的地方,并返回true;

**4个方向**
横向
  从左往右:
  横向下标是一样的,循环从当前位置j+1开始;
  当碰到和当前子一样的就计数器+1;
  当碰到不一样的就退出循环,表示堵住;
  如果碰到空子,是第一次计数器+1,第二次退出循环;
  判断左开和右开的状态;
  根据计数器和左右开的状态计算分数;
  
竖向
斜上
斜下

7.菜单功能

posted @   老李学Java  阅读(177)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示