目录

简介

游戏思路

源码

效果视频

代码片段


简介

Hello,I'm Shendi

继上次写完象棋后又花了一天时间写了个五子棋,比较简单

拥有大概如下功能

  1. 五子棋的基本功能
  2. 棋盘大小的自由设置
  3. 胜利棋数的自由设置
  4. 人机对战

游戏思路

五子棋相比其他棋牌游戏比较简单

我们判断胜负只需要在玩家/人机下棋处循环遍历

  • 上下是不是连起来到了指定点数
  • 左右...
  • 左斜
  • 右斜

源码

github: https://github.com/1711680493/Application#gobang


效果视频

Java制作五子棋/连珠棋+简单AI


代码片段

棋盘,棋子绘制代码

/*** 重新绘制棋盘.* @author Shendi <a href='tencent://AddContact/?fromId=45&fromSubId=1&subcmd=all&uin=1711680493'>QQ</a>* @param chessBoardNum 棋盘大小*/
public void repaint(int chessBoardNum) {BufferedImage img = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);Graphics g = img.getGraphics();size = 380 / chessBoardNum;first = size >> 1;// 棋子大小初始化Game.getGame().getChesses().forEach((chess) -> chess.setSize(size,size));// 将棋盘上所有位置初始化positions.clear();for (int i = 0;i < chessBoardNum;i++) {positions.put(i, first + size * i);}// 绘制棋盘for (int i = 1;i < chessBoardNum;i++) {// 横线g.drawLine(size, size * i, 380, size * i);// 竖线g.drawLine(size * i, size, size * i, 380);}g.drawLine(size, 380 , 380, 380);g.drawLine(380, size, 380, 380);g.dispose();background.setIcon(new ImageIcon(img));invalidate();repaint();// 白色黑色棋子图int imgPos = (size - size / 2) >> 1;int imgSize = size >> 1;BufferedImage whiteChessImg = new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB);g = whiteChessImg.getGraphics();g.setColor(Color.WHITE);g.fillRoundRect(imgPos, imgPos, imgSize, imgSize, 180, 180);g.dispose();BufferedImage blackChessImg = new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB);g = blackChessImg.getGraphics();g.setColor(Color.BLACK);g.fillRoundRect(imgPos, imgPos, imgSize, imgSize, 180, 180);g.dispose();whiteChessIcon = new ImageIcon(whiteChessImg);blackChessIcon = new ImageIcon(blackChessImg);
}

判断游戏逻辑代码

/*** 执行下棋操作.* @author Shendi <a href='tencent://AddContact/?fromId=45&fromSubId=1&subcmd=all&uin=1711680493'>QQ</a>* @param chess 棋子* @param whiteBlack 白棋还是黑棋.*/
public void exec(JLabel chess,boolean whiteBlack) {// 指定位置是否有棋子,有不做操作int x = chessBoard.getScenePos(chess.getX());int y = chessBoard.getScenePos(chess.getY());if (scene[y][x] != 0) { return; }// 下棋int team = whiteBlack ? 1 : 2;scene[y][x] = team;//        for (int[] xScene : scene) System.out.println(Arrays.toString(xScene));if (whiteBlack) chess.setIcon(chessBoard.whiteChessIcon);else chess.setIcon(chessBoard.blackChessIcon);// 判断胜负,横竖斜有指定数量棋子则胜利,对方失败int h = 1,v = 1,ld = 1,rd = 1;// 横,左右int posX,posY;for (int i = 1;i < chessBoardNum;i++) {posX = x - i;if (posX < 0) break;if (scene[y][posX] == team) h++; else break;}for (int i = 1;i < chessBoardNum;i++) {posX = x + i;if (posX >= chessBoardNum) break;if (scene[y][posX] == team) h++; else break;}// 竖,上下for (int i = 1;i < chessBoardNum;i++) {posY = y - i;if (posY < 0) break;if (scene[posY][x] == team) v++; else break;}for (int i = 1;i < chessBoardNum;i++) {posY = y + i;if (posY >= chessBoardNum) break;if (scene[posY][x] == team) v++; else break;}// 左斜,上左下右 \for (int i = 1;i < chessBoardNum;i++) {posX = x - i;posY = y - i;if (posX < 0 || posY < 0) break;if (scene[posY][posX] == team) ld++; else break;}for (int i = 1;i < chessBoardNum;i++) {posX = x + i;posY = y + i;if (posX >=  chessBoardNum || posY >= chessBoardNum) break;if (scene[posY][posX] == team) ld++; else break;}// 右斜,上右下左 /for (int i = 1;i < chessBoardNum;i++) {posX = x + i;posY = y - i;if (posX >= chessBoardNum || posY < 0) break;if (scene[posY][posX] == team) rd++; else break;}for (int i = 1;i < chessBoardNum;i++) {posX = x - i;posY = y + i;if (posX < 0 || posY >= chessBoardNum) break;if (scene[posY][posX] == team) rd++; else break;}if (h >= vectoryNum || v >= vectoryNum || ld >= vectoryNum || rd >= vectoryNum) {stop(whiteBlack);return;}// 当前角色下棋完成,换一边currentTeam = !currentTeam;if (!currentTeam) AI.getAI().play();
}

