java五子棋.docx

上传人:b****8 文档编号:9820476 上传时间:2023-05-21 格式:DOCX 页数:23 大小:1.14MB
下载 相关 举报
java五子棋.docx_第1页
第1页 / 共23页
java五子棋.docx_第2页
第2页 / 共23页
java五子棋.docx_第3页
第3页 / 共23页
java五子棋.docx_第4页
第4页 / 共23页
java五子棋.docx_第5页
第5页 / 共23页
java五子棋.docx_第6页
第6页 / 共23页
java五子棋.docx_第7页
第7页 / 共23页
java五子棋.docx_第8页
第8页 / 共23页
java五子棋.docx_第9页
第9页 / 共23页
java五子棋.docx_第10页
第10页 / 共23页
java五子棋.docx_第11页
第11页 / 共23页
java五子棋.docx_第12页
第12页 / 共23页
java五子棋.docx_第13页
第13页 / 共23页
java五子棋.docx_第14页
第14页 / 共23页
java五子棋.docx_第15页
第15页 / 共23页
java五子棋.docx_第16页
第16页 / 共23页
java五子棋.docx_第17页
第17页 / 共23页
java五子棋.docx_第18页
第18页 / 共23页
java五子棋.docx_第19页
第19页 / 共23页
java五子棋.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java五子棋.docx

《java五子棋.docx》由会员分享,可在线阅读,更多相关《java五子棋.docx(23页珍藏版)》请在冰点文库上搜索。

java五子棋.docx

java五子棋

《Java语言程序设计》

实训报告

 

实训题目:

java五子棋小游戏

专业:

计算机网络

班级:

08计算机网络

(2)班

姓名:

XXX

指导教师:

XXX

 

二00九年11月27日

目录

 

1.实训目的3

2.实训题目描述和要求3

2.1实训题目描述3

2.2实训要求3

3.实训报告内容5

3.1主框架5

3.2画背景及棋盘、棋子及说明信息等8

3.3实现鼠标侦听及各按钮功能10

3.4判断五连及时间走动17

4.总结21

4.1结论21

4.2心得21

参考书目:

22

实训指导教师评语23

 

1.实训目的

《Java程序设计》课程实训是学习Java程序开发不可缺少的实践环节。

它可以将理论应用于实践,将所学知识与实际相结合,加深对所学知识的理解和应用。

学完此门课程后,能使用Java开发小型应用程序。

2.实训题目描述和要求

2.1实训题目描述

实训题目:

java五子棋游戏

描述:

通过java的swing组件,实现五子棋简单的双人对战,并通过内部条件判断实现输赢的判断及双方的下棋时间的控制。

2.2实训要求

进程安排:

(1):

游戏界面的实现

(2):

棋盘的绘制及黑白棋子的判定

(3):

完成判断某一横行是否连成五子及所有方向是否连成五子的功能

(4):

防止刷屏及几个简单按钮功能的实现

(5):

完成最后“游戏设置”按钮的实现

游戏功能:

(1)游戏界面:

(2):

判断输赢:

(3):

游戏超时:

3.实训报告内容

3.1主框架

packagechengxu.zhu.chengxuti;

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Graphics;

importjava.awt.Image;

importjava.awt.Toolkit;

importjava.awt.event.MouseEvent;

importjava.awt.event.MouseListener;

importjava.awt.image.BufferedImage;

importjava.io.File.*;

importjava.io.File;

importjava.io.IOException;

importjavax.imageio.ImageIO;

importjavax.swing.JFrame;

importjavax.swing.JOptionPane;

publicclassFiveChessextendsJFrameimplementsMouseListener,Runnable{

//获取电脑屏幕的宽度与高度

intweight=Toolkit.getDefaultToolkit().getScreenSize().width;

intheight=Toolkit.getDefaultToolkit().getScreenSize().height;

//BufferedImageimg=null;

//定义一个Image类型的变量

Imageimage;

//获取鼠标的位置

intx,x1=490;

inty,y1=435;

//用来保存棋子

intqizhi[][]=newint[20][20];

//用来判断所下棋子颜色

booleanheibai=true;

//用来判断游戏是否结束(即:

是否五子相连)

booleanyouxikaishi=false;

//intjiaodian[][]=newint[18][18];

//保存最多拥有多少时间(秒)

intmaxTime=0;

//做倒计时的线程类

Threadt=newThread(this);

//保存黑方与白方的剩余时间

intblackTime=0;

intwhiteTime=0;

//保存双方剩余时间的显示信息

StringblackMessage="无限制";

StringwhiteMessage="无限制";

