java设计五子棋_JAVA 五子棋设计
学习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 五子棋设计相关推荐
- 五子棋java百度文库_JAVA课程设计 五子棋(内附完整代码).doc
JAVA课程设计 五子棋(内附完整代码) JAVA课程设计 设计题目:五子棋游戏 简要的介绍五子棋 五子棋的起源 五子棋,又被称为"连五子.五子连.串珠.五目.五目碰.五格.五石.五法.五联 ...
- java课程设计培训班_Java课程设计
课程设计--博客作业五子棋(201521123009 张晨晨) •团队课程设计博客链接 •个人负责模块或任务说明 五子棋的绘制 棋盘的绘制 重新开始功能的实现 悔棋功能的实现 •自己的代码提交记录截图 ...
- java软件架构设计方案_Java软件架构设计慨论
开始之初的架构设计决定着软件产品的生死存亡."好的开始相当于成功一半". 开始的架构设计也是最难的,需要调研同类产品的情况以及技术特征,了解当前世界上对这种产品所能提供的理论支持和 ...
- java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc
JAVA课程设计_闹钟的设计与实现项目-报告_附源代码 第2章 MACROBUTTON AcceptAllChangesInDoc [双击此处键入1级标题] PAGE 2 - PAGE 1 - .. ...
- java课程广告语_java课程设计 广告牌.doc
java课程设计 广告牌 广告屏的设计 班级:计算机系0703班 学号:14072400599 姓名:王俊 成绩: 设计描述: 做一个广告屏,显示一段文字,能够对文字的颜色.字体.字号等修改. 设计要 ...
- java游戏课程设计报告_java课程设计报告游戏_相关文章专题_写写帮文库
时间:2019-05-14 00:00:44 作者:admin 课 程 设 计 课程名称 Java语言课程设计 题目名称 人事管理系统的设计与实现 学生学院 应用数学学院 专业班级 学 号 学生姓名 ...
- java 课程设计 计算器_JAVA课程设计-计算器(201521123028 李家俊)
1.团队课程设计博客链接 2.个人负责模板或任务说明 主要负责计算器图形界面 包括操作按钮,菜单项以及输出面板的设计 3.自己的代码提交记录截图 4.自己负责模块或任务详细说明 代码分析: 主类中有如 ...
- c++五子棋_Java五子棋实现
终于开始第一个小项目了哈哈,今天小编来介绍一个如何用Java来实现一个五子棋.那么,我们先来想一想我们的五子棋需要有些什么功能呢??? 棋盘界面的实现 人人对战.人机对战 开始新游戏.认输.悔棋的操作 ...
- java课设 五子棋_Java课程设计 ————五子棋 (个人博客)
JAVA课程设计 五子棋(博客个人版) •团队课程设计博客链接 •个人负责模块或任务说明 1.主框架类:设置棋盘窗体,颜色等 2.isWin方法:判断胜负 •自己的代码提交记录截图 •自己负责模块或任 ...
- java设计五子棋_JAVA课程设计+五子棋(团队博客)
JAVA课程设计 利用所学习的JAVA知识设计一个五子棋小游戏 1.团队名称.团队成员介绍(菜鸟三人组) 杨泽斌[组长]:201521123049 网络1512 叶文柠[组员]:20152112305 ...
最新文章
- 004_Bean标签
- java字符串转日期_JAVA字符串转日期或日期转字符串
- 小马哥spring编程核心思想_Spring源码高级笔记之——Spring核心思想
- 架构师必须掌握的各种编码:ASCII、ISO-8859-1、GB2312
- 大众eagit_试驾大众全新高尔夫GTI
- MyEclipse生成WAR包并在Tomcat下部署发布[转]
- Qt之QListView使用
- matlab里substring,ADT课堂第六讲-String Functions-substring
- 字符匹配算法之KMP
- 51单片机开发第一步 keilC51 以及 proteus 的安装
- 西南科技大学OJ题 11 And 11! 0259
- 计算机的源端口号是你根据,网络协议的判定是根据源端口还是目的端口?
- 我想加入阿里,我该怎么做
- cssdiv 斜线倾斜45度
- 刘备是怎样“融资”创业的?
- 26367411153598389kygoq
- html5视频制作,iH5最专业的H5制作工具
- 杀狗问题(帽子问题)
- Win7、Win8、Win10系统USB-Blaster驱动程序无法安装的解决办法
- 电子元器件分销业ERP系统供应链解决方案
热门文章
- [PlantSimulation]UserInterface(进阶)
- 常用的服务器操作命令
- CSS3选择器、边框、背景、按钮
- 2018ccpc-wannafly winter camp div2.Day3、Day4
- 注册表去除桌面快捷方式小箭头引起此电脑右键管理无法使用
- 黑莓手机屏幕发展历程对比 blackberry 各型号屏幕大小
- [更新]android平板手机 通过usb otg 来充电(以nexus 7 一代为例USB ROM)
- cpu性能评测(i5-4460,i5-4400,i5-3470,i5-2400s,i3-3220T,G860)
- JAVA计算机毕业设计道路桥梁工程知识文库系统Mybatis+系统+数据库+调试部署
- 2023年全国职业院校技能大赛-信息安全管理与评估-赛题 1