五子棋JAVA语言课程设计报告.docx

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

五子棋JAVA语言课程设计报告.docx

《五子棋JAVA语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《五子棋JAVA语言课程设计报告.docx(27页珍藏版)》请在冰点文库上搜索。

五子棋JAVA语言课程设计报告.docx

五子棋JAVA语言课程设计报告

 

《Java语言程序设计》

课程设计报告

 

学院:

信息科学技术学院

班级:

软件技术2班

**********

学号:

**********

********

课设时间:

2014-03-17至2014-03-26

二O一四年三月二十六日

 

一、设计要求…………………………………………....2

二、设计步骤…………………………………………....2

2.1程序流程图………………………….…………...2

2.2程序的功能分配……………………….………...3

三、设计正文…………………………………………....6

3.1创建棋盘类……………………………………….6

3.2判断输赢功能实现……………………………….9

3.3测试结果……………………………………….....9

四、心得体会…………………………………………...12

五、参考文献…………………………………………...12

附录(源代码)……………………………………….13

 

一、课程设计要求

设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能:

1.选择落子的先后顺序

2.重置棋盘

3.刷新重新开始

4.退出提示

并且规定退出者判为负,但退出过程中要有提示。

以防不小心点错了。

最后判断某一方是否为五子连珠。

实现一个简单的多用户五子棋的游戏程序,包括如下两个界面

(1)选择对弈桌(执黑、执白)。

(2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);

 

二、设计步骤

2.1程序流程图

2.2程序的功能分配

a.棋盘的绘制

publicvoiddraw_qipan(GraphicsG)//画棋盘15*15{

G.setColor(Color.lightGray);

G.fill3DRect(10,10,300,300,true);

G.setColor(Color.black);

for(inti=1;i<16;i++){

G.drawLine(20,20*i,300,20*i);

G.drawLine(20*i,20,20*i,300);

}

}

b.添加按钮

Buttonb1=newButton("开始");

Buttonb2=newButton("重置游戏");

LabellblWin=newLabel("");

CheckboxckbHB[]=newCheckbox[3];

Buttonexist=newButton("退出");

publicvoidinit(){

ckbHB[0]=newCheckbox("执白",ckgHB,false);

ckbHB[1]=newCheckbox("执黑",ckgHB,false);

ckbHB[2]=newCheckbox("观看",ckgHB,false);

}

c.鼠标棋子的触发事件

publicvoidmouseClicked(MouseEvente){

Graphicsg=getGraphics();

intx1,y1;

x1=e.getX();

y1=e.getY();

if(e.getX()<20||e.getX()>300||e.getY()<20||e.getY()>300){

return;

}

if(x1%20>10){

x1+=10;

}

if(y1%20>10){

y1+=10;

}

x1=x1/20*20;

y1=y1/20*20;

set_Qizi(x1,y1);

m*=(-1);

}

d.按钮的触发事件

publicvoidactionPerformed(ActionEvente){

Graphicsg=getGraphics();

if(e.getSource()==b1){

Game_start();

}

else{

Game_re();

}

if(e.getSource()==exist){

Game_re();

lblWin.setText(Get_qizi_color(color_Qizi)+"输了!

");

intGame_Start=0;

}

e.判断落子的位置及画出相应的黑白棋子

publicvoidset_Qizi(intx,inty)//落子{

if(intGame_Start==0)//判断游戏未开始{

return;

}

if(intGame_Body[x/20][y/20]!

=0){

return;

}

Graphicsg=getGraphics();

if(color_Qizi==1)//判断黑子还是白子{

g.setColor(Color.black);

color_Qizi=0;

}

else{

g.setColor(Color.white);

color_Qizi=1;

}

g.fillOval(x-10,y-10,20,20);

intGame_Body[x/20][y/20]=color_Qizi+1;

f.判断胜负

if(Game_win_1(x/20,y/20))//判断输赢1{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_2(x/20,y/20))//判断输赢2{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_3(x/20,y/20))//判断输赢3{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_4(x/20,y/20))//判断输赢4{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

}

 

三、设计正文

3.1创建棋盘类

