汉诺塔游戏java编程.docx
《汉诺塔游戏java编程.docx》由会员分享,可在线阅读,更多相关《汉诺塔游戏java编程.docx(19页珍藏版)》请在冰豆网上搜索。
汉诺塔游戏java编程
辽宁工业大学
JAVA语言程序设计课程设计(论文)
题目:
汉诺塔游戏设计
院(系):
软件学院
专业班级:
计算机网络技术091班
学号:
091406015
学生姓名:
张铎赢
指导教师:
赵凯
教师职称:
讲师
起止时间:
2010.12.13至2010.12.24
程序设计专题(报告)任务及评语
院(系):
软件学院教研室:
软件教研室
学号
091406015
学生姓名
张铎赢
专业班级
计算机网络技术091班
程序设计(报告)题目
汉诺塔游戏设计
程序设计(报告)任务
程序设计专题的任务与要求:
(1)掌握Java编程、面向对象的基础知识。
(2)较熟练地编写Java应用程序Application。
(3)了解Java的常用标准类库、编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
2010年12月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.3详细设计3
2.4.1程序运行情况13
2.4.2程序异常处理16
第3章课程设计总结17
附录参考资料18
第1章课程设计的目的与要求
1.1课程设计目的
《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
1.2课程设计的实验环境
硬件要求能运行Windows9.X操作系统的微机系统。
JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。
1.3课程设计的预备知识
熟悉JAVA语言及ECLIPSE开发工具。
1.4课程设计要求
按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。
同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
第2章课程设计内容
2.1课程设计主要内容
该程序是简单的汉诺塔游戏,其界面主要采用了awt包,程序实现了汉诺塔游戏的可玩性,使用鼠标操作,并且有菜单支持,游戏界面简洁直观,可玩性极高,可满足玩家的需求。
2.2概要设计
2.2.1自定义类说明
classMyData
主要数据及逻辑
fr.addWindowListener(newMyWindowAdapter());
给窗口加入windows事件监听器
fr.setResizable(false)
设为用户不可改变窗体大小
fr.setBackground(Color.WHITE);
框架fr的背景颜色设置为白色
汉诺塔系统流程图,如图2.1
图2.1
2.3详细设计
源代码及注释:
importjava.awt.*;//GUI支持
importjava.awt.event.*;//GUI事件支持
importjavax.swing.JOptionPane;//对话框支持
classMyData
{//主要数据及逻辑
privateintm_top;//拿起的方块
privateintm_size;//方块总数-1
privateint[][]m_room;//方块数组
privateint[]m_pos;//每组方块最顶的位置
publicMyData()
{
m_room=newint[8][3];
m_pos=newint[3];
Start(4);
}//endmethodMyData
publicvoidStart(intx)
{
m_size=x-1;
for(inti=0;i<=2;i++)
{
for(intj=0;j<8;j++)
{
m_room[j][i]=0;
}
m_pos[i]=-1;
}
for(inti=0;i{
m_room[i][0]=x-i;
}
m_pos[0]=x-1;
m_top=0;
}//endmethodStart
booleanTake(intx)
{
if(m_pos[x]==-1)returnfalse;
m_top=m_room[m_pos[x]][x];
m_room[m_pos[x]][x]=0;
m_pos[x]--;
returntrue;
}//endmethodTake
booleanDrop(intx)
{
if(m_pos[x]!
=-1)
{
if(m_top>m_room[m_pos[x]][x])
returnfalse;
}
m_pos[x]++;
m_room[m_pos[x]][x]=m_top;
m_top=0;
returntrue;
}//endmethodDrop
publicbooleanTestFull()
{
if(m_pos[1]==m_size)returntrue;
if(m_pos[2]==m_size)returntrue;
returnfalse;
}//endmethodTestFull
publicbooleanClick(intx)
{
if(TestFull())returnfalse;
if(m_top==0)
Take(x);
else
Drop(x);
//JOptionPane.showMessageDialog(null,""+x);
returntrue;
}//endmethodClick
publicintGetTop()
{
returnm_top;
}//endmethodGetTop
publicintGetBlock(intx,intgroup)
{
returnm_room[x][group];
}//endmethodGetBlock
}//endclassMyData
classMyWindowAdapterextendsWindowAdapter
{//只实现需要的方法
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);//terminateapplication
}//endmethodwindowClosing
}//endclassMyWindowAdapter
classMyMouseAdapterextendsMouseAdapter
{
publicvoidmouseClicked(MouseEvente)
{
//JOptionPane.showMessageDialog(null,"x"+e.getX()+"y"+e.getY());
Mainfr=(Main)e.getSource();
DimensionfrSize=fr.getSize();
intx=e.getX();
intw=frSize.width/3;
if(x{
fr.mdta.Click(0);
}
elseif(x<(2*w))
{
fr.mdta.Click
(1);
}
else
{
fr.mdta.Click
(2);
}
fr.repaint();
}//endmrthodmouseClicked
}//endclassMyMouseAdapter
publicclassMainextendsFrame
{
staticMyDatamdta;
publicMain(Stringstr)
{super(str);}
publicstaticvoidmain(Stringargs[])
{
mdta=newMyData();
finalMainfr=newMain("汉诺塔forjava,DKink");
fr.setResizable(false);//设为用户不可改变窗体大小
fr.setSize(300,300);//设置窗口大小
fr.setBackground(Color.WHITE);//框架fr的背景颜色设置为白色
//begin菜单支持
MenuBarmyMenu=newMenuBar();
MenuSMenu=newMenu("开始");
MenuItemMI3=newMenuItem("3");
MI3.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
mdta.Start(3);
fr.repaint();
}
}
);
MenuItemMI4=newMenuItem("4");
MI4.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
mdta.Start(4);
fr.repaint();
}
}
);
MenuItemMI5=newMenuItem("5");
MI5.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
mdta.Start(5);
fr.repaint();