Java制作五子棋人机对战相关推荐

  1. java五子棋人机对战_实现简单的人机对战五子棋(实践)

    五子棋人机对战实践项目 总的任务和目标 完成一个人机对战的五子棋项目,基本效果如下: 第一部分 Java绘图原理 1.   基本概念 像素,坐标 2.   组件自定义绘图原理 3.   Graphic ...

  2. 五子棋人机对战_10.带人机对战的五子棋程序

    今天我们带来一个带人机对战功能的五子棋程序.程序基于前面文章中的框架搭建,新增人机对战的策略.程序基于规则进行决策,不考虑禁手,玩家执黑子先行.棋盘规模采用15乘15,棋盘规模容易扩展,程序棋力中等, ...

  3. C语言 AI智能,五子棋 人机对战,人人对战

    C语言五子棋,人机对战,人人对战 chunli@Linux:~$ cat main.c # include<stdio.h> # include<string.h> # inc ...

  4. java五子棋联网对战,毕业设计-- 用JAVA实现五子棋网络对战系统

    毕业设计-- 用JAVA实现五子棋网络对战系统 本科生毕业设计(论文)本科生毕业设计(论文) 题 目 用 JAVA 实现五子棋网络对战系统 姓 名 xxxx 学 号 xxxxx 系 别 计算机工程系 ...

  5. C#实现五子棋人机对战的思路与源码分享

    前言 业余闲暇时,基于.netframework使用C#语言开发了一个五子棋人机对战的游戏,在此做些整理和分享,先上图. winform版 UI虽然很简洁,却花了些功夫,图形元素全动态生成,毕竟不是美 ...

  6. 人工智能 - 五子棋人机对战

    人工智能 - 五子棋人机对战 作者: jig    阅读人次: 6635    文章来源:本站原创    发布时间:2007-7-12     网友评论(8)条 原帖及讨论:http://bbs.bc ...

  7. java制作五子棋的论文,基于java的五子棋的设计与实现.docx

    摘要:随着社会的不断发展,我们的科技也不断的进步,现在我们的计算机也与我们的生活息息相关,这个时候 Internet能够让我们快速的知道自己想了解的知识.根据计算机的发展过程我们发现如今计算机应用的现 ...

  8. Python实现五子棋人机对战 | CSDN博文精选

    作者 | 吴小鹏 来源 | 数据札记倌(ID:Data_Groom) 五子棋是常见的一款小游戏,五子棋问题是人工智能中的一个经典问题.这篇文章主要介绍了Python版本五子棋的实现代码,大家可以做个参 ...

  9. 五子棋人机对战_原生JS+Canvas实现五子棋游戏

    原生JS+Canvas实现五子棋游戏 效果图 主要功能模块为: 1.人机对战功能 2.悔棋功能 3.撤销悔棋功能 二.代码详解 2.1 人机对战功能实现 从效果图可以看到,棋盘的横竖可以放的位置为15 ...

  10. python五子棋人机对战_Python:游戏:五子棋之人机对战

    原标题:Python:游戏:五子棋之人机对战 开端 画棋盘 首先肯定是要画出棋盘来,用 pygame 画出一个 19 × 19 或 15 × 15 的棋盘并不是什么难事,这在之前的文章中已经多次用到, ...

最新文章

  1. 美团十年,支撑最大规模外卖配送的一站式机器学习平台如何炼成?
  2. R语言在ggplot中使用变量指定柱状图的名称实战
  3. solver.prototxt参数说明(三)
  4. libudev-dev 错误 libudev1 (= 204-5ubuntu20) 但是 204-5ubuntu20.5 正要被安装 解决方法
  5. 机器学习之 weka学习(四)
  6. https open api_Web上的分享(Share)API
  7. DOS 入侵、群发邮件、心脏起搏器……病毒攻击简史!
  8. link中的rel表示relation(关系),表示了当前文档与 Web 集合中其他文档的关系
  9. 生产环境一次诡异的空指针问题,反转了4次
  10. 解决maven报错JAVA_HOME should point to a JDK not a JRE问题
  11. SpringBoot整合editormd富文本编辑器
  12. gRPC如何在Golang和PHP中进行实战?7步教你上手!
  13. 使用阿里云OSS对象存储搭建个人图床
  14. 群晖7.0搭建discuz论坛
  15. T9632 待机led 控制
  16. 数字电路器件——门电路——与门电路、或门电路、非门电路及实例
  17. 简单易懂的CRC校验原理阐述
  18. Manjaro 个人新装配置
  19. 电脑突然断电蓝屏导致Git错误的一种解决办法
  20. 环境配置 | ubuntun16.04下卸载matlab

热门文章

  1. 【数学建模】CUMCM-2017A CT系统参数标定及成像 思路及部分代码
  2. 余额宝不是吸血鬼,银行才是
  3. ADSL共享上网方式大总结(图)
  4. J2me调用wap浏览器
  5. VS2005中远程调试的配置方法
  6. web 打印插件 hiprint 使用
  7. Visio2003 下载
  8. Unity 修改asset store下载路径(win10)
  9. 谷歌地球替代软件、谷歌街景、谷歌三维城市模型查看全方案
  10. 软件质量管理体系 type:pdf_萧县iso14001环境管理体系各种荣誉资质