汉诺塔游戏java编程_第1页
汉诺塔游戏java编程_第2页
汉诺塔游戏java编程_第3页
汉诺塔游戏java编程_第4页
汉诺塔游戏java编程_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

辽 宁 工 业 大 学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章 课程设计的目的与要求11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章 课程设计内容22.1课程设计主要内容22.2概要设计22.2.1自定义类说明22.3详细设计32.4.1程序运行情况132.4.2程序异常处理16第3章 课程设计总结17附录参考资料18第1章 课程设计的目的与要求1.1 课程设计目的JAVA程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完JAVA程序设计课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。1.3 课程设计的预备知识熟悉JAVA语言及ECLIPSE开发工具。1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。第2章 课程设计内容2.1课程设计主要内容该程序是简单的汉诺塔游戏,其界面主要采用了awt包,程序实现了汉诺塔游戏的可玩性,使用鼠标操作,并且有菜单支持,游戏界面简洁直观,可玩性极高,可满足玩家的需求。2.2概要设计2.2.1自定义类说明class MyData主要数据及逻辑fr.addWindowListener(new MyWindowAdapter();给窗口加入windows事件监听器fr.setResizable(false)设为用户不可改变窗体大小fr.setBackground(Color.WHITE);框架fr的背景颜色设置为白色汉诺塔系统流程图,如图2.1操作系统游戏功能处理程序鼠标游戏难度文件显示器图2.12.3详细设计源代码及注释: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;/方块数组 private int m_pos;/每组方块最顶的位置 public MyData() m_room = new int83; m_pos = new int3; 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;j8;j+) m_roomji = 0; m_posi=-1; for(int i=0;i m_roomm_posxx) return false; m_posx+; m_roomm_posxx = m_top; m_top = 0; return true; /end method Drop public boolean TestFull() if(m_pos1=m_size)return true; if(m_pos2=m_size)return true; return false; /end method TestFull public boolean Click(int x) if(TestFull()return false; if(m_top = 0) Take(x);else Drop(x); /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_roomxgroup; /end method GetBlock/end class MyDataclass MyWindowAdapter extends WindowAdapter/只实现需要的方法 public void windowClosing(WindowEvent e) System.exit(0);/terminate application /end method windowClosing/end class MyWindowAdapterclass 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; 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 MyMouseAdapterpublic 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的背景颜色设置为白色 /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() 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() 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); 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); /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;n8;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;n8;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;n8;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 Frame2.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编程语言的知识,但由于自己的理论知识水平有限实践知识和设计经验不足,在设计过程中难免存在一些问题,这些我会在以后的学习实践中加以改进和提高。通过这个学期的学习,我了解了它是一种面向对象的程序设计语言,它的这种面向对象编程接近于人类的语言和思维,而面向过程编程也接近于机器工作流程。这次课程设计使我获得了很多东西,让我懂得了,做什么事情,首先最重要的是先学会分析,而且不要把思维局限在一起,要发散自己的思维,集各家之所长,这次课

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论