辽宁工业大学JAVA程序设计汉诺塔游戏设计(精品)
辽 宁 工 业 大 学
《Java语言程序设计》课程设计(论文)
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
目: 汉诺塔游戏设计
院(系): 软 件 学 院
专业班级:
学 号: 131
学生姓名:
指导教师: 翟宝峰
教师职称: 副教授
起止时间:2014.06.13至2014.06.24
课程设计(论文)任务及评语
院(系):软件学院 教研室:软件教研室 学 号 学生姓名 专业班级 软件工程133班 课程设计
(论文)
题目
任务与要求:
(1).掌握面向对象程序设计语言JAVA的基本语法
课(2).掌握JAVA面向对象设计的思想,
程(3).掌握VJAVA6.0与MyEclips JAVA 开发工具的使用 设
计 (4). 运用
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
JAVA
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
设计应用程序 )
论
文设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。)
任正确地完成上述内容,规范完整地撰写出设计报告。 务
指 导
教 师
评
语 及
成 绩
成绩: 指导教师签字:
2014年 6 月 24 日
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
目 录
第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.2.2面向对象设计 .................................................. 2
2.2.2类成员描述 .................................................... 3
2.3程序实现 ............................................................ 4
2.3.1源码分析 ...................................................... 4
2.3.2运行结果 ..................................................... 14 第3章 总结 ................................................................ 16 参考文献 ................................................................... 17
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
第1章 课程设计目的与要求
1.1设计目的
将理论教学中涉及到的
知识点
高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载
贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。 通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握面向对象程序设计的方法。
(6)熟练掌握JAVA语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序和修改程序。
1.2实验环境
硬件要求能运行Windows 操作系统的微机系统。JAVA语言应用程序开发软件使用:VJAVA 系统,或其他JAVA语言应用程序开发软件。
1.3预备知识
熟悉JAVA语言程序设计的基本知识及VJAVA编辑器的使用方法。 1.4设计要求
1.仔细分析设计题目,画出程序流程图,编写程序源代码。
2.积极上机调试源程序,增强编程技巧与调程能力。
3.认真书写课程设计预习报告,课程设计说明书。
4.遵守课程设计要求和机房
管理制度
档案管理制度下载食品安全管理制度下载三类维修管理制度下载财务管理制度免费下载安全设施管理制度下载
,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。
1
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
第2章 课程设计内容
2.1 课题描述
该程序是简单的汉诺塔游戏,其界面主要采用了awt包,程序实现了汉诺塔游戏的可玩性,使用鼠标操作,并且有菜单支持,游戏界面简洁直观,可玩性极高,可满足玩家的需求。
2.2 系统设计
2.2.1功能分析
根据对需求的分析,要完成Hannoi塔的设计,我们必须实现Hannoi塔的几个基本功能:Hannoi塔由A、B、C三塔组成;完成汉诺塔的手动移动演示;完成汉诺塔的自动移动演示。
2.2.2面向对象设计
class MyData
主要数据及逻辑
fr.addWindowListener(new MyWindowAdapter()); 给窗口加入windows事件监听器
fr.setResizable(false)
设为用户不可改变窗体大小
fr.setBackground(Color.WHITE); 框架fr的背景颜色设置为白色
2
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 汉诺塔系统流程图,如图2.1
鼠标
操作系
统
游戏 游戏功能处理程
难度 序
文件
显示器
图2.1
2.2.2类成员描述
成员变量描述 变量类型 名称 汉诺塔对象 HannoiTower tower 塔名数组 Char[] TowerName 盘子数目 Inr 盘子数目 p float 盘子从上到下缩小的比例 盘子大小 Int 盘宽,盘高 自动演示线程 Thread Thread file初级 file高级 File 初级高级排行榜记录
3
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) file1,file2 File 规则帮助文本 自动演示文字显示搬运过程 TexArea 信息条 菜单条 JMenubar fileMenu1,filemenu2,file
menu3 菜单项 JMenultem 开始游戏,重新开始,退出
帮助,英雄榜 显示时间 JTextField 显示时间
2.3程序实现
2.3.1源码分析
源代码及注释:
import java.awt.*;//GUI支持
import java.awt.event.*;//GUI事件支持
import javax.swing.JOptionPane;//对话框支持
class MyData
{//主要数据及逻辑
private int m_top;//拿起的方块
private int m_size;//方块总数-1
private int[][] m_room;//方块数组
链接:www.910720.com 外部链接
private int[] m_pos;//每组方块最顶的位置
public MyData()
{
4
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
m_room = new int[8][3];
m_pos = new int[3];
Start(4);
}//end method MyData
public void Start(int x)
{
m_size = x-1;
for(int i=0;i<=2;i++)
{
for(int j=0;j<8;j++)
{
m_room[j][i] = 0;
}
m_pos[i]=-1;
}
for(int i=0;i
m_room[m_pos[x]][x])
return false;
}
m_pos[x]++;
m_room[m_pos[x]][x] = m_top;
m_top = 0;
return true;
}//end method Drop
public boolean TestFull()
{
if(m_pos[1]==m_size)return true;
if(m_pos[2]==m_size)return true;
return false;
}//end method TestFull
public boolean Click(int x)
{
if(TestFull())return false;
if(m_top == 0)
Take(x);
el
se
Drop(x);
6
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
//JOptionPane.showMessageDialog(null,""+x);
return true;
}//end method Click
public int GetTop()
{
return m_top;
}//end method GetTop
public int GetBlock(int x,int group)
{
return m_room[x][group];
}//end method GetBlock
}//end class MyData
class MyWindowAdapter extends WindowAdapter {//只实现需要的方法
public void windowClosing(WindowEvent e)
{
System.exit(0);//terminate application
}//end method windowClosing
}//end class MyWindowAdapter
class MyMouseAdapter extends MouseAdapter {
public void mouseClicked(MouseEvent e)
{
//JOptionPane.showMessageDialog(null,"x"+e.getX()+"y"+e.getY());
Main fr = (Main)e.getSource();
Dimension frSize = fr.getSize();
int x = e.getX();
int w = frSize.width/3;
7
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
if(x < w)
{
fr.mdta.Click(0);
}
else if(x < (2*w))
{
fr.mdta.Click(1);
}
else
{
fr.mdta.Click(2);
}
fr.repaint();
}//end mrthod mouseClicked }//end class MyMouseAdapter
public class Main extends Frame {
static MyData mdta;
public Main(String str)
{super(str);}
public static void main(String args[])
{
mdta = new MyData();
final Main fr = new Main("汉诺塔 for java,DKink");
fr.setResizable(false);//设为用户不可改变窗体大小
fr.setSize(300,300);//设置窗口大小
fr.setBackground(Color.WHITE);//框架fr的背景颜色设置为白色
8
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
//begin 菜单支持
MenuBar myMenu = new MenuBar();
Menu SMenu = new Menu("开始");
MenuItem MI3 = new MenuItem("3");
MI3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mdta.Start(3);
fr.repaint();
}
}
);
MenuItem MI4 = new MenuItem("4");
MI4.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mdta.Start(4);
fr.repaint();
}
}
);
MenuItem MI5 = new MenuItem("5");
MI5.addActionListener(new ActionListener()
{
9
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
public void actionPerformed(ActionEvent e)
{
mdta.Start(5);
fr.repaint();
}
}
);
MenuItem MI6 = new MenuItem("6");
MI6.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mdta.Start(6);
fr.repaint();
}
}
);
MenuItem MI7 = new MenuItem("7");
MI7.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mdta.Start(7);
fr.repaint();
}
}
);
MenuItem MI8 = new MenuItem("8");
MI8.addActionListener(new ActionListener()
{
10
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
public void actionPerformed(ActionEvent e)
{
mdta.Start(8);
fr.repaint();
}
}
);
SMenu.add(MI3);
SMenu.add(MI4);
SMenu.add(MI5);
SMenu.add(MI6);
SMenu.add(MI7);
DEDECMS标签
SMenu.add(MI8);
myMenu.add(SMenu);
fr.setMenuBar(myMenu);
//end 菜单支持
fr.setLayout(null);//取消布局管理器
fr.addWindowListener(new MyWindowAdapter());//给窗口加入windows事件监听器
fr.addMouseListener(new MyMouseAdapter());//加入Mouse动作监听器
/*
//begin 窗体居中
Dimension frSize = fr.getSize();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
fr.setLocation((screenSize.width - frSize.width)/2,
(screenSize.height - frSize.height)/2);
11
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
//end 窗体居中
*/
fr.setLocationRelativeTo (null);//窗体居中
fr.setVisible(true);//显示窗口
}//end method main
public void paint(Graphics g)
{
final int NDISK_H = 10;//盘子的高
final int NDISK_D = 80;//位置间距
final int NDISK_S = 50;//起始位置
final int NDISK_W = 5;//盘子的单位宽度
//begin 方块组绘制
int n;
for(n=0;n<8;n++)
{
if(mdta.GetBlock(n,0)!=0)
{
g.drawRect(
NDISK_S,200-n*NDISK_H,
NDISK_W * mdta.GetBlock(n,0),
NDISK_H
);
}
}
for(n=0;n<8;n++)
{
if(mdta.GetBlock(n,1)!=0)
{
g.drawRect(
12
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
NDISK_D+NDISK_S,200-n*NDISK_H,
NDISK_W * mdta.GetBlock(n,1),
NDISK_H
);
}
}
for(n=0;n<8;n++)
{
if(mdta.GetBlock(n,2)!=0)
{
g.drawRect(
2*NDISK_D+NDISK_S,200-n*NDISK_H,
NDISK_W * mdta.GetBlock(n,2),
NDISK_H
);
}
}
//end 方块组绘制
if(mdta.GetTop() != 0)//拿起的方块
g.drawRect(60,60,NDISK_W*mdta.GetTop(),NDISK_H);
if(mdta.TestFull())//完成消息绘制
g.drawString("Finish",100,100);
}//end method paint
}//end class Main extends Frame
13
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 2.3.2运行结果
进入游戏主界面时。如图2.2
图2.2
用鼠标单击游戏界面左上角的开始,可以选择游戏难度,再用鼠标单击所需要的游
戏难度,即可进入该难度的游戏,如图2.3
图2.3
14
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
用鼠标控制方块进行上下左右移动,目的是将左面的塔,移动的右面,而且,大砖块不能放在小砖块上面,如图2.4
图2.4
当塔从左面移动到右面时,游戏结束,如图2.5
图2.5
15
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
第3章 总结
通过这次汉诺塔游戏软件的设计,我有了很大的感悟,对java的学习热情更加浓厚,对自己现在有的理论知识和实践经验感到不足,但我对我自己有信心,我终于完成了我的第一个java小游戏的制作。
通过这次课程设计,我不仅拓展了自己的知识面,还在实践过程中巩固和加深了自己所学的理论知识,使自己的技术素质和实践能力有了进一步的提高,同时我的专业水平也有了很大的进步。同时我在软件开发方面也积累了不少经验,对软件知识的重要性认识得更加深刻,通过设计过程的锻炼我自己的分析问题,解决问题的能力得到了显著的提高,完善了自己的知识结构,加深了对所学知识的理解。
这次课程设计是我学习到不少JAVA编程语言的知识,但由于自己的理论知识水平有限实践知识和设计经验不足,在设计过程中难免存在一些问题,这些我会在以后的学习实践中加以改进和提高。通过这个学期的学习,我了解了它是一种面向对象的程序设计语言,它的这种面向对象编程接近于人类的语言和思维,而面向过程编程也接近于机器工作流程。
这次课程设计使我获得了很多东西,让我懂得了,做什么事情,首先最重要的是先学会分析,而且不要把思维局限在一起,要发散自己的思维,集各家之所长,这次课设,同学们对我的帮助是非常的大的。虽然做的时候困难很多,但是我都一一克服了,在设计的过程中,我发现了自己的很多不足,改掉了平时爱马虎的毛病,对java的知识又有了新的认识,让我知道了java在我们现在生活中的普及性和重要性,让我对java更加重视起来,作为二十一世纪的大学生,学习java是非常重要的。所以我以后要好好学习java,锻炼自己的能力。
16
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
参考文献
[1] 王克宏编著 JAVA语言入门 清华大学出版社 1996 [2] 旭日工作室编著 Java 1.1使用大全 电子工业出版社 1998 [3][美]Cay S.Horstmann 程峰等译 JAVA2核心技术 机械工业出版社 2003.6 [4] Horstmann C S,Cornell G著 Java2核心技术 机械工业出版社 2000 [5] 马凡 李璠编著 JavaScript实例应用 中国铁道出版社 2001 [6] 耿祥义 JAVA大学实用教程 电子工业出版社 2005.3 [7] 王克宏编著(Java语言Applet编程技术(清华大学出版社 1997 [8] Lewis J,Loftus W著 Java程序设计基础 清华大学出版社 2004 [9] 网冠技术编著 JavaScirpt时尚编程百例 机械工业出版社 2001 [10] 耿祥义编著 JAVA大学实用教程实验指导 电子工业出版社 2005.3 [11]赵晶.Protel99高级应用 北京:人民邮电出版社 2000 [12]聂毅.单片机定时器中断时间误差的分析及补偿[J] 微计算机信息 2002,18(4):37~38
[13] 雪松.数据库基础.北京希望电子出版社,2008
[14] 赵晓云Access2000数据库管理教程.武汉;武汉大学出版社,2004 [15] 王乐乐.萨师煊.数据库系统概论.高等教育出版社,2006
17