JAVA课设--五子棋--团队博客
1 团队名称、团队成员介绍
徐璐琳 网络1511班 201521123010
祁泽文 网络1511班 201521123011
张晨晨 网络1511班 201521123009
2 项目git地址 团队项目码云地址

3 项目git提交记录截图(要体现出每个人的提交记录、提交说明),老师将点击进去重点考核。



4 项目功能架构图与主要功能流程图
架构图:

流程图:

5 项目运行截图




6 项目关键代码
此程序最关键的是输赢判断的算法,以及下棋换色、落子。故关键代码如下:
public boolean isWin(int x,int y,boolean isColor){
char ch=Chess[x][y];
/* 横向判断 ,先左后右 */
int LX = x;
while(LX>=0 && Chess[LX][y]==ch){
LX --;
}
int LNum = 0;//统计横向相同的棋子数
LX ++;
while(LX<Chess.length && Chess[LX][y]==ch){
LNum ++;
LX ++;
}
/* 纵向判断 ,先上后下 */
int RY = y;
while(RY>=0 && Chess[x][RY]==ch){
RY --;//坐标位置下降
}
int RNum = 0;//统计纵向相同的棋子数
RY ++;
while(RY<Chess[x].length && Chess[x][RY]==ch){
RY ++;
RNum ++;
}
/* 左下右上判断 ,*/
int LDX = x;
int RUY = y;
while(LDX>=0 && RUY<Chess.length && Chess[LDX][RUY]==ch){
LDX --;
RUY ++;
}
int LDNum = 0;
LDX ++;
RUY --;
while(LDX<Chess.length && RUY>=0 && Chess[LDX][RUY]==ch){
LDNum ++;
LDX ++;
RUY --;
}
/* 右上左下判断 */
int RUX = x;
int LDY = y;
while(RUX>=0 && LDY>=0 && Chess[RUX][LDY]==ch){
RUX --;
LDY --;
}
int RUNum = 0;
RUX ++;
LDY ++;
while(RUX>=0 && LDY<Chess.length && Chess[RUX][LDY]==ch){
RUX ++;
LDY ++;
RUNum ++;
}
if(RNum>=5||LNum>=5||RUNum>=5||LDNum>=5){
return true;
}
return false;
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {//鼠标点击事件处理过程, 在源组件上按下鼠标按钮
if(gameOver) return;
/*int*/ click_x = e.getX();
/*int*/ click_y = e.getY();
int chess_x = Math.round((float)(click_x-20)/gap);//画一个区域这个区域都为对应的棋子坐标点
int chess_y = Math.round((float)(click_y-20)/gap);
click_X = chess_x;
click_Y = chess_y;
System.out.println("选中"+click_x+click_y);
if((isBlack==true&&Chess[chess_x][chess_y]=='0' && flag == false )||(flag == true &&isBlack==false&&Chess[chess_x][chess_y]=='0')){
Chess[chess_x][chess_y] = '2';
isBlack = false;//换为白子
flag = false;
}
if((isBlack==false&&Chess[chess_x][chess_y]=='0'&& flag == false ) || ( flag == true &&isBlack==true &&Chess[chess_x][chess_y]=='0')){
Chess[chess_x][chess_y] = '1';
isBlack = true;//换为黑子
flag = false;
}
repaint();//重新扫描,图像修改
if(isWin(chess_x,chess_y,isBlack)){
if(isBlack){
JOptionPane.showMessageDialog(null,"白子赢了");
}else{
JOptionPane.showMessageDialog(null,"黑子赢了");
}
gameOver=true;
}
}
public void mouseReleased(MouseEvent e) {
}// 释放源组件上的鼠标按钮
public void mouseEntered(MouseEvent e) {
}//在鼠标进入源组件之后被调用
public void mouseExited(MouseEvent e) {
}
public void restartGame(){
//清除棋子
for(int i=0;i<Chess.length;i++){
for(int j=0;j<Chess[i].length;j++){
Chess[i][j]='0';//棋子的坐标 令棋子为空
}
}
//恢复游戏相关的变量值
isBlack=true;
gameOver=false; //游戏是否结束
repaint();
}
public void goback(){
flag = true;
System.out.println("清除"+click_x+click_y);
int chess_x = Math.round((float)(click_x-20)/gap);
int chess_y = Math.round((float)(click_y-20)/gap);
click_X = chess_x;
click_Y = chess_y;
repaint();
Chess[chess_x][chess_y] = '0';
}
7 尚待改进或者新的想法
因为时间太仓促,所以界面不够完善。还有很多可以改进的地方,之后也想做得更精良。例如想尝试做人机版、联机版、增加认输、等级功能、游戏计时等功能。
8 团队成员任务分配,团队成员课程设计博客链接
| 姓名 | 任务分配 | 博客链接 |
|---|---|---|
| 徐璐琳(组长) | 鼠标事件,主函数 | 链接:http://www.cnblogs.com/abonxxxu/p/7053331.html |
| 祁泽文 | 输赢判断算法,界面设置 | 链接:http://www.cnblogs.com/jiaowoxiaotiancai/p/7061613.html |
| 张晨晨 | 绘制棋盘,按钮功能 | 链接:http://www.cnblogs.com/z1450429983/p/7052856.html |
JAVA课设--五子棋--团队博客的更多相关文章
- JAVA课设---五子棋
1.团队博客链接 JAVA课设-五子棋-团队博客 2.个人负责模块: ①对鼠标事件的处理 , 此模块需处理五子棋的放置问题.颜色转换问题.以及当五子连线时弹出窗口显示结果. ②对MainFrame中主 ...
- java课设 五子棋代码编写(团队)
1. 团队课程设计博客链接 http://www.cnblogs.com/yzb123/p/7063424.html 2.个人责模块或任务说明 1.主函数编写,设置图形界面 2,设置功能按钮 3.使用 ...
- Java课程设计——计算器团队博客
1.团队名称.团队成员介绍(需要有照片) 1.1团队名称 707 1.2团队成员介绍 谢元将:组长 罗登宇:组员 王华俊:组员 2. 项目git地址 谢元将 罗登宇 王华俊 3. 项目git提交记录截 ...
- JAVA课设个人博客--多源数据教学管理系统
JAVA课设个人博客--多源数据教学管理系统 1.团队课程设计博客链接 https://www.cnblogs.com/hq9-/p/10278470.html 2. 个人负责模块或任务说明 主要模块 ...
- java课程设计--猜数字(团队博客)
java课程设计--猜数字(团队博客) 1.团队名称以及团队成员介绍 团队名称:cz 团队成员:陈伟泽,詹昌锦 团队照片: 2.项目git地址 http://git.oschina.net/Devil ...
- JAVA课程设计——团队博客
JAVA课程设计--团队博客 1. 团队名称.团队成员介绍(需要有照片) 团队名称:"小羊吃蓝莓"小游戏 团队成员介绍: 成员 班级 学号 廖怡洁 网络1513 201521123 ...
- Java课程设计 学生基本信息管理系统 团队博客
学生基本信息管理系统团队博客 项目git地址 https://git.oschina.net/Java_goddess/kechengsheji 项目git提交记录截图 项目功能架构图与主要功能流程图 ...
- 《Java 程序设计》团队博客第十一周(第一次)
<Java 程序设计>团队博客第十一周(第一次) 团队项目 1.项目内容.目标 项目内容 本组的团队项目准备实现一个有关于大富翁有的游戏程序. 大富翁游戏,以经营权为主要的游戏方式,通过购 ...
- 2018-2019学年第一学期Java课设--魔塔
目录 Magic-Towers 一.团队名称.团队成员介绍.任务分配 团队名称:MoTa 团队成员介绍 任务分配 二.项目简介 三.项目采用技术 四.项目亮点 主界面显示主要信息功能 游戏动画 五.项 ...
随机推荐
- hibernate中对象的3种状态----瞬时态、持久态、脱管态
Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ...
- 关于MySQL buffer pool的预读机制
预读机制 两种预读算法 1.线性预读 2.随机预读 对预读的监控 一.预读机制 InnoDB在I/O的优化上有个比较重要的特性为预读,预读请求是一个i/o请求,它会异步地在缓冲池中预先回迁多个页面,预 ...
- java8之stream
lambda表达式是stream的基础,初学者建议先学习lambda表达式,http://www.cnblogs.com/andywithu/p/7357069.html 1.初识stream 先来一 ...
- vue小组件练习之文字居中对齐组件
时隔多月,继续学习Vue,这次是一个组件的制作过程 先让我们来看一下组件的预期效果 上图为公司自营的一个微信商城的某一部分截图,可以看到红框内部分的文字多行与单行是居中对齐的,我们现在要做的就是使用V ...
- 一句话搞定-phpStudy安装yaf扩展
首先下载phpStudyX64位的,然后傻瓜式安装,安装完下载yaf,由于yaf扩展的网站在国外很难下载,需要FQ,所以我这里下载了yaf5.6nts.zip,解压后把php_yaf.dll这个文件粘 ...
- Windows10-安装笔记
Windows10-安装笔记... ------------------------------ ---------------------------------------- 加载镜像.加载完后. ...
- 关于 struts2 Unable to load configuration. - action
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "- ...
- Spring中@Value标签的使用详解
1.@Value标签 由于Spring对通过IOC的方式对对象进行统一管理,所以对任何对象而言,其生成方法均由Spring管理.传统的方法是通过XML配置每一个Bean,并对这个Bean的所有Fiel ...
- mysql数据库基本操作以及获取数据库强大帮助文档
MySQL数据库强大帮助文档 mysql 中help等价于\h或者? mysql> ? create database;(查看创建数据库的语法) mysql> ? drop databas ...
- 南昌招聘.net开发大牛
职位诱惑: 12年名企5险1金齐全+WEB&移动研发=丰厚回报 职位描述: 聘精通web开发成员共同成就事业! 中国领先的WEB内核 研发机构.华中地区唯一自主CMS研发厂商.江西最大的网站服 ...


