迷宫游戏实习报告(java)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2009-2010-2课程实验报告高级程序设计(JA V A)
专业班级
姓名
学号
实验名称:迷宫实验
1 实验要求
I.用面向对象的思想编写扩展的“猜数字”游戏。II.走迷宫游戏:
i设置一个迷宫(如:大小10×10、16×16等)ii迷宫固定一个入口,一个出口
iii设计算法来找出走出迷宫的路线
iv如果迷宫是死胡同,则提示并结束游戏
2 设计及实现
2.1设计思路
类图:
程序流程图:
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.sitey { if(visted[site.sitey][site.sitex]==false) { seekStack.push(site); //位置入栈 visted[site.sitey][site.sitex]=true; //该位置已被访问 } if(maze[site.sitey][site.sitex+1]== 0&&visted[site.sitey][site.sitex+1]==false) //该位置往右可通且未被访问 { maze[site.sitey][site.sitex]=2; //用→表示该位置向右可通 site=point.goright(site); //移动到右侧下一位置 continue; } else if(maze[site.sitey+1][site.sitex]== 0&&visted[site.sitey+1][site.sitex]==false) //该位置往下可通且未被访问 { maze[site.sitey][site.sitex]=3; //用↓表示该位置向下可通 site=point.godown(site); //向下移动一位置 continue; } else if(maze[site.sitey][site.sitex-1]== 0&&visted[site.sitey][site.sitex-1]==false) //该位置往左可通且未被访问 { maze[site.sitey][site.sitex]=4; //用←表示该位置向左可通 site=point.goleft(site); //向左移动一个位置 continue; } elseif(site.sitey!=0&&maze[site.sitey-1][site.sitex]== 0&&visted[site.sitey-1][site.sitex]==false) //该位置往上可通且未被访问 { maze[site.sitey][site.sitex]=5; // 用↑表示该位置向上可通 site=point.goup(site); //向上移动一个位置 continue; } else //该位置不同 { site die=new site(); die=(site)seekStack.pop(); //将该位置从堆栈中弹出 maze[die.sitey][die.sitex]=0; if (seekStack.empty()==true) { break; } site=(site) seekStack.peek(); //visted[site.sitey][site.sitex]=false; //maze[site.sitey][site.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学习中,遇到某一个困难我们要去搜集各方面的资料获得解决这个困难的知识,也可以改变一下算法也是可以的。因