Java课程设计报告模板算法类Word文档格式.docx

上传人:b****6 文档编号:17964024 上传时间:2022-12-12 格式:DOCX 页数:17 大小:110.25KB
下载 相关 举报
Java课程设计报告模板算法类Word文档格式.docx_第1页
第1页 / 共17页
Java课程设计报告模板算法类Word文档格式.docx_第2页
第2页 / 共17页
Java课程设计报告模板算法类Word文档格式.docx_第3页
第3页 / 共17页
Java课程设计报告模板算法类Word文档格式.docx_第4页
第4页 / 共17页
Java课程设计报告模板算法类Word文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Java课程设计报告模板算法类Word文档格式.docx

《Java课程设计报告模板算法类Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java课程设计报告模板算法类Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

Java课程设计报告模板算法类Word文档格式.docx

初始化棋盘

2

Autoplay

实现电脑可以自动下棋

分为8种情况

3

Scan

扫描整个棋盘记录连在一起的黑白棋子数

为判断胜负服务

4

Sort

实现人与电脑有次序的下棋

黑棋白棋有序的下

5

Judge

判断人与电脑的胜负

可以在文本框中显示胜负结果

6

Evaluate

电脑估计

为电脑下棋提供帮助

1.5项目构建思路

此程序旨在打造一个小型五子棋娱乐游戏,经过认真分析和探索。

终于,在大家的共同努力之下,完成了这个小型五子棋游戏。

游戏编辑思路,五子棋是一种互动性的益智游戏。

需要棋盘、棋子、棋手、裁判。

首先,我们绘制一个五子棋棋盘,关键代码如下:

//绘制棋盘函数

publicvoidpaint(Graphicsg){

for(inti=40;

i<

=400;

i=i+20){

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

}//绘制棋盘行

for(intj=40;

j<

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);

}

其次,我们生成两种颜色不一样的棋子,关键代码如下:

黑色棋子代码如下:

//ChessPoint_black类继承Canvas类

