JAVA课程设计1213附所有源代码.docx
- 文档编号:11328837
- 上传时间:2023-02-27
- 格式:DOCX
- 页数:64
- 大小:919.69KB
JAVA课程设计1213附所有源代码.docx
《JAVA课程设计1213附所有源代码.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计1213附所有源代码.docx(64页珍藏版)》请在冰豆网上搜索。
JAVA课程设计1213附所有源代码
2010—2011学年度
JAVAGUI课程设计
班级:
___08软件二班__
学号:
___180108227____
姓名:
____朱海丰______
2010年12月10日
魔板游戏
一、设计内容
设计GUI界面的魔板游戏程序。
二、设计要求
1、魔板由4*4或3*3个方格组成,其中一个格子是空的。
对于4*4的魔板,其他格子里随机放置15个编号为1~15的方块;对于3*3的魔板,其他格子里随机放置8个编号为1~8的方块。
2、用鼠标单击任何与空格子相邻的方块可以把该方块移入空格子。
通过不断的移动方块,可以将方块一行一行按数字顺序依次排列。
3、魔板游戏也可以使用图像来替代数字,对于4*4的魔板,将图像分成4*4个方块,打乱顺序后,放入魔板,并将其中一个方格置为空。
最终目标是通过移动方块恢复为原始图像。
三、总体设计(10分)
游戏运行时主要界面:
图1-1、1-2、1-3
图1-1
图1-2
图1-3
项目整体框架图示:
界面层
业务逻辑层
一些资源文件、打包好的文件和项目说明
工具包
各个主要类及其之间关系的简要说明
类名
描述
关系
Pic.java
一张图片
无
PicDAO.java
用于把图片Pic读到输入输出流
处理Pic类
Pics.java
图片Pic集合
Pic的集合
Record.java
一条记录
无
RecordDAO.java
用于把记录Record读到输入输出流
处理Record
Records.java
记录Record集合
Record的集合
TestModel.java
负责预先增加图片素材和记录(普通用户使用不到,开发者使用)
无
ResourcesManager.java
负责图片处理的工具类
将Image转换为BufferedImage
AboutBoard.java
关于界面
子界面
GameBoard.java
游戏界面
子界面
MainBoard.java
程序主界面
父界面
RecordBoard.java
显示记录界面
子界面
ResourceBoard.java
资源界面
子界面
SuccessInputDialog.java
成功信息记录界面
主界面弹出的对话框
四、主类说明(15分)
Pic.java
变量
变量名
变量类型
变量描述
name
String
图片名称
data
byte[]
图片数据
方法
方法名
功能
备注
Pic()
构造器1
空构造器
Pic(Stringname,byte[]data)
构造器2
初始化一张图片
getData()
获得图片数据
无
setData(byte[]data)
设置图片数据
无
getName()
获得图片名称
无
setName(Stringname)
设置图片名称
无
equals(Objectobj)
比较两张图片是否相同此处做简化操作,只比较名字
重写equals方法
PicDAO.java
变量
变量名
变量类型
变量描述
无
无
无
方法
方法名
功能
备注
read(DataInputStreamdis)
从文件读入数据
抛出异常
write(DataOutputStreamdos,Picimage)
写入一张图片
抛出异常
Pics.java
变量
变量名
变量类型
变量描述
PIC_FILE_NAME
staticfinalString
存储图片的文件名
imageList
finalList
图片列表
方法
方法名
功能
备注
Pics()
构造器
初始化
load()
从文件读入
无
save()
写文件
无
add(Picimage)
增加一张图片
先判断图片是否存在
remove(Picimage)
删除一张图片
无
getImageList()
返回图片集合
无
Record.java
变量
变量名
变量类型
变量描述
name
String
玩家姓名
picIndex
int
图片ID
picName
String
图片名字
rankNumber
int
游戏等级
steps
int
玩家用所走步数
time
int
玩家耗费时间(秒数)
recordTime
String
玩家创造记录的时间
方法
方法名
功能
备注
Record()
空构造器
无
Record(Stringname,StringpicName,intrankNumber,intsteps,inttime,StringrecordTime)
带参数的构造器
初始化一条记录
getPicName()
返回图片名称
无
setPicName(StringpicName)
设置图片名称
无
getPicIndex()
返回图片ID
无
setPicIndex(intpicIndex)
设置图片ID
无
getName()
返回玩家姓名
无
setName(Stringname)
设置玩家姓名
无
getRankNumber()
返回游戏等级
无
setRankNumber(intrankNumber)
设置游戏等级
无
getRecordTime()
返回记录时间
无
setRecordTime(StringrecordTime)
设置记录时间
无
getSteps()
返回步数
无
setSteps(intsteps)
设置步数
无
getTime()
返回时间
无
setTime(inttime)
设置时间
无
toString()
返回记录详细信息描述
重写toString()方法
RecordDAO.java
变量
变量名
变量类型
变量描述
无
无
无
方法
方法名
功能
备注
read(DataInputStreamdis)
从文件读入数据
抛出异常
write(DataOutputStreamdos,Recordrecord)
写入一条记录
抛出异常
Records.java
变量
变量名
变量类型
变量描述
RECORD_FILE_NAME
staticfinalString
存储记录的文件名
recordList
finalList
记录列表
方法
方法名
功能
备注
Records()
构造器
初始化
load()
从文件读入
无
save()
写文件
无
add(Recordrecord)
增加一条记录
无
remove(Recordrecord)
删除一条记录
无
getRecordList()
返回记录集合
无
五、其他各类的描述和说明。
(15分)
ResourcesManager.java:
此类在整个项目中属于一个工具类,主要负责图片的处理,即由Image转换为BufferedImage。
转换的原因是因为整个项目需要对图片的大小进行处理、图片切割。
BufferedImage是API文档里面提供的一个带缓存的图片类,可以用来对图片进行一些基本的处理,例如:
缩放、切割等。
BufferedImage类的具体使用请参见API文档。
六、附主要源代码(60分)
Pic.java:
packagecom.cslg.zhf.model.pic;
/*
*图片
*/
publicclassPic{
privateStringname;//图片名称
privatebyte[]data;//图片数据
/**
*构造器1
*
*@paramname
*@paramdata
*/
publicPic(Stringname,byte[]data){
this.name=name;
this.data=data;
}
/**
*构造器2
*/
publicPic(){
}
publicbyte[]getData(){
returndata;
}
publicvoidsetData(byte[]data){
this.data=data;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
/**
*比较两张图片是否相同此处做简化操作,只比较名字
*/
@Override
publicbooleanequals(Objectobj){
if((obj!
=null)&&(objinstanceofPic)){
Picimg=(Pic)obj;
if(name.equals(img.name))
returntrue;
}
returnfalse;
}
}
PicDAO.java:
packagecom.cslg.zhf.model.pic;
importjava.io.ByteArrayOutputStream;
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.IOException;
/*
*用于把Image读到输入输出流
*/
publicclassPicDAO{
/**
*从文件读入
*
*@paramdis
*数据输入流
*@returnImage对象
*@throwsIOException
*/
publicPicread(DataInputStreamdis)throwsIOException{
Stringname=dis.readUTF();
intlength=dis.readInt();
/*
*带缓冲区的二进制读写byte[]cache=newbyte[1024];//1k的缓冲区ByteArrayOutputStream
*baos=newByteArrayOutputStream();DataOutputStreamdos=new
*DataOutputStream(baos);intlen=0;while((len=dis.read(cache))!
=-1){
*dos.write(cache,0,len);}byte[]data=baos.toByteArray();
*/
byte[]data=newbyte[length];
dis.read(data);
returnnewPic(name,data);
}
/**
*写入一张图片
*
*@paramdos
*数据输出流
*@paramimage
*图片
*@throwsIOException
*/
publicvoidwrite(DataOutputStreamdos,Picimage)throwsIOException{
dos.writeUTF(image.getName());
dos.writeInt(image.getData().length);
dos.write(image.getData());
}
}
Pics.java:
packagecom.cslg.zhf.model.pic;
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
/*
*图片集合
*/
publicclassPics{
publicstaticfinalStringPIC_FILE_NAME="pics.dat";//存储图片的文件名
privatefinalList
publicPics(){
imageList=newArrayList
}
/**
*从文件读入
*
*@throwsIOException
*/
publicvoidload()throwsIOException{
imageList.clear();
DataInputStreamdis=newDataInputStream(newFileInputStream(
PIC_FILE_NAME));
//1.先读图片张数
intnumberOfImages=dis.readInt();
//2.使用ImageDAO读取每张图片
PicDAOimageDAO=newPicDAO();
for(inti=0;i Picimage=imageDAO.read(dis); //增加 imageList.add(image); } dis.close(); } /** *写文件 */ publicvoidsave()throwsIOException{ DataOutputStreamdos=newDataOutputStream(newFileOutputStream( PIC_FILE_NAME)); //1.先写入图片张数 dos.writeInt(imageList.size()); //2.使用ImageDAO写入每张图片 PicDAOimageDAO=newPicDAO(); for(inti=0;i Picimage=(Pic)imageList.get(i); imageDAO.write(dos,image); } dos.close(); } /** *增加一张图片 * *@throwsIOException */ publicbooleanadd(Picimage)throwsIOException{ //1.先判断图片是否已经存在 for(inti=0;i Picimg=(Pic)imageList.get(i); if(img.equals(image)){//比较 returnfalse; } } imageList.add(image); returntrue; } /** *删除一张图片 */ publicvoidremove(Picimage){ imageList.remove(image); } publicListgetImageList(){ returnimageList; } } Record.java: packagecom.cslg.zhf.model.record; /** *个人纪录 * *@authorzhf */ publicclassRecord{ privateStringname;//玩家姓名 privateintpicIndex;//图片ID privateStringpicName;//图片名字 privateintrankNumber;//游戏等级 privateintsteps;//玩家用所走步数 privateinttime;//玩家耗费时间(秒数) privateStringrecordTime;//玩家创造记录的时间 publicRecord(){ } publicRecord(Stringname,StringpicName,intrankNumber,intsteps,inttime,StringrecordTime){ this.name=name; this.picName=picName; this.rankNumber=rankNumber; this.steps=steps; this.time=time; this.recordTime=recordTime; } publicStringgetPicName(){ returnpicName; } publicvoidsetPicName(StringpicName){ this.picName=picName; } publicintgetPicIndex(){ returnpicIndex; } publicvoidsetPicIndex(intpicIndex){ this.picIndex=picIndex; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetRankNumber(){ returnrankNumber; } publicvoidsetRankNumber(intrankNumber){ this.rankNumber=rankNumber; } publicStringgetRecordTime(){ returnrecordTime; } publicvoidsetRecordTime(StringrecordTime){ this.recordTime=recordTime; } publicintgetSteps(){ returnsteps; } publicvoidsetSteps(intsteps){ this.steps=steps; } publicintgetTime(){ returntime; } publicvoidsetTime(inttime){ this.time=time; } @Override publicStringtoString(){ return"用户名: "+name+"|"+"图片编号: "+picIndex+"|"+"图片名称: "+picName+"|"+"游戏等级: "+rankNumber+"|"+"步数: "+steps+"|"+"耗费时间: "+time+"|"+"创造记录时间: "+recordTime; } } RecordDAO.java: packagecom.cslg.zhf.model.record; importjava.io.ByteArrayOutputStream; importjava.io.DataInputStream; importjava.io.DataOutputStream; importjava.io.IOException; /* *用于把记录读到输入输出流 */ publicclassRecordDAO{ /** *从文件读入 *@paramdis数据输入流 *@returnRecord对象 *@throwsIOException */ publicRecordread(DataInputStreamdis)throwsIOException{ Stringname=dis.readUTF(); StringpicName=dis.readUTF(); intrankNumber=dis.readInt(); intsteps=dis.readInt(); inttime=dis.readInt(); StringrecordTime=dis.readUTF(); returnnewRecord(name,picName,rankNumber,steps,time,recordTime); } /** *写入一条记录 *@paramdos数据输出流 *@paramRecord记录 *@throwsIOException */ publicvoidwrite(DataOutputStreamdos,Recordrecord)throwsIOException{ dos.writeUTF(record.getName()); dos.writeUTF(record.getPicName()); dos.writeInt(record.getRankNumber()); dos.writeInt(record.getSteps()); dos.writeInt(record.getTime()); dos.writeUTF(record.getRecordTime()); } } Records.java: packagecom.cslg.zhf.model.record; importjava.io.DataInputStream; importjava.io.DataOutputStream; importjava.io.FileInputStream; imp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课程设计 1213 所有 源代码