




免费预览已结束,剩余9页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2009-2010-2课程实验报告高级程序设计(JAVA)专业班级 姓 名 学 号 高级程序设计(JAVA)实验报告实验名称:迷宫实验1 实验要求I用面向对象的思想编写扩展的“猜数字”游戏。II走迷宫游戏:i设置一个迷宫(如:大小1010、1616等)ii迷宫固定一个入口,一个出口iii设计算法来找出走出迷宫的路线iv如果迷宫是死胡同,则提示并结束游戏2 设计及实现2.1设计思路类图:Place Int place;Int n; Place() makeplace()printplace()FindWaysite site;Point point;boolean visted;Place pl=new Place();FindWay()findTheWay(int maze)Point goup() godown() goright() goleft() site Int sitex; Int sitey; 程序流程图:Start Output“设置迷宫大小”Input the style of mazeMake the mapOutput“输入整数 2 显示迷宫答案; 输入整数 3 结束游戏 请选择操作序号:”Input the number 2 or 3 If input 3 if input 2 Find wayHave way?Output“用户终止了程序” YES NOoutput the way of the maze Output“没有出路” End 2.2 核心算法/向上走site goup(site s)s.sitex=s.sitex;s.sitey=s.sitey-1;return s;/向下走site godown(site s)s.sitex=s.sitex;s.sitey=s.sitey+1;return s;/向右走site goright(site s)s.sitex=s.sitex+1;s.sitey=s.sitey;return s;/向左走site goleft(site s)s.sitex=s.sitex-1;s.sitey=s.sitey;return s;/寻找迷宫路径boolean findTheWay(int maze) Stack seekStack =new Stack(); /路径储存堆栈while(site.sitey!=pl.n-1|site.sitex!=pl.n-2&0=site.sitey&site.siteypl.n&0=site.sitex&site.sitexpl.n) /还没有到达出口时 if(vistedsite.siteysite.sitex=false) seekStack.push(site); /位置入栈 vistedsite.siteysite.sitex=true; /该位置已被访问 if(mazesite.siteysite.sitex+1= 0&vistedsite.siteysite.sitex+1=false) /该位置往右可通且未被访问 mazesite.siteysite.sitex=2; /用表示该位置向右可通 site=point.goright(site); /移动到右侧下一位置 continue; else if(mazesite.sitey+1site.sitex= 0&vistedsite.sitey+1site.sitex=false) /该位置往下可通且未被访问 mazesite.siteysite.sitex=3; /用表示该位置向下可通 site=point.godown(site); /向下移动一位置 continue; else if(mazesite.siteysite.sitex-1= 0&vistedsite.siteysite.sitex-1=false) /该位置往左可通 且未被访问 mazesite.siteysite.sitex=4; /用表示该位置向左可通 site=point.goleft(site); /向左移动一个位置 continue; elseif(site.sitey!=0&mazesite.sitey-1site.sitex= 0&vistedsite.sitey-1site.sitex=false) /该位置往上可通 且未被访问 mazesite.siteysite.sitex=5; / 用表示该位置向上可通 site=point.goup(site); /向上移动一个位置 continue; else /该位置不同 site die=new site(); die=(site)seekStack.pop(); /将该位置从堆栈中弹出 mazedie.siteydie.sitex=0; if (seekStack.empty()=true) break; site=(site) seekStack.peek();/vistedsite.siteysite.sitex=false;/mazesite.siteysite.sitex=0;System.out.println(site.sitey+ +site.sitex); if (site.sitey=pl.n-1&site.sitex=pl.n-2) return true; else System.out.println(没有出路,游戏结束!); return false; 3 心得及思考这次的实验花费了我很多时间,每堂课都进展不大。这样不放手反而没有使自己得到更快的进步反而是自己落后了。所以当我们遇到困难时不要只是盯着困难不去环视周围,我们应该通过向各个方向找出路,就像在迷宫中一样,每次的目标是四面八方。如果我们我们只是盯着阻碍我们的那一点,最后我们只能是被堵死。例如:在java学习中,遇到某一个困难我们要去搜集各方面的资料获得解决这个困难的知识,也可以改变一下算法也是可以的。因此,我们要把眼光放开,而不是聚焦在某一点。编程过程中,由于对游戏的理解不深刻,在编程之前不能把所有的类一起抽象出来,根本就没有思路,本来我想完全通过自己来完成这个作业,弄了很长时间也没弄出来,所以我又在网上查了一些资料把编迷宫的思路捋清了。抽象出四个类,共有九个方法。在我真正的编程的过程中遇到了很多困难,其中有语法错误,还有代码错误。这些错误经过我认真地检查后都一一排除。等我满怀希望的运行我的程序时,最头痛得错误出现了。我是用堆栈储存路线的(一个结点只能储存一步),当路线不通时就要弹出最后一个结点,在这里我用了pop()函数和peek()函数。Pop()函数弹出错误节点,peek()函数找到上一个位置然后继续走路。栈中的节点弹出来了,可是每次都弹出同一个节点,而且每次获取的也是弹出的节点,问老师,同学,上网查都没有找到原因。因此花费了很长时间。在软件工程导论中学过要先确定自己真正要做的是什么,然后去在代码中实现自己要做的事情。通过这次试验让我认识到个人的力量是有限的,要想做好一个软件我们需要借鉴他人的知识。对于这次迷宫试验,真正由我自己写的代码只有20%。不过通过这次的迷宫实验是我对java语言有了更深一层次的了解,和上学年学习的c语言和c+语言做比较我还是比较喜欢java语言,因为我在编写迷宫实验的过程中感觉使用java语言比使用其他语言更简单一些。附录1:求迷宫游戏全代码import java.util.*;class Placeint place;int n;Place()Scanner sc;System.out.println(选择迷宫的大小:);sc=new Scanner(System.in);n=sc.nextInt();place=new intnn;for(int i=0;in;i+)for(int j=0;jn;j+)placeij=1;place01=0;placen-1n-2=0;void makeplace()for(int i=1;in-1;i+)for(int j=1;jn-1;j+)int iRan = (int) (Math.random() * 10) + 1) % 3;if (iRan = 0) placeij = 1;else placeij = 0;void printplace()for(int i=0;in;i+)for(int j=0;jn;j+)if(placeij=1)System.out.print();else if(placeij=0)System.out.print();else if(placeij=2)System.out.print();else if (placeij=3)System.out.print();else if (placeij=4)System.out.print();else if (placeij=5)System.out.print(); System.out.println();class siteint sitex;int sitey;site()sitex=1;sitey=0;class Pointsite goup(site s)s.sitex=s.sitex;s.sitey=s.sitey-1;return s;site godown(site s)s.sitex=s.sitex;s.sitey=s.sitey+1;return s;site goright(site s)s.sitex=s.sitex+1;s.sitey=s.sitey;return s;site goleft(site s)s.sitex=s.sitex-1;s.sitey=s.sitey;return s; class FindWaysite site;Point point;boolean visted;Place pl=new Place();FindWay() visted=new booleanpl.npl.n;site=new site();point=new Point();for (int i=0;ipl.n;i+) for (int j=0;jpl.n;j+)vistedij=false; boolean findTheWay(int maze) Stack seekStack =new Stack(); while(site.sitey!=pl.n-1|site.sitex!=pl.n-2&0=site.sitey&site.siteypl.n&0=site.sitex&site.sitexpl.n) if(vistedsite.siteysite.sitex=false) seekStack.push(site); vistedsite.siteysite.sitex=true; if(mazesite.siteysite.sitex+1= 0&vistedsite.siteysite.sitex+1=false) mazesite.siteysite.sitex=2; site=point.goright(site); continue; else if(mazesite.sitey+1site.sitex= 0&vistedsite.sitey+1site.sitex=false) mazesite.siteysite.sitex=3; site=point.godown(site); continue; else if(mazesite.siteysite.sitex-1= 0&vistedsite.siteysite.sitex-1=false) mazesite.siteysite.sitex=4; site=point.goleft(site); continue; else if (site.sitey!=0&mazesite.sitey-1site.sitex= 0&vistedsite.sitey-1site.sitex=false) mazesite.siteysite.sitex=5; site=point.goup(site); continue; else site die=new site(); die=(site)seekStack.pop(); System.out.println(die.sitex+ +die.sitex); mazedie.siteydie.sitex=0; if (seekStack.empty()=true) break; site=(site) seekStack.peek();/vistedsite.siteysite.sitex=false;/mazesite.siteysite.sitex=0;System.out.println(site.sitey+ +site.sitex); if (site.sitey=pl.n-1&site.sitex=pl.n-2) return true; else System.out.println(没有出路,游戏结束!); return false; public class Game /*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人力资源管理师中级考试模拟题解析
- 2025年家庭财务规划师职业能力评估试题及答案解析
- 2025年安全管理能力测试题集及答案
- 2025年大唐应急安全演练测试题及答案
- 2025年互联网金融交易员专业能力认证考试试题及答案解析
- 2025年射线检测初级无损面试题库
- 2025年本科院校生物实验员面试题库
- 2025年动画设计师职业技能考试试题及答案解析
- 2025年安全生产安全审计操作考试题
- 2025年本科生物实验员面试模拟题集
- (完整版)万科物业服务合同2024
- 孩子抵抗力提升的方法与技巧
- 教学副校长给教师培训课件
- 一级建造师之一建矿业工程实务高分复习资料
- 交通信号设施施工技术交底
- 关于股权性质与货币市场的思考
- 市场监管个人纪律作风整顿心得体会
- 育婴员理论模拟考试试题及答案
- 小学数学教师业务水平考试试题
- 安全文明施工措施费支付申请表实用文档
- 杨式85式太极拳现用图解
评论
0/150
提交评论