classChessPoint_blackextendsCanvasimplementsMouseListener{

ChessPadchesspad=null;

ChessPoint_black(ChessPadp){

setSize(20,20);

//设置棋盘每一小格的长宽

addMouseListener(this);

chesspad=p;

g.setColor(Color.black);

//设置黑色棋子的颜色

g.fillOval(0,0,18,18);

//使用黑色填充椭圆棋子

白色棋子代码如下:

classChessPoint_whiteextendsCanvasimplementsMouseListener{

ChessPoint_white(ChessPadp){

publicvoidpaint(Graphicsg){//绘制棋子的颜色

g.setColor(Color.white);

//设置为白色

//填充白子

再次,为实现双方行棋,我们实现了电脑自动下棋的函数,一共分为8种情况,关键代码如下:

classAutoPlay{//AutoPlay类实现电脑可以自动下棋

intx,y;

//X统计玩家的连起来的棋子数

//Y电脑玩家的连起来的棋子数

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

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

//获取一个随机数

switch(randomNumber){//分情况实现电脑自动下棋

case

(1):

//通过a,b的值执行不同的运算,最后返回不同的

//值。

达到执行不同的操作。

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

{x=a-1;

y=b-1;

}

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

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):

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;

第四,为规范双方行棋的先后顺序,我们实现了一个判断函数,关键代码如下:

classSort{//sort类实现人与电脑有次序的下棋

publicvoidsort(intshape[][][]){

inttemp;

for(inti=0;

19;

i++)

for(intj=0;

j++){

for(inth=1;

h<

=4;

h++){

for(intw=3;

w>

=h;

w--){

if(shape[i][j][w-1]<

shape[i][j][w]){

//如果前者小于后者,则交换

temp=shape[i][j][w-1];

shape[i][j][w-1]=shape[i][j][w];

shape[i][j][w]=temp;

}

第五,脑只是简单的执行代码,没有智能思考的能力。

在行棋之前,他需要对整个棋盘上的棋子做一个判断,然后决定该怎么行棋,关键代码如下:

classEvaluate{//Evaluate类

intmax_x,max_y,max;

publicvoidevaluate(intshape[][][]){

inti=0,j=0;

for(i=0;

for(j=0;

switch(shape[i][j][0]){

//电脑根据传进来的三维数组决定该怎么行棋,

case5:

shape[i][j][4]=200;

case4:

switch(shape[i][j][1]){

shape[i][j][4]=150+shape[i][j][2]+

shape[i][j][3];

case3:

shape[i][j][4]=100+

shape[i][j][2]+

default:

shape[i][j][4]=50+

shape[i][j][2]+

shape[i][j][3];

shape[i][j][4]=75+

shape[i][j][4]=20+

case2:

shape[i][j][4]=10+shape[i][j][1]

+shape[i][j][2]

+shape[i][j][3];

case1:

shape[i][j][4]=shape[i][j][0]+shape[i][j][1]

default:

shape[i][j][4]=0;

intx=0,y=0;

max=0;

for(x=0;

x<

x++)

for(y=0;

y<

y++)

if(max<

shape[x][y][4]){

max=shape[x][y][4];

max_x=x;

max_y=y;

第六,在双方行棋后,我们需要判断那一方赢。

裁判的功能代码如下

//判断人与电脑的胜负

classJudge{

staticbooleanjudge(inta[][],intcolor){

inti,j,flag;

i++){//行

flag=0;

j++)//列

if(a[i][j]==color){

flag++;

//棋子计数器

if(flag==5)//如果棋子数等于5

returntrue;

}//返回true

elseflag=0;

//返回false

if(a[i][j]==color)//每一列的棋子颜色一样

{

flag++;

if(flag==5)//棋子数为5

}//返回true否则返回true

for(j=4;

intm=j;

=j;

i++){

if(a[i][m--]==color){//对角线棋字数一样

if(flag==5)//为5则返回true

}//棋子计数器归零

for(j=14;

j>

=0;

j--){

=18-j;

if(a[i][m++]==color){//对角线棋子数是否一样

if(flag==5)

}//棋子书为5则返回true

}//否则归零

for(i=14;

i>

i--){

intn=i;

19-i;

if(a[n++][j]==color){

if(flag==5)

for(i=18;

if(a[i][m++]==color){

returnfalse;

最后,我们最终的程序是急于可视化的,所以,需要容器及组建来实现,关键代码如下:

classChessPadextendsPanelimplementsMouseListener,ActionListener{

//创建棋盘

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

//创建二维数组,生成棋盘

Sortsort=newSort();

inti=0;

//控制棋子颜色

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

Buttonbutton=newButton("

重新开局"

);

//确定按钮

TextFieldtext_1=newTextField("

请黑棋下子"

),//创建文本组件并初始化第一个

text_2=newTextField(),

text_3=newTextField();

ChessPad(){//ChessPad函数的构造函数

setSize(440,440);

//

setLayout(null);

setBackground(Color.pink);

//设置背景为粉色

add(button);

//向组件添加指定的重新开局菜单

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

//移动组件并调整其大小。

由x和y指定左上角的新位置,由width和height指定新的大小。

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);

j++)

{array[i][j]=0;

}//初始化数组为0

j++)

for(inth=0;

5;

h++)

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

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

}//初始化三维数组为0

text_1.setEditable(false);

text_2.setEditable(false);

//设置文本组件为不可编辑

第二章模块功能介绍

2.1主类Chess

(1)成员变量见表2-1

表2-1主要成员变量(属性)

成员变量描述

变量类型

名称

控制棋子颜色

int

i

重新开局

Button

请黑棋下子

TextField

text_1

请白棋下子

text_2

这是第"

+i+"

text_3

(2)方法见表2-2

表2-2主要方法

方法名称

返回类型

功能

ChessPad()

设置棋盘颜色,

Voidpaint(Graphicsg)

对棋子等图像进行初始化

设置棋子大小,颜色等

PublicvoidmousePressed(MouseEvente)

鼠标的实践监听

单击实践

publicvoidmousePressed(MouseEvente)

publicvoidpaint(Graphicsg)

画出图像

控制图像的大小范围

处理按下鼠标的事件

选中下棋的位置

publicvoidmouseReleased(MouseEvente)

处理鼠标离开的事件

本步下棋结束

publicvoidmouseExited(MouseEvente)

处理鼠标离开棋盘时

鼠标离开组件不实现任何事件

publicvoidmouseClicked(MouseEvente)

处理发生单击的事件

实现下棋以及重新开始游戏

(3)源代码见文件Chess.java中的公共类Chess

2.2类Autoplay

(1)成员变量见表2-3

表2-3主要成员变量

统计玩家的连起来的棋子数

X

电脑玩家的连起来的棋子数

Int

Y

(2)方法见表2-4

表2-4主要方法

方法名

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

分情况实现电脑自动下棋

使用switch语句分为8种情况来下棋

(3)源代码见文件Chess.java中的Autoplay类

2.3类Scan

(1)成员变量见表2.5

表2-5Scan

统计棋盘种五个连起来的棋子数

数组

intshape[][][]

控制行数

控制列数

j

(2)方法见表2.6

表2-6Scan

voidscan(intchesspad[][],intcolour){

判断棋盘上连在一起的黑白棋子个数。

(3)源代码见文件Chess.java中的Scan类

第三章功能测试及运行效果

3.1系统主界面

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

图3-2可以统计下棋步数,与下棋的位置。

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

3.2参考文献

3.3总结

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

当前位置:首页 > 高等教育 > 军事

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

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