学习JAVA以来,这也算做的第一个小项目吧。下面来讲解具体的使用JAVA实现五子棋的过程。(所有功能实现之后我重新写了一个开始界面,这里就只介绍主要的实现步骤了)

1.游戏界面的实现

思路是:定义一个JFrame窗体,在定义一个JPanel面板,在JPanel面板上添加对应的功能按钮,然后再将JPanel面板固定在JFrame窗体上。这里建议直接用JPanel默认的流式布局,直接添加按钮就可以了,适当位置可以加入JLabel来调整位置。

面板按钮添加完毕之后是绘制棋盘,因为棋盘是一直存在的,所以必须要写在重绘paintComponent()方法中。

这里我定义了了一个drawChart(Graphics g)的方法

public void drawChart(Graphics g){

g.setColor(Color.black);

//画行for(int i=0;i

g.drawLine(X, Y+Size*i, X+Size*(Column-1), Y+Size*i);

}

//画列for(int j=0;j

g.drawLine(X+Size*j, Y, X+Size*j, Y+Size*(Row-1));

}

}

//其中Row Colunmn Size X Y 都是单独定义在一个接口(配置文件)中,均为常量,这样设置的目的是方便修改,

2.下棋功能的实现

我们已经绘制好了棋盘,下一步就是在上面下棋子了。

下棋子其实很简单,就是在面板上添加一个鼠标的监听,然后在你下的地方画一个实心的圆。

设置一个变量chessColor来判断所下棋子的颜色(我设置的是黑子是-1,白子是1),轮流交替

再设置一个和棋盘相对应的二维数组,在什么位置下棋就把对应的值设为黑子是-1,白子是1。在下棋前先判断,该位置chessExist[judgeX][judgeY]数组值是否为0。如果不为0则可以下棋子。

judgeX=(e.getX()-25)/Size;

judgeY=(e.getY()-25)/Size;

if((e.getX()-25)%40>=20)

judgeX++;

if((e.getY()-25)%40>=20)

judgeY++;

//该语句是用来纠正下的位置。因为不可能每一下都正好点到棋盘交线处

g.fillOval(judgeX*Size+X-Size/2,judgeY*Size+Y-Size/2,Size,Size);

//再将圆画出来,Size是圆的直径,这里要注意圆心位置要减去半径,XY为起始的坐标值

3.判断输赢的实现

基本思路是:单独创建一个类来判断输赢

这个类中需要将面板上的棋子数组传入,即cheeExist[i][j],

然后定义一个方法对该数组进行操作,返回1(白子胜利) 0(还没有决出胜负) -1(黑子胜利)

具体的判断方法又分为4个:分别是横向,纵向,左斜,右斜

4个方法分别返回连在一起的棋子的数量。

然后再总的判断4个方法,如果有一个方法返回了5.说明胜负已经出来了。就可以判断了,至于判断是黑子赢还是白子赢,只需要假如一个变量flag即可。这里不过多说明了。

public int level(int x,int y,Color color){

int numberwhite=0;

int numberblack=0;

//利用for循环分别判断横向向左和横向向右方向有无连续棋子,若不连续则跳出循环

for(int i=1;i

if(x+i>14) break;

if(chess[x+i][y]==1){

WhiteNumber++;

}

else break;

}

for(int i=1;i

if(x+i>14) break;

if(chess[x+i][y]==-1){

BlackNumber++;

}

else break;

}

for(int i=1;i

if(x-i<0) break;

if(chess[x-i][y]==1){

WhiteNumber++;

}

else break;

}

for(int i=1;i

if(x-i<0) break;

if(chess[x-i][y]==-1){

BlackNumber++;

}

else break;

}

//将最初的元素置一

numberblack=BlackNumber;

numberwhite=WhiteNumber;

BlackNumber=1;

WhiteNumber=1;

if(color==Color.BLACK)

return numberblack;

else return numberwhite;

}

基本的到这里就结束了。

后面我会介绍简单的AI算法。

多动动手,其实很容易(*^__^*)

需要源码的留言,欢迎大家前来交流。

