1、JAVA 课程设计实验报告 课 程 设 计 报 告 课 程 名 称 Java语言程序设计 班 级 10计算机1班 姓 名 赵阳阳 学 号 10138005 指 导 教 师 乐毅 报告提交日期 2012年5月8日 简易迷宫系统的设计与实现一、课程设计的目的为了培养学生结构化程序设计的思想,加深对JAVA语言基本语言要素和控制结构的理解与运用,针对java语言中的重点和难点内容进行训练,独立完成程序设计任务,锻炼学生动手操作能力。二、系统分析与设计1需求分析 基于java实现的简易迷宫系统,通过判断棋子所走路径是wall还是road,来实现从入口到出口的整个流程,并可任意选择五种不同的迷宫。2概要
2、设计首先使用maze类实现整个迷宫的图形用户界面,然后根据Handlemove和WallorRoad来判断旗子下一步路径,并根据主页面的两个menuitem选项来转换不同风格的迷宫。3. 总体设计 简易迷宫系统主要包括6个类,它们的功能如下。(1)Maze类和MazeWindow其主要功能为实现整个迷宫的图形用户界面,根据函数来选择之前准备好的maze类型的六种不同迷宫。(2)HandleMove类用来控制旗子所走路径,并添加textfield来限制所用时间,通过timer定时器来进行控制(3) MazePoint类用来确定旗子的横纵坐标,通过isHaveWallOrRoad和setIsWal
3、lOrRoad两个函数来实现坐标选择。(4) personMaze类来对所用旗子进行图形选择。(5) WallOrRoad类来判断是Wall还是Road。流程图: 简易迷宫系统实现功能图: 主要代码的方法调用:三、补充功能1添加、查看英雄榜记录每次用时并将用时最少的前三名放入英雄排行榜,用户可以随时查看英雄榜的记录。结构图:英雄榜:2.当完成任务时,发出庆祝的声音!3.本程序允许用户更改迷宫中的“墙”和“路”上的图像!4.规定一个时间上限,如果用时超过所规定的上限,“走迷宫者”上的图像变为pig.jpg!四、部分代码实现 HandleMove() throws MalformedURLExce
4、ption musicFile=new File(hello.wav); uri=musicFile.toURI(); url=uri.toURL(); clip=Applet.newAudioClip(url); recordTime=new javax.swing.Timer(1000,this); showTime=new JTextField(16); tool=getToolkit(); showTime.setEditable(false); showTime.setHorizontalAlignment(JTextField.CENTER); showTime.setFont(n
5、ew Font(楷体,Font.BOLD,16); JLabel hitMess=new JLabel(单击走迷宫者,按键盘方向键,JLabel.CENTER); hitMess.setFont(new Font(楷体,Font.BOLD,18); add(hitMess); add(showTime); setBackground(Color.cyan); public void setMazePoint(MazePoint point) p=point; public void initSpendTime() recordTime.stop(); spendTime=0; showTime
6、.setText(null); public void keyPressed(KeyEvent e) recordTime.start(); PersonInMaze person=null; person=(PersonInMaze)e.getSource(); int m=-1,n=-1; MazePoint startPoint=person.getAtMazePoint(); for(int i=0;ip.length;i+) for(int j=0;jpi.length;j+) if(startPoint.equals(pij) m=i; n=j; break; if(e.getKe
7、yCode()=KeyEvent.VK_UP) int k=Math.max(m-1,0); if(pkn.getWallOrRoad().getIsRoad() tool.beep(); /发出嘟的一声 person.setAtMazePoint(pkn); person.setLocation(pkn.getX(),pkn.getY(); else if(e.getKeyCode()=KeyEvent.VK_DOWN) int k=Math.min(m+1,p.length-1); if(pkn.getWallOrRoad().getIsRoad() tool.beep(); person
8、.setAtMazePoint(pkn); person.setLocation(pkn.getX(),pkn.getY(); else if(e.getKeyCode()=KeyEvent.VK_LEFT) int k=Math.max(n-1,0); if(pmk.getWallOrRoad().getIsRoad() tool.beep(); person.setAtMazePoint(pmk); person.setLocation(pmk.getX(),pmk.getY(); else if(e.getKeyCode()=KeyEvent.VK_RIGHT) int k=Math.m
9、in(n+1,p0.length-1); if(pmk.getWallOrRoad().getIsRoad() tool.beep(); person.setAtMazePoint(pmk); person.setLocation(pmk.getX(),pmk.getY(); public void actionPerformed(ActionEvent e) spendTime+; showTime.setText(您的用时:+spendTime+秒); public void keyReleased(KeyEvent e) PersonInMaze person=(PersonInMaze
10、)e.getSource(); int m=-1,n=-1; MazePoint endPoint=person.getAtMazePoint(); if(endPoint.getWallOrRoad().getIsOut()clip.loop(); recordTime.stop(); JOptionPane.showMessageDialog(this,您成功了!,消息框, JOptionPane.INFORMATION_MESSAGE ); public void keyTyped(KeyEvent e) 注:完整代码见源代码文档运行界面:四、运行调试与分析讨论由于没有把所有的类放在一个
11、java文件中,而是放在了几个不同的java文件里,然而每个文件又要相互使用定义的类,导致不能编译运行。同时,没有把类之间的关系处理好,也造成了不能运行的原因。在上网查阅资料后,使问题的根源得以解决,使得程序终于能顺利运行。五、总结 JAVA语言课程设计是我们学完理论课程之后对自己动手操作能力的一次锻炼,也是自己对JAVA学习结果的一次很好的检验,在学习过程中,能够了解到自己的不足,对自己不熟悉的,能够及时查阅资料,不仅让我们巩固了原有的理论知识,培养了我们把所学的运用到实际。同时,也让我了解到学习的重要性,有些还有待今通后慢慢学习,只要认真学就会有更多的收获。总之这次课程设计使我更多的掌握了所学的知识,并运用到实践上,了解了java的重要性,对以后的学习起了重要作用。对以后作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现己的意义。希望自己以后会做的越来越好。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1