Java程序设计实训报告Word格式文档下载.docx
- 文档编号:15742978
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:28
- 大小:51.13KB
Java程序设计实训报告Word格式文档下载.docx
《Java程序设计实训报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Java程序设计实训报告Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
该围棋程序还需具有悔棋功能以及选择棋盘大小的功能。
2014年6月11日
一、实训目的及要求
1.1实训目的
1.使学生熟练掌握,java编成的基础知识,以及巩固图形界面及绘图知识点。
2.结合软件工程,熟悉软件开发过程。
3.训练了学生学生独立编程以及调试程序的能力。
4.训练学生对于算法的理解和设计能力。
5.加强了学生实际动手能力,以及对于面向对象方法学的理解。
6.巩固图形界面排版,以及界面的设计能力。
7.加强学生对于所学知识的理解及运用。
1.2实训要求
1.需交电子版和纸制板实训报告各一份,电子版海源程序。
2.程序必须可运行。
3.界面必须保证美观。
4.操作简单易学。
5.各项功能不可缺损。
6.报告版面美观,易读。
二、概要设计
1.整个围棋程序分为3个部分:
棋盘、棋子、围棋主类
软件结构图(见图一):
围棋程序控制
接收鼠标事件
控制面板调控度
棋手操作
重新开始控制
悔棋控制
棋盘大小控制
更新棋盘
更新标签
棋盘控制
绘制棋盘及棋子
图1软件结构图
2.围棋软件中的棋盘主类都将采用绘制。
3.整个程序界面将采用固定大小。
三、详细设计
棋手
围棋程序处理
棋盘和标签
棋子信息
1.围棋程序顶层数据流程图如下:
鼠标操作信息棋盘标签信息
图2顶层数据流程图
鼠标坐标
棋手
重新开始处理
棋盘大小选择处理
下棋位置捕获处理
悔棋处理
棋盘大小处理
绘制将要下棋位置处理
下棋处理
棋盘标签信息
更新棋盘标签
鼠标操作信息
2.功能级数据流图如下:
棋盘大小
棋盘大小信息
重置棋盘信息
图3功能级数据流程图
四、功能分析
整个围棋程序分为3个部分:
1.棋盘主类主要功能有:
《1》绘制棋谱及落棋,程序实现重写的pint方法如下:
publicvoidpaint(Graphicsg){
offg.setColor(newColor(180,150,100));
offg.fillRect(0,0,size,size);
//画出棋盘格子
offg.setColor(Color.black);
for(inti=0;
i<
gridNum+1;
i++){
intx1=left+i*gridLen;
intx2=x1;
inty1=top;
inty2=top+gridNum*gridLen;
offg.drawLine(x1,y1,x2,y2);
x1=left;
x2=left+gridNum*gridLen;
y1=top+i*gridLen;
y2=y1;
}
//画出棋子
i++)
for(intj=0;
j<
j++){
if(map[i][j]==null)
continue;
offg.setColor(map[i][j].color==Chesspoint.black?
Color.black
:
Color.white);
offg.fillOval(left+i*gridLen-chessmanLength/2,top+j
*gridLen-chessmanLength/2,chessmanLength,
chessmanLength);
}
//画出鼠标的位置,即下一步将要下的位置
if(mouseLoc!
=null){
offg.setColor(currentTurn==Chesspoint.black?
Color.gray
:
newColor(200,200,250));
offg.fillOval(left+mouseLoc.x*gridLen-chessmanLength/2,top
+mouseLoc.y*gridLen-chessmanLength/2,
chessmanLength,chessmanLength);
//把画面一次性画出
g.drawImage(offscreen,80,0,this);
}
《2》吃子,程序实现见源程序。
《3》悔棋,并保存所有已下的棋子,包括在棋盘上的所有棋子和被提掉的,程序实现悔棋back()方法如下:
//悔棋
publicvoidback(){
if(alreadyNum==0){
controlPanel.setMsg("
无子可悔"
);
return;
Objectobj=chessman.elementAt(--alreadyNum);
if(objinstanceofChesspoint){
Chesspointqizi=(Chesspoint)obj;
map[qizi.x][qizi.y]=null;
currentTurn=qizi.color;
}else{
Vectorv=(Vector)obj;
for(inti=0;
v.size();
Chesspointq=(Chesspoint)(v.elementAt(i));
if(i==v.size()-1){
map[q.x][q.y]=null;
intindex=chessman.indexOf(v);
chessman.setElementAt(q,index);
currentTurn=q.color;
}else{
map[q.x][q.y]=q;
}
controlPanel.setLabel();
repaint();
《4》在该类中使用Vector类型保存踢掉的棋子及这个棋子本身。
2.棋子主类主要功能有:
获得实际的棋子位置,程序实现如下:
publicclassChesspoint
{
publicstaticintblack=0,white=1;
intx,y;
intcolor;
publicChesspoint(inti,intj,intc)
{
x=i;
y=j;
color=c;
publicStringtoString()
{//储存x,y位置和颜色
Stringc=(color==black?
"
black"
:
white"
return"
["
+x+"
"
+y+"
]:
+c;
}
3.围棋主类主要功能:
(1)对围棋界面外观进行初始化,构造方法Chess实现如下:
publicChess(){
this.setTitle("
围棋程序"
this.setLayout(newBorderLayout());
jp.setSize(550,490);
jp.setLayout(newBorderLayout());
jp.add(Chessboard.controlPanel,"
West"
jp.add(qipan,"
Center"
add(jp);
this.setResizable(false);
this.setSize(550,490);
this.setVisible(true);
(2)创建围棋对象,main方法实现如下:
publicstaticvoidmain(String[]args){
//开始下棋程序
ChessIgo=newChess();
五、测试数据及运行结果
1.初始界面如图图5.1所示:
图5.1运行结果图
2.18x18棋盘测试如图:
图5.2运行结果图
3.2.7x7棋盘测试如图:
图5.3运行结果图
4.悔棋标签反映无子可悔如图:
图5.4运行结果图
六、总结
时光如梭,光阴似箭,java实训一晃而过,通过这一期的实训,虽然实训的时间不长,但是总体上收获挺大的,当我们正式准备学习实训java编程技术时,让我感到非常高兴,因为java一直学的是课本知识,所以实训对于我来说是必须要学会熟练操作的。
当然开始学习后也并非是想象中那样顺利,开始的学习让我异常感到学习任务的艰巨,因为学习中我遇到了很多以前未曾遇到的难点,有时后也难免会失去耐心,但是,通过老师的指导,自己的努力的练习,我顺利的化解了一道道的障碍。
克服了java学习上的一道道难关,现在自己已经基本掌握了java的基础知识。
我很清楚以后的路还很长,再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。
任何业绩的质变都来自于量变的积累,成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成,让我们将事前的忧虑,换为事前的思考和计划吧!
在实训的过程中,我深深感觉到自身所学知识的有限。
以后要更加努力学习.
源代码:
1、Chessboard类
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjava
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 报告