汉诺塔游戏java编程.docx

上传人:b****1 文档编号:2045599 上传时间:2023-05-02 格式:DOCX 页数:20 大小:56.10KB
下载 相关 举报
汉诺塔游戏java编程.docx_第1页
第1页 / 共20页
汉诺塔游戏java编程.docx_第2页
第2页 / 共20页
汉诺塔游戏java编程.docx_第3页
第3页 / 共20页
汉诺塔游戏java编程.docx_第4页
第4页 / 共20页
汉诺塔游戏java编程.docx_第5页
第5页 / 共20页
汉诺塔游戏java编程.docx_第6页
第6页 / 共20页
汉诺塔游戏java编程.docx_第7页
第7页 / 共20页
汉诺塔游戏java编程.docx_第8页
第8页 / 共20页
汉诺塔游戏java编程.docx_第9页
第9页 / 共20页
汉诺塔游戏java编程.docx_第10页
第10页 / 共20页
汉诺塔游戏java编程.docx_第11页
第11页 / 共20页
汉诺塔游戏java编程.docx_第12页
第12页 / 共20页
汉诺塔游戏java编程.docx_第13页
第13页 / 共20页
汉诺塔游戏java编程.docx_第14页
第14页 / 共20页
汉诺塔游戏java编程.docx_第15页
第15页 / 共20页
汉诺塔游戏java编程.docx_第16页
第16页 / 共20页
汉诺塔游戏java编程.docx_第17页
第17页 / 共20页
汉诺塔游戏java编程.docx_第18页
第18页 / 共20页
汉诺塔游戏java编程.docx_第19页
第19页 / 共20页
汉诺塔游戏java编程.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汉诺塔游戏java编程.docx

《汉诺塔游戏java编程.docx》由会员分享,可在线阅读,更多相关《汉诺塔游戏java编程.docx(20页珍藏版)》请在冰点文库上搜索。

汉诺塔游戏java编程.docx

汉诺塔游戏java编程

 

辽宁工业大学

JAVA语言程序设计课程设计(论文)

 

题目:

汉诺塔游戏设计

 

院(系):

软件学院

专业班级:

计算机网络技术091班

学号:

091406015

学生姓名:

张铎赢

指导教师:

赵凯

教师职称:

讲师

起止时间:

2010.12.13至2010.12.24

 

程序设计专题(报告)任务及评语

院(系):

软件学院教研室:

软件教研室

学号

5

学生姓名

张铎赢

专业班级

计算机网络技术091班

程序设计(报告)题目

汉诺塔游戏设计

程序设计(报告)任务

程序设计专题的任务与要求:

(1)掌握Java编程、面向对象的基础知识。

(2)较熟练地编写Java应用程序Application。

(3)了解Java的常用标准类库、编程技巧、异常处理。

(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。

(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。

(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。

课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。

正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。

指导教师评语及成绩

 

成绩:

指导教师签字:

2010年12月24日

 

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

}

}

);

MenuItemMI6=newMenuItem("6");

MI6.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

mdta.Start(6);

fr.repaint();

}

}

);

MenuItemMI7=newMenuItem("7");

MI7.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

mdta.Start(7);

fr.repaint();

}

}

);

MenuItemMI8=newMenuItem("8");

MI8.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

mdta.Start(8);

fr.repaint();

}

}

);

SMenu.add(MI3);

SMenu.add(MI4);

SMenu.add(MI5);

SMenu.add(MI6);

SMenu.add(MI7);

SMenu.add(MI8);

myMenu.add(SMenu);

fr.setMenuBar(myMenu);

//end菜单支持

fr.setLayout(null);//取消布局管理器

fr.addWindowListener(newMyWindowAdapter());//给窗口加入windows事件监听器

fr.addMouseListener(newMyMouseAdapter());//加入Mouse动作监听器

/*

//begin窗体居中

DimensionfrSize=fr.getSize();

DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();

fr.setLocation((screenSize.width-frSize.width)/2,

(screenSize.height-frSize.height)/2);

//end窗体居中

*/

fr.setLocationRelativeTo(null);//窗体居中

fr.setVisible(true);//显示窗口

}//endmethodmain

publicvoidpaint(Graphicsg)

{

finalintNDISK_H=10;//盘子的高

finalintNDISK_D=80;//位置间距

finalintNDISK_S=50;//起始位置

finalintNDISK_W=5;//盘子的单位宽度

//begin方块组绘制

intn;

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(

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

}//endmethodpaint

}//endclassMainextendsFrame

2.4测试分析

2.4.1程序运行情况

进入游戏主界面时。

如图2.2

图2.2

用鼠标单击游戏界面左上角的开始,可以选择游戏难度,再用鼠标单击所需要的游戏难度,即可进入该难度的游戏,如图2.3

图2.3

用鼠标控制方块进行上下左右移动,目的是将左面的塔,移动的右面,而且,大砖块不能放在小砖块上面,如图2.4

 

图2.4

当塔从左面移动到右面时,游戏结束,如图2.5

 

图2.5

2.4.2程序异常处理

1.拿起砖块时的异常

if(mdta.GetTop()!

=0)//拿起的方块

g.drawRect(60,60,NDISK_W*mdta.GetTop(),NDISK_H);

2.完成时的异常

if(mdta.TestFull())//完成消息绘制

g.drawString("Finish",100,100);

第3章课程设计总结

通过这次汉诺塔游戏软件的设计,我有了很大的感悟,对java的学习热情更加浓厚,对自己现在有的理论知识和实践经验感到不足,但我对我自己有信心,我终于完成了我的第一个java小游戏的制作。

通过这次课程设计,我不仅拓展了自己的知识面,还在实践过程中巩固和加深了自己所学的理论知识,使自己的技术素质和实践能力有了进一步的提高,同时我的专业水平也有了很大的进步。

同时我在软件开发方面也积累了不少经验,对软件知识的重要性认识得更加深刻,通过设计过程的锻炼我自己的分析问题,解决问题的能力得到了显著的提高,完善了自己的知识结构,加深了对所学知识的理解。

这次课程设计是我学习到不少JAVA编程语言的知识,但由于自己的理论知识水平有限实践知识和设计经验不足,在设计过程中难免存在一些问题,这些我会在以后的学习实践中加以改进和提高。

通过这个学期的学习,我了解了它是一种面向对象的程序设计语言,它的这种面向对象编程接近于人类的语言和思维,而面向过程编程也接近于机器工作流程。

这次课程设计使我获得了很多东西,让我懂得了,做什么事情,首先最重要的是先学会分析,而且不要把思维局限在一起,要发散自己的思维,集各家之所长,这次课设,同学们对我的帮助是非常的大的。

虽然做的时候困难很多,但是我都一一克服了,在设计的过程中,我发现了自己的很多不足,改掉了平时爱马虎的毛病,对java的知识又有了新的认识,让我知道了java在我们现在生活中的普及性和重要性,让我对java更加重视起来,作为二十一世纪的大学生,学习java是非常重要的。

所以我以后要好好学习java,锻炼自己的能力。

参考资料

[1]王克宏编著JAVA语言入门清华大学出版社1996

[2]旭日工作室编著Java1.1使用大全电子工业出版社1998

[3][美]CayS.Horstmann程峰等译JAVA2核心技术机械工业出版社2003.6

[4]HorstmannCS,CornellG著Java2核心技术机械工业出版社2000

[5]马凡李璠编著JavaScript实例应用中国铁道出版社2001

[6]耿祥义JAVA大学实用教程电子工业出版社2005.3

[7]王克宏编著.Java语言Applet编程技术.清华大学出版社1997

[8]LewisJ,LoftusW著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

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2