java设计五子棋_JAVA 五子棋设计相关推荐

  1. 五子棋java百度文库_JAVA课程设计 五子棋(内附完整代码).doc

    JAVA课程设计 五子棋(内附完整代码) JAVA课程设计 设计题目:五子棋游戏 简要的介绍五子棋 五子棋的起源 五子棋,又被称为"连五子.五子连.串珠.五目.五目碰.五格.五石.五法.五联 ...

  2. java课程设计培训班_Java课程设计

    课程设计--博客作业五子棋(201521123009 张晨晨) •团队课程设计博客链接 •个人负责模块或任务说明 五子棋的绘制 棋盘的绘制 重新开始功能的实现 悔棋功能的实现 •自己的代码提交记录截图 ...

  3. java软件架构设计方案_Java软件架构设计慨论

    开始之初的架构设计决定着软件产品的生死存亡."好的开始相当于成功一半". 开始的架构设计也是最难的,需要调研同类产品的情况以及技术特征,了解当前世界上对这种产品所能提供的理论支持和 ...

  4. java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc

    JAVA课程设计_闹钟的设计与实现项目-报告_附源代码 第2章 MACROBUTTON AcceptAllChangesInDoc [双击此处键入1级标题] PAGE 2 - PAGE 1 - .. ...

  5. java课程广告语_java课程设计 广告牌.doc

    java课程设计 广告牌 广告屏的设计 班级:计算机系0703班 学号:14072400599 姓名:王俊 成绩: 设计描述: 做一个广告屏,显示一段文字,能够对文字的颜色.字体.字号等修改. 设计要 ...

  6. java游戏课程设计报告_java课程设计报告游戏_相关文章专题_写写帮文库

    时间:2019-05-14 00:00:44 作者:admin 课 程 设 计 课程名称 Java语言课程设计 题目名称 人事管理系统的设计与实现 学生学院 应用数学学院 专业班级 学 号 学生姓名 ...

  7. java 课程设计 计算器_JAVA课程设计-计算器(201521123028 李家俊)

    1.团队课程设计博客链接 2.个人负责模板或任务说明 主要负责计算器图形界面 包括操作按钮,菜单项以及输出面板的设计 3.自己的代码提交记录截图 4.自己负责模块或任务详细说明 代码分析: 主类中有如 ...

  8. c++五子棋_Java五子棋实现

    终于开始第一个小项目了哈哈,今天小编来介绍一个如何用Java来实现一个五子棋.那么,我们先来想一想我们的五子棋需要有些什么功能呢??? 棋盘界面的实现 人人对战.人机对战 开始新游戏.认输.悔棋的操作 ...

  9. java课设 五子棋_Java课程设计 ————五子棋 (个人博客)

    JAVA课程设计 五子棋(博客个人版) •团队课程设计博客链接 •个人负责模块或任务说明 1.主框架类:设置棋盘窗体,颜色等 2.isWin方法:判断胜负 •自己的代码提交记录截图 •自己负责模块或任 ...

  10. java设计五子棋_JAVA课程设计+五子棋(团队博客)

    JAVA课程设计 利用所学习的JAVA知识设计一个五子棋小游戏 1.团队名称.团队成员介绍(菜鸟三人组) 杨泽斌[组长]:201521123049 网络1512 叶文柠[组员]:20152112305 ...

最新文章

  1. 004_Bean标签
  2. java字符串转日期_JAVA字符串转日期或日期转字符串
  3. 小马哥spring编程核心思想_Spring源码高级笔记之——Spring核心思想
  4. 架构师必须掌握的各种编码:ASCII、ISO-8859-1、GB2312
  5. 大众eagit_试驾大众全新高尔夫GTI
  6. MyEclipse生成WAR包并在Tomcat下部署发布[转]
  7. Qt之QListView使用
  8. matlab里substring,ADT课堂第六讲-String Functions-substring
  9. 字符匹配算法之KMP
  10. 51单片机开发第一步 keilC51 以及 proteus 的安装
  11. 西南科技大学OJ题 11 And 11! 0259
  12. 计算机的源端口号是你根据,网络协议的判定是根据源端口还是目的端口?
  13. 我想加入阿里,我该怎么做
  14. cssdiv 斜线倾斜45度
  15. 刘备是怎样“融资”创业的?
  16. 26367411153598389kygoq
  17. html5视频制作,iH5最专业的H5制作工具
  18. 杀狗问题(帽子问题)
  19. Win7、Win8、Win10系统USB-Blaster驱动程序无法安装的解决办法
  20. 电子元器件分销业ERP系统供应链解决方案

热门文章

  1. [PlantSimulation]UserInterface(进阶)
  2. 常用的服务器操作命令
  3. CSS3选择器、边框、背景、按钮
  4. 2018ccpc-wannafly winter camp div2.Day3、Day4
  5. 注册表去除桌面快捷方式小箭头引起此电脑右键管理无法使用
  6. 黑莓手机屏幕发展历程对比 blackberry 各型号屏幕大小
  7. [更新]android平板手机 通过usb otg 来充电(以nexus 7 一代为例USB ROM)
  8. cpu性能评测(i5-4460,i5-4400,i5-3470,i5-2400s,i3-3220T,G860)
  9. JAVA计算机毕业设计道路桥梁工程知识文库系统Mybatis+系统+数据库+调试部署
  10. 2023年全国职业院校技能大赛-信息安全管理与评估-赛题 1