PublicclassWcyChessextendsAppletimplementsActionListener,MouseListener,MouseMotionListener,ItemListener{

intcolor_Qizi=0;//旗子的颜色标识0:

白子1:

黑子

intintGame_Start=0;//游戏开始标志0未开始1游戏中

intintGame_Body[][]=newint[16][16];//设置棋盘棋子状态

intm=-1;

Buttonb1=newButton("开始");

Buttonb2=newButton("重置游戏");

LabellblWin=newLabel("");

CheckboxckbHB[]=newCheckbox[3];

Buttonexist=newButton("退出");

CheckboxGroupckgHB=newCheckboxGroup();

NetchatClientchat=newNetchatClient();

publicvoidinit(){

setLayout(null);

addMouseListener(this);

add(b1);

b1.setBounds(330,50,80,30);

b1.addActionListener(this);

add(b2);

b2.setBounds(330,90,80,30);

b2.addActionListener(this);

ckbHB[0]=newCheckbox("执白",ckgHB,false);

ckbHB[0].setBounds(320,20,60,30);

ckbHB[1]=newCheckbox("执黑",ckgHB,false);

ckbHB[1].setBounds(380,20,60,30);

ckbHB[2]=newCheckbox("观看",ckgHB,false);

add(ckbHB[0]);

add(ckbHB[1]);

add(ckbHB[2]);

ckbHB[0].addItemListener(this);

ckbHB[1].addItemListener(this);

add(lblWin);

lblWin.setBounds(330,180,80,30);

lblWin.setBackground(Color.red);

lblWin.setText("胜利者!

");//没有显示?

ckbHB[2].setBounds(440,20,60,30);

add(exist);

exist.setBounds(330,130,80,30);

exist.addActionListener(this);

//add(chat);chat.setBounds(20,500,300,300);

chat.frame();

chat.setVisible(true);

Game_start_csh();

setSize(500,600);

setVisible(true);

}

publicvoiditemStateChanged(ItemEvente){

if(ckbHB[0].getState())//选择黑子还是白子{

color_Qizi=0;

}

else{

color_Qizi=1;

}

}

publicvoidmousePressed(MouseEvente){}

publicvoidmouseClicked(MouseEvente){

Graphicsg=getGraphics();

intx1,y1;

x1=e.getX();

y1=e.getY();

if(e.getX()<20||e.getX()>300||e.getY()<20||e.getY()>300){

return;

}

if(x1%20>10){

x1+=10;

}

if(y1%20>10){

y1+=10;

}

x1=x1/20*20;

y1=y1/20*20;

set_Qizi(x1,y1);

m*=(-1);

}

publicvoidactionPerformed(ActionEvente){

Graphicsg=getGraphics();

if(e.getSource()==b1){

Game_start();

}

else{

Game_re();

}

if(e.getSource()==exist){

Game_re();

lblWin.setText(Get_qizi_color(color_Qizi)+"输了!

");

intGame_Start=0;

}

}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmouseReleased(MouseEvente){}

publicvoidmouseDragged(MouseEvente){}

publicvoidmouseMoved(MouseEvente){}

publicvoidpaint(Graphicsg){

draw_qipan(g);

}

 

3.2判断输赢功能实现

if(Game_win_1(x/20,y/20)){//判断输赢1

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_2(x/20,y/20)){//判断输赢2

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_3(x/20,y/20))//判断输赢3{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_4(x/20,y/20))//判断输赢4{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

 

3.3测试结果

a.进入游戏界面

游戏开始的界面有三个选择项,用户可以选择相应的角色,选择

完毕后点击开始进入游戏。

 

b.选择角色,开始下棋

首先达到五个棋子连在一块的赢了,并在红色区域显示谁赢了!

c.下完后,重新开始

下完一盘后游戏停止,点击重新开始,界面回到初始界面,选择角色继续游戏.

d.游戏中点退出,自动判输

在下棋的过程当中谁中途退出,即点击退出,系统自动判断谁输

四、课程设计心得体会

 

通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。

这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。

它还让我学会了在网上查阅那些无限的资料。

由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。

对于文中出现的不足和系统中出现的问题敬请老师指导。

 

五、参考文献

1.吴其庆编著.Java程序设计实例教程.北京:

冶金工业出版社

2.柳西玲.许斌编著.Java语言应用开发基础.北京:

清华大学出版社

3.丁振凡Java语言实用教程:

北京邮电大学出版社

 

附录(源代码)

import.*;

importjava.io.*;

importjava.applet.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.applet.Applet;

importjava.awt.Color;

PublicclasswuziqiextendsAppletimplementsActionListener,MouseListener,MouseMotionListener,ItemListener{

intcolor_Qizi=0;//旗子的颜色标识0:

白子1:

黑子

intintGame_Start=0;//游戏开始标志0未开始1游戏中

intintGame_Body[][]=newint[16][16];//设置棋盘棋子状态

intm=-1;

Buttonb1=newButton("开始");

Buttonb2=newButton("重新开始");

LabellblWin=newLabel("");

CheckboxckbHB[]=newCheckbox[3];

Buttonexist=newButton("退出");

CheckboxGroupckgHB=newCheckboxGroup();

publicvoidinit(){

setLayout(null);

addMouseListener(this);

add(b1);

b1.setBounds(330,50,80,30);

b1.addActionListener(this);

add(b2);

b2.setBounds(330,90,80,30);

b2.addActionListener(this);

ckbHB[0]=newCheckbox("执白",ckgHB,false);

ckbHB[0].setBounds(320,20,60,30);

ckbHB[1]=newCheckbox("执黑",ckgHB,false);

ckbHB[1].setBounds(380,20,60,30);

ckbHB[2]=newCheckbox("观看",ckgHB,false);

add(ckbHB[0]);

add(ckbHB[1]);

add(ckbHB[2]);

ckbHB[0].addItemListener(this);

ckbHB[1].addItemListener(this);

add(lblWin);

lblWin.setBounds(330,180,80,30);

lblWin.setBackground(Color.red);

lblWin.setText("胜利者!

");//没有显示?

ckbHB[2].setBounds(440,20,60,30);

add(exist);

exist.setBounds(330,130,80,30);

exist.addActionListener(this);

Game_start_csh();

setSize(500,600);

setVisible(true);

}

publicvoiditemStateChanged(ItemEvente){

if(ckbHB[0].getState())//选择黑子还是白子

{

color_Qizi=0;

}

else

{

color_Qizi=1;

}

}

publicvoidmousePressed(MouseEvente){}

publicvoidmouseClicked(MouseEvente){

Graphicsg=getGraphics();

intx1,y1;

x1=e.getX();

y1=e.getY();

if(e.getX()<20||e.getX()>300||e.getY()<20||e.getY()>300){

return;

}

if(x1%20>10){

x1+=10;

}

if(y1%20>10){

y1+=10;

}

x1=x1/20*20;

y1=y1/20*20;

set_Qizi(x1,y1);

m*=(-1)

}

publicvoidactionPerformed(ActionEvente){

Graphicsg=getGraphics();

if(e.getSource()==b1){

Game_start();

}

else{

Game_re();

}

if(e.getSource()==exist){

Game_re();

//color_Qizi=m;

lblWin.setText(Get_qizi_color(color_Qizi)+"输了!

");

intGame_Start=0;

}

}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmouseReleased(MouseEvente){}

publicvoidmouseDragged(MouseEvente){}

publicvoidmouseMoved(MouseEvente){}

publicvoidpaint(Graphicsg){

draw_qipan(g);

}

publicvoidset_Qizi(intx,inty){//落子

if(intGame_Start==0){//判断游戏未开始

return;

}

if(intGame_Body[x/20][y/20]!

=0){

return;

}

Graphicsg=getGraphics();

if(color_Qizi==1){//判断黑子还是白子

g.setColor(Color.black);

color_Qizi=0;

}

else{

g.setColor(Color.white);

color_Qizi=1;

}

g.fillOval(x-10,y-10,20,20);

intGame_Body[x/20][y/20]=color_Qizi+1;

if(Game_win_1(x/20,y/20)){//判断输赢1

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_2(x/20,y/20)){//判断输赢2{

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_3(x/20,y/20)){//判断输赢3

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

intGame_Start=0;

}

if(Game_win_4(x/20,y/20)){//判断输赢4

lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!

");

int

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

当前位置:首页 > 医药卫生 > 基础医学

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

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