publicFiveChess(){

//隐藏标题栏

this.setUndecorated(true);

//给窗体命名

this.setTitle("实训作业------>>五子棋");

//设置窗体大小

this.setSize(700,500);

//this.setLocation((weight-500)/2,(height-500)/2);

//窗体始终在最前端(始终d置顶)

this.setAlwaysOnTop(true);

//设置初始位置

this.setLocation((weight-700)/2,(height-500)/2);

//禁止改变窗体大小

this.setResizable(false);

//设置关闭为完全关闭

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//重画背景

this.repaint();

//添加鼠标侦听事件

this.addMouseListener(this);

t.start();

t.suspend();

//通过前面定义的Image类型变量获取图像

image=this.getToolkit().getImage("../image/aa.jpg");

//设置窗口为可见

this.setVisible(true);

/*try{

img=ImageIO.read(newFile("chessbackground.jpg"));

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}*/

}

publicstaticvoidmain(String[]arges){

//主程序开始

newFiveChess();

}

}

3.2画背景及棋盘、棋子及说明信息等

publicvoidpaint(Graphicsg){

//防止闪屏

BufferedImagebi=newBufferedImage(700,500,BufferedImage.TYPE_INT_RGB);

//画出读入的图像

g.drawImage(image,0,0,this);

//输出时间信息

g.setColor(Color.WHITE);

g.setFont(newFont("宋体",0,14));

g.drawString("黑方时间:

"+blackMessage,490,460);

g.drawString("白方时间:

"+whiteMessage,490,480);

//画棋盘

for(inti=0;i<18;i++){

g.setColor(Color.BLUE);

g.drawLine(75+i*22,60,75+i*22,434);

g.drawLine(75,60+i*22,449,60+i*22);

}

//画棋盘的9个黑点

g.fillOval(138,123,6,6);

g.fillOval(248,123,6,6);

g.fillOval(358,123,6,6);

g.fillOval(138,233,6,6);

g.fillOval(248,233,6,6);

g.fillOval(358,233,6,6);

g.fillOval(138,343,6,6);

g.fillOval(248,343,6,6);

g.fillOval(358,343,6,6);

g.setColor(Color.RED);

g.setFont(newFont("宋体",10,30));

g.drawString("★",x1,y1);

for(inti=0;i<18;i++){

for(intj=0;j<18;j++){

if(qizhi[i][j]==1){

g.setColor(Color.BLACK);

inttempX=i*22+60;

inttempY=j*22+60;

g.fillOval(tempX+7,tempY-7,14,14);

}

if(qizhi[i][j]==2){

inttempX=i*22+60;

inttempY=j*22+60;

g.setColor(Color.WHITE);

g.fillOval(tempX+7,tempY-7,14,14);

g.setColor(Color.BLACK);

g.drawOval(tempX+7,tempY-7,14,14);

}

}

}

}

3.3实现鼠标侦听及各按钮功能

publicvoidmouseClicked(MouseEvente){

//游戏设置

if(e.getX()>=546&&e.getX()<=695&&e.getY()>=192&&e.getY()<=236){

Stringinput=JOptionPane.showInputDialog("请输入游戏的最大时间(单位:

分钟),如果输入0,表示没有时间限制:

");

try{

maxTime=Integer.parseInt(input)*60;

if(maxTime<0){

JOptionPane.showMessageDialog(this,"请输入正确信息,不允许输入负数!

");

}

if(maxTime==0){

intresult=JOptionPane.showConfirmDialog(this,

"设置完成,是否重新开始游戏?

");

if(result==0){

for(inti=0;i<19;i++){

for(intj=0;j<19;j++){

qizhi[i][j]=0;

}

}

//另一种方式allChess=newint[19][19];

//message="黑方先行";

heibai=true;

blackTime=maxTime;

whiteTime=maxTime;

blackMessage="无限制";

whiteMessage="无限制";

this.youxikaishi=true;

this.repaint();

}

}

if(maxTime>0){

intresult=JOptionPane.showConfirmDialog(this,

"设置完成,是否重新开始游戏?

");

if(result==0){

for(inti=0;i<19;i++){

for(intj=0;j<19;j++){

qizhi[i][j]=0;

x1=490;

y1=435;

}

}

//另一种方式allChess=newint[19][19];

//message="黑方先行";

heibai=true;

blackTime=maxTime;

whiteTime=maxTime;

blackMessage=maxTime/3600+":

"

+(maxTime/60-maxTime/3600*60)+":

"

+(maxTime-maxTime/60*60);

whiteMessage=maxTime/3600+":

"

+(maxTime/60-maxTime/3600*60)+":

"

+(maxTime-maxTime/60*60);

t.resume();

this.youxikaishi=true;

this.repaint();

}else{

blackTime=maxTime;

whiteTime=maxTime;

blackMessage=maxTime/3600+":

"

+(maxTime/60-maxTime/3600*60)+":

"

+(maxTime-maxTime/60*60);

whiteMessage=maxTime/3600+":

"

+(maxTime/60-maxTime/3600*60)+":

"

+(maxTime-maxTime/60*60);

t.resume();

}

}

}catch(NumberFormatExceptione1){

//TODOAuto-generatedcatchblock

JOptionPane.showMessageDialog(this,"请正确输入信息!

");

}

}

//关于

if(e.getX()>=600&&e.getX()<=678&&e.getY()>=74

&&e.getY()<=115){

JOptionPane.showMessageDialog(this,"制作人:

\nQQ:

841043598\n游戏名:

java五子棋");

}

//说明

if(e.getX()>=543&&e.getX()<=692&&e.getY()>=251

&&e.getY()<=291){

JOptionPane.showMessageDialog(this,"五子棋,每人下一次,分别为白子与黑子,\n若谁最先五子相连,谁获胜^_^");

}

//退出

if(e.getX()>=606&&e.getX()<=682&&e.getY()>=370

&&e.getY()<=412){

inttuichu=JOptionPane.showConfirmDialog(this,"游戏结束");

if(tuichu==0){

System.exit(0);

}

}

//开始游戏

if(e.getX()>=544&&e.getX()<=697&&e.getY()>=141

&&e.getY()<=177){

intresult=JOptionPane.showConfirmDialog(this,"是否开始游戏?

");

if(result==0){

//现在重新开始游戏

//重新开始所要做的操作:

1)把棋盘清空,allChess这个数组中全部数据归0.

//2)将游戏信息:

的显示改回到开始位置

//3)将下一步下棋的改为黑方

for(inti=0;i<18;i++){

for(intj=0;j<18;j++){

qizhi[i][j]=0;

}

}

//另一种方式allChess=newint[19][19];

heibai=true;

x1=490;

y1=435;

blackTime=maxTime;

whiteTime=maxTime;

if(maxTime>0){

blackMessage=maxTime/3600+":

"

+(maxTime/60-maxTime/3600*60)+":

"

+(maxTime-maxTime/60*60);

whiteMessage=maxTime/3600+":

"

+(maxTime/60-maxTime/3600*60)+":

"

+(maxTime-maxTime/60*60);

t.resume();

}else{

blackMessage="无限制";

whiteMessage="无限制";

}

this.youxikaishi=true;

this.repaint();

}

}

if(e.getX()>=605&&e.getX()<=685&&e.getY()>=313

&&e.getY()<=350){

intresult=JOptionPane.showConfirmDialog(this,"是否确认认输?

");

if(result==0){

if(heibai){

JOptionPane.showMessageDialog(this,"黑方已经认输,游戏结束!

");

}else{

JOptionPane.showMessageDialog(this,"白方已经认输,游戏结束!

");

}

youxikaishi=false;

}

}

}

@Override

publicvoidmouseEntered(MouseEvente){

//TODOAuto-generatedmethodstub

}

@Override

publicvoidmouseExited(MouseEvente){

//TODOAuto-generatedmethodstub

}

@Override

publicvoidmousePressed(MouseEvente){

//TODOAuto-generatedmethodstub

//如果开始为真则开始游戏,反之结束游戏

if(youxikaishi==true){

//获取鼠标位置

x=e.getX();

y=e.getY();

//如果鼠标点击在棋盘范围内则执行下面条件

if(x>70&&x<455&&y>55&&y<440){

//得到棋盘各个相交点的位置

x=(x-75)/22;;

y=(y-60)/22;

//判断该点是否有落子

if(qizhi[x][y]==0){

//判断下黑棋还是白棋

if(heibai==true){

qizhi[x][y]=1;

heibai=false;

x1=490;

y1=435;

//this.setFont(newFont("宋体",Font.BOLD,0));

this.repaint();

}

else{

qizhi[x][y]=2;

heibai=true;

x1=490;

y1=135;

this.repaint();

}

}

else{

JOptionPane.showMessageDialog(this,"当前位置已经有棋子,您不能落子到此处,请重新落子!

");

}

//判断是否五连(即:

是否游戏结束)

booleanwulian=this.wulianzhi();

if(wulian==true){

JOptionPane.showMessageDialog(this,"游戏结束,"+(qizhi[x][y]==1?

"黑方":

"白方")+"获胜!

");

youxikaishi=false;

}

}

}else{

x=e.getX();

y=e.getY();

if(x>70&&x<455&&y>55&&y<440){

JOptionPane.showMessageDialog(this,"请开始游戏");

}

}

}

publicvoidmouseReleased(MouseEvente){

//TODOAuto-generatedmethodstub

}

3.4判断五连及时间走动

publicbooleanwulianzhi(){

booleanwulianzhi=false;

intxianglianshu=1;

intyanse=qizhi[x][y];

xianglianshu=this.checkCount(1,0,yanse);

if(xianglianshu>=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2