JAVA课程设计 五子棋.docx

上传人:b****6 文档编号:5871139 上传时间:2023-01-01 格式:DOCX 页数:23 大小:37.62KB
下载 相关 举报
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

《JAVA课程设计 五子棋.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计 五子棋.docx(23页珍藏版)》请在冰豆网上搜索。

JAVA课程设计 五子棋.docx

JAVA课程设计五子棋

辽宁工业大学

JAVA程序设计课程设计(论文)

 

题目:

五子棋

 

院(系):

软件学院

专业班级:

软件技术班

学号:

学生姓名:

指导教师:

丁宝柱

教师职称:

助教

起止时间:

2009.12.1至2009.12.16

 

程序设计专题(报告)任务及评语

院(系):

软件学院教研室:

软件教研室

学号

学生姓名

专业班级

软件技术班

程序设计(报告)题目

五子棋

程序设计(报告)任务

程序设计专题的任务与要求:

(1)掌握Java编程、面向对象的基础知识。

(2)较熟练地编写Java应用程序Application。

(3)了解Java的常用标准类库、编程技巧、异常处理。

(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。

(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。

(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。

课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。

正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。

指导教师评语及成绩

成绩:

指导教师签字:

2009年12月20日

目录

第1章课程设计的目的与要求1

1.1课程设计目的1

1.2课程设计的实验环境1

1.3课程设计的预备知识1

1.4课程设计要求1

第2章课程设计内容2

2.1课程设计主要内容2

2.2概要设计2

2.2.1自定义类说明2

2.4详细设计3

2.5测试分析15

2.4.1程序运行情况15

图2.4.1-1初始化棋盘效果,玩家为黑棋。

15

图2.4.1-2可以实现胜负的判断,并终止游戏。

15

2.4.2程序异常处理16

第3章课程设计总结16

参考资料17

第1章课程设计的目的与要求

1.1课程设计目的

《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

1.2课程设计的实验环境

硬件要求能运行Windows9.X操作系统的微机系统。

JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。

1.3课程设计的预备知识

熟悉JAVA语言及ECLIPSE开发工具。

1.4课程设计要求

按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。

同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

第2章课程设计内容

2.1课程设计主要内容

我设计的五子棋有良好的界面,较好的显示棋盘,使游戏有较好的可玩性,实现人与电脑的对战。

还可以显示下棋的次序,也有算法可以判断胜利的一方,并可以在相应位置显示胜负结果。

而且电脑的水平在中等左右,一般游戏者不可以轻易取胜,但也不是难以取胜,提高了娱乐性。

本系统共包括6个java源文件。

1、Chess源文件是本程序的主函数其作用是初始化棋盘。

2、Autoplay源文件实现电脑可以自动下棋分为8种情况。

3、Scan源文件扫描整个棋盘记录连在一起的黑白棋子数为判断胜负服务.4、Sort源文件实现人与电脑有次序的下棋黑棋白棋有序的下.5、Judge源文件判断人与电脑的胜负可以在文本框中显示胜负结果.6、Evaluate源文件的作用是电脑估计为电脑下棋提供帮助.

2.2概要设计

2.2.1自定义类说明

**********************************************************

*类名:

ChessPad*

*作用:

自定义主类,对鼠标拖拽的初始界面进行声明*

*继承的父类:

Panel类*

*实现的接口:

没有*

**********************************************************

 

表1-成员变量表

表2.1Chesspad成员变量

成员变量描述

变量类型

名称

控制棋子颜色

int

i

重新开局

Button

Button

请黑棋下子

TextField

text_1

请白棋下子

TextField

text_2

这是第"+i+"步

TextField

text_3

 表2-方法表

表2Chesspad方法

方法名

功能

备注

paint

图像初始化

构造方法

mousePressed

鼠标按下事件

 接口方法

mouseReleased

鼠标松开事件

 接口方法

mouseEntered

鼠标进入棋盘事件

 接口方法

mouseExited

鼠标离开棋盘事件

 接口方法

mouseClicked

鼠标单击事件

 接口方法

actionPerformed

事件处理

 

evaluate

评估

 

2.4详细设计

importjava.awt.*;

importjava.awt.event.*;

classChessPadextendsPanelimplementsMouseListener,ActionListener{

intarray[][]=newint[19][19];

Scanscanp=newScan();

Scanscanc=newScan();

AutoPlayautoPlay=newAutoPlay();

Evaluateevaluatep=newEvaluate();

Evaluateevaluatec=newEvaluate();

Sortsort=newSort();

inti=0;

intx=-1,y=-1,棋子颜色=1;

Buttonbutton=newButton("重新开局");

TextFieldtext_1=newTextField("请黑棋下子"),

text_2=newTextField(),

text_3=newTextField();

ChessPad(){

setSize(440,440);

setLayout(null);setBackground(Color.green);

addMouseListener(this);add(button);button.setBounds(10,5,60,26);

button.addActionListener(this);

add(text_1);text_1.setBounds(90,5,90,24);

add(text_2);text_2.setBounds(290,5,90,24);

add(text_3);text_3.setBounds(200,5,80,24);

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

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

{array[i][j]=0;}

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

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

for(inth=0;h<5;h++)

{scanp.shape[i][j][h]=0;

scanc.shape[i][j][h]=0;}

text_1.setEditable(false);

text_2.setEditable(false);

}

publicvoidpaint(Graphicsg){

for(inti=40;i<=400;i=i+20){

g.drawLine(40,i,400,i);

}

for(intj=40;j<=400;j=j+20){

g.drawLine(j,40,j,400);

}

g.fillOval(97,97,6,6);

g.fillOval(337,97,6,6);

g.fillOval(97,337,6,6);

g.fillOval(337,337,6,6);

g.fillOval(217,217,6,6);

}

publicvoidmousePressed(MouseEvente){

inta=0,b=0;

if(e.getModifiers()==InputEvent.BUTTON1_MASK){

x=(int)e.getX();y=(int)e.getY();

ChessPoint_blackchesspoint_black=newChessPoint_black(this);

ChessPoint_whitechesspoint_white=newChessPoint_white(this);

i++;

text_3.setText("这是第"+i+"步");

if((x+5)/20<2||(y+5)/20<2||(x-5)/20>19||(y-5)/20>19)

{}

else{a=(x+10)/20;b=(y+10)/20;

if(array[b-2][a-2]==0&&棋子颜色==1){

this.add(chesspoint_black);

chesspoint_black.setBounds(a*20-9,b*20-9,18,18);

棋子颜色=棋子颜色*(-1);

array[b-2][a-2]=1;

if(Judge.judge(array,1)){

text_1.setText("黑棋赢!

");棋子颜色=2;removeMouseListener(this);}

else{

text_1.setText("");}

}

}

if(i>2&&棋子颜色==-1){

scanp.scan(array,1);

scanc.scan(array,-1);

sort.sort(scanp.shape);

sort.sort(scanc.shape);

evaluatep.evaluate(scanp.shape);

evaluatec.evaluate(scanc.shape);

棋子颜色=棋子颜色*(-1);

this.add(chesspoint_white);

if(evaluatep.max>evaluatec.max){

text_2.setText(evaluatep.max_x+""+evaluatep.max_y+""+evaluatep.max);

chesspoint_white.setBounds((evaluatep.max_y+2)*20-9,(evaluatep.max_x+2)*20-9,18,18);

array[evaluatep.max_x][evaluatep.max_y]=-1;

text_1.setText("请黑棋下子");

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

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

for(inth=0;h<5;h++)

{scanp.shape[i][j][h]=0;

scanc.shape[i][j][h]=0;}

}

else

{

text_2.setText(evaluatec.max_x+""+evaluatec.max_y+""+evaluatec.max);

chesspoint_white.setBounds((evaluatec.max_y+2)*20-9,(evaluatec.max_x+2)*20-9,18,18);

array[evaluatec.max_x]

[evaluatec.max_y]=-1;

if(Judge.judge(array,-1))

{

text_2.setText("白棋赢!

");棋子颜色=2;removeMouseListener(this);}

else{

text_1.setText("请黑棋下子");

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

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

for(inth=0;h<5;h++)

{scanp.shape[i][j][h]=0;

scanc.shape[i][j][h]=0;}

}

}

}

if(i<=2&&棋子颜色==-1)

{

autoPlay.autoPlay(array,b-2,a-2);

this.add(chesspoint_white);

棋子颜色=棋子颜色*(-1);

chesspoint_white.setBounds((autoPlay.y+2)*20-9,(autoPlay.x+2)*20-9,18,18);

array[autoPlay.x][autoPlay.y]=-1;

if(Judge.judge(array,-1))

{

text_2.setText("白棋赢!

");棋子颜色=2;removeMouseListener(this);}

else{

text_1.setText("请黑棋下子");

text_2.setText(autoPlay.x+""+autoPlay.y);}

}

}

}

publicvoidmouseReleased(MouseEvente){}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmouseClicked(MouseEvente){}

publicvoidactionPerformed(ActionEvente)

{this.removeAll();

棋子颜色=1;

add(button);button.setBounds(10,5,60,26);

add(text_1);text_1.setBounds(90,5,90,24);

text_2.setText("");

text_1.setText("请黑棋下子");

add(text_2);

text_2.setBounds(290,5,90,24);

add(text_3);text_3.setBounds(200,5,80,24);

i=0;

text_3.setText("这是第"+i+"步");

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

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

{array[i][j]=0;}

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

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

for(inth=0;h<5;h++)

{scanp.shape[i][j][h]=0;

scanc.shape[i][j][h]=0;}

addMouseListener(this);

}

}

classChessPoint_blackextendsCanvasimplementsMouseListener{

ChessPadchesspad=null;

ChessPoint_black(ChessPadp){

setSize(20,20);

addMouseListener(this);

chesspad=p;

}

publicvoidpaint(Graphicsg){

g.setColor(Color.black);g.fillOval(0,0,18,18);

}

publicvoidmousePressed(MouseEvente){

/*if(e.getModifiers()==InputEvent.BUTTON3_MASK){

chesspad.remove(this);

chesspad.棋子颜色=1;

chesspad.text_2.setText("");

chesspad.text_1.setText("请黑棋下子");

}*/

}

publicvoidmouseReleased(MouseEvente){}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmouseClicked(MouseEvente){

}

}

classChessPoint_whiteextendsCanvasimplementsMouseListener{

ChessPadchesspad=null;

ChessPoint_white(ChessPadp){

setSize(20,20);addMouseListener(this);

chesspad=p;

}

publicvoidpaint(Graphicsg){

g.setColor(Color.white);g.fillOval(0,0,18,18);

}

publicvoidmousePressed(MouseEvente){

/*if(e.getModifiers()==InputEvent.BUTTON3_MASK){

chesspad.remove(this);

chesspad.棋子颜色=-1;

chesspad.text_2.setText("请白棋下子");

chesspad.text_1.setText("");

}*/

}

publicvoidmouseReleased(MouseEvente){}

publicvoidmouseEntered(MouseEvente){}

publicvoidmouseExited(MouseEvente){}

publicvoidmouseClicked(MouseEvente){

}

}

publicclassChessextendsFrame{

ChessPadchesspad=newChessPad();

Chess(){

setVisible(true);

setLayout(null);

Labellabel=newLabel("中华手制五子棋",Label.CENTER);

add(label);label.setBounds(70,55,440,26);

label.setBackground(Color.red);

add(chesspad);chesspad.setBounds(70,90,440,440);

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{System.exit(0);}

});

pack();setSize(600,550);

}

publicstaticvoidmain(Stringargs[]){

Chesschess=newChess();

}

}

classAutoPlay{

intx,y;

voidautoPlay(intchesspad[][],inta,intb){

intrandomNumber=(int)(Math.random()*8)+1;

switch(randomNumber){

case

(1):

if(chesspad[a-1][b-1]==0)

{x=a-1;y=b-1;}

elseif(chesspad[a-2][b-2]==0)

{x=a-2;y=b-2;}

else{x=a-3;y=b-3;}

break;

case

(2):

if(chesspad[a-1][b]==0)

{x=a-1;y=b;}

elseif(chesspad[a-2][b]==0)

{x=a-2;y=b;}

else{x=a-3;y=b;}

break;

case(3):

if(chesspad[a-1][b+1]==0)

{x=a-1;y=b+1;}

elseif(chesspad[a-2][b+2]==0)

{x=a-2;y=b+2;}

else{x=a-3;y=b+3;}

break;

case(4):

if(chesspad[a][b+1]==0)

{x=a;y=b+1;}

elseif(chesspad[a][b+2]==0)

{x=a;y=b+2;}

else{x=a;y=b+3;}

break;

case(5):

if(chesspad[a+1][b+1]==0)

{x=a+1;y=b+1;}

elseif(chesspad[a+2][b+2]==0)

{x=a+2;y=b+2;}

else{x=a+3;y=b+3;}

break;

case(6):

if(chesspad[a+1][b]==0)

{x=a+1;y=b;}

elseif(chesspad[a+2][b]==0)

{x=a+2;y=b;}

else{x=a+3;y=b;}

break;

case(7):

if(chesspad[a+1][b-1]==0)

{x=a+1;y=b-1;}

elseif(chesspad[a+2][b-2]==0)

{x=a+2;y=b-2;}

else{x=a+3;y=b-3;}

break;

case(8):

if(chesspad[a][b-1]==0)

{x=a;y=b-1;}

elseif(chesspad[a][b-2]==0)

{x=a;y=b-2;}

else{x=a;y=b+3;}

break;

}

}

}

classEvaluate{

intmax_x,max_y,max;

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

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1