JAVA课程设计 五子棋Word文档格式.docx
- 文档编号:18858458
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:23
- 大小:37.62KB
JAVA课程设计 五子棋Word文档格式.docx
《JAVA课程设计 五子棋Word文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计 五子棋Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
指导教师评语及成绩
成绩:
指导教师签字:
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可以实现胜负的判断,并终止游戏。
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
请黑棋下子
TextField
text_1
请白棋下子
text_2
这是第"
+i+"
步
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<
j++)
{array[i][j]=0;
}
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;
=400;
i=i+20){
g.drawLine(40,i,400,i);
for(intj=40;
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("
步"
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{
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);
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;
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("
白棋赢!
if(i<
=2&
棋子颜色==-1)
autoPlay.autoPlay(array,b-2,a-2);
chesspoint_white.setBounds((autoPlay.y+2)*20-9,(autoPlay.x+2)*20-9,18,18);
array[autoPlay.x][autoPlay.y]=-1;
text_2.setText(autoPlay.x+"
+autoPlay.y);
}
publicvoidmouseReleased(MouseEvente){}
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmouseClicked(MouseEvente){}
publicvoidactionPerformed(ActionEvente)
{this.removeAll();
棋子颜色=1;
add(button);
text_1.setBounds(90,5,90,24);
i=0;
classChessPoint_blackextendsCanvasimplementsMouseListener{
ChessPadchesspad=null;
ChessPoint_black(ChessPadp){
setSize(20,20);
chesspad=p;
g.setColor(Color.black);
g.fillOval(0,0,18,18);
/*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{
ChessPoint_white(ChessPadp){
addMouseListener(this);
g.setColor(Color.white);
chesspad.棋子颜色=-1;
请白棋下子"
publicclassChessextendsFrame{
ChessPadchesspad=newChessPad();
Chess(){
setVisible(true);
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)
y=b;
elseif(chesspad[a-2][b]==0)
case(3):
if(chesspad[a-1][b+1]==0)
y=b+1;
elseif(chesspad[a-2][b+2]==0)
y=b+2;
y=b+3;
case(4):
if(chesspad[a][b+1]==0)
{x=a;
elseif(chesspad[a][b+2]==0)
else{x=a;
case(5):
if(chesspad[a+1][b+1]==0)
{x=a+1;
elseif(chesspad[a+2][b+2]==0)
{x=a+2;
else{x=a+3;
case(6):
if(chesspad[a+1][b]==0)
elseif(chesspad[a+2][b]==0)
case(7):
if(chesspad[a+1][b-1]==0)
elseif(chesspad[a+2][b-2]==0)
case(8):
if(chesspad[a][b-1]==0)
elseif(chesspad[a][b-2]==0)
else{x=a;
classEvaluate{
intmax_x,max_y,max;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA课程设计 五子棋 JAVA 课程设计