汉诺塔游戏java编程.docx
《汉诺塔游戏java编程.docx》由会员分享,可在线阅读,更多相关《汉诺塔游戏java编程.docx(20页珍藏版)》请在冰点文库上搜索。
汉诺塔游戏java编程
辽宁工业大学
JAVA语言程序设计课程设计(论文)
题目:
汉诺塔游戏设计
院(系):
软件学院
专业班级:
计算机网络技术091班
学号:
091406015
学生姓名:
张铎赢
指导教师:
赵凯
教师职称:
讲师
起止时间:
2010.12.13至2010.12.24
程序设计专题(报告)任务及评语
软件学院教研室:
软件教研室
学号
5
学生姓名
专业班级
程序设计(报告)题目
程序设计(报告)任务
程序设计专题的任务与要求:
(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;//对话框支持
{//主要数据及逻辑
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;}//endmethodStartbooleanTake(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;}//endmethodTakebooleanDrop(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;}//endmethodDroppublicbooleanTestFull(){if(m_pos[1]==m_size)returntrue;if(m_pos[2]==m_size)returntrue;returnfalse;}//endmethodTestFullpublicbooleanClick(intx){if(TestFull())returnfalse;if(m_top==0)Take(x);elseDrop(x);//JOptionPane.showMessageDialog(null,""+x);returntrue;}//endmethodClickpublicintGetTop(){returnm_top;}//endmethodGetToppublicintGetBlock(intx,intgroup){returnm_room[x][group];}//endmethodGetBlock}//endclassMyDataclassMyWindowAdapterextendsWindowAdapter{//只实现需要的方法publicvoidwindowClosing(WindowEvente){System.exit(0);//terminateapplication}//endmethodwindowClosing}//endclassMyWindowAdapterclassMyMouseAdapterextendsMouseAdapter{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}//endclassMyMouseAdapterpublicclassMainextendsFrame{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);//显示窗口}//endmethodmainpublicvoidpaint(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}//endclassMainextendsFrame2.4测试分析2.4.1程序运行情况进入游戏主界面时。如图2.2图2.2用鼠标单击游戏界面左上角的开始,可以选择游戏难度,再用鼠标单击所需要的游戏难度,即可进入该难度的游戏,如图2.3图2.3用鼠标控制方块进行上下左右移动,目的是将左面的塔,移动的右面,而且,大砖块不能放在小砖块上面,如图2.4 图2.4当塔从左面移动到右面时,游戏结束,如图2.5 图2.52.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
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;
}//endmethodDrop
publicbooleanTestFull()
if(m_pos[1]==m_size)returntrue;
if(m_pos[2]==m_size)returntrue;
}//endmethodTestFull
publicbooleanClick(intx)
if(TestFull())returnfalse;
if(m_top==0)
Take(x);
else
Drop(x);
//JOptionPane.showMessageDialog(null,""+x);
}//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}//endclassMyMouseAdapterpublicclassMainextendsFrame{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);//显示窗口}//endmethodmainpublicvoidpaint(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}//endclassMainextendsFrame2.4测试分析2.4.1程序运行情况进入游戏主界面时。如图2.2图2.2用鼠标单击游戏界面左上角的开始,可以选择游戏难度,再用鼠标单击所需要的游戏难度,即可进入该难度的游戏,如图2.3图2.3用鼠标控制方块进行上下左右移动,目的是将左面的塔,移动的右面,而且,大砖块不能放在小砖块上面,如图2.4 图2.4当塔从左面移动到右面时,游戏结束,如图2.5 图2.52.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
fr.mdta.Click(0);
elseif(x<(2*w))
fr.mdta.Click
(1);
(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);
);
MenuItemMI4=newMenuItem("4");
MI4.addActionListener(newActionListener()
mdta.Start(4);
MenuItemMI5=newMenuItem("5");
MI5.addActionListener(newActionListener()
mdta.Start(5);
MenuItemMI6=newMenuItem("6");
MI6.addActionListener(newActionListener()
mdta.Start(6);
MenuItemMI7=newMenuItem("7");
MI7.addActionListener(newActionListener()
mdta.Start(7);
MenuItemMI8=newMenuItem("8");
MI8.addActionListener(newActionListener()
mdta.Start(8);
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窗体居中
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
if(mdta.GetBlock(n,1)!
NDISK_D+NDISK_S,200-n*NDISK_H,
NDISK_W*mdta.GetBlock(n,1),
if(mdta.GetBlock(n,2)!
2*NDISK_D+NDISK_S,200-n*NDISK_H,
NDISK_W*mdta.GetBlock(n,2),
//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.拿起砖块时的异常
2.完成时的异常
第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