四川师范大学成都学院专科毕业设计
}
if(n==20)
{ if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) {map[manY][manX]=4;} else map[manY][manX]=2; }
else if(n==21)
{ if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) {map[manY][manX]=9;} else map[manY][manX]=3;
if(maptmp[manY+1][manX]==4||maptmp[manY+1][manX]==9) {map[manY+1][manX]=4;} else map[manY+1][manX]=2; }
map[manY-1][manX]=5;repaint();manY--;
(5)移动的代码
在本小游戏系统中,小人与箱子的移动应该是能带给玩家较为逼真的视觉感受,这样才能体现系统的有效性与娱乐性。玩家通过控制小人,推动箱子在草地上避过障碍物与边界死角来到达指定的终点位置。
其中,这个部分的部分代码为:
void moveright() {
if(map[manY][manX+1]==2||map[manY][manX+1]==4) {
if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY][manX+1]=7; repaint();manX++;mystack.push(40); }
else if(map[manY][manX+1]==3) {
if(map[manY][manX+2]==4)
17
四川师范大学成都学院专科毕业设计
}
{ if(maptmp[manY][manX]==4){map[manY][manX]=4;} else map[manY][manX]=2; map[manY][manX+1]=7;map[manY][manX+2]=9; repaint();manX++;mystack.push(41); } else if(map[manY][manX+2]==2) { if(maptmp[manY][manX]==4){map[manY][manX]=4;} else map[manY][manX]=2; map[manY][manX+1]=7;map[manY][manX+2]=3; repaint();manX++;mystack.push(41); } else {map[manY][manX]=7;repaint();} }
else if(map[manY][manX+1]==9) {
if(map[manY][manX+2]==4) {
if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY][manX+1]=7;map[manY][manX+2]=9; repaint();manX++;mystack.push(41); } else if(map[manY][manX+2]==2) {
if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) map[manY][manX]=4; else map[manY][manX]=2; map[manY][manX+1]=7;map[manY][manX+2]=3; repaint();manX++;mystack.push(41); } else {map[manY][manX]=7;repaint();} }
else if(map[manY][manX+1]==1) {map[manY][manX]=7;repaint();}
18
四川师范大学成都学院专科毕业设计
void backright(int t) { int n=t; if(n==40)
{ if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) {
map[manY][manX]=4; }
else map[manY][manX]=2; }
else if(n==41) {
if(maptmp[manY][manX]==4||maptmp[manY][manX]==9) {map[manY][manX]=9;} else map[manY][manX]=3; if(maptmp[manY][manX+1]==4||maptmp[manY][manX+1]==9) {map[manY][manX+1]=4;} else map[manY][manX+1]=2; }
map[manY][manX-1]=7;repaint();manX--; }
(6)堆栈的应用
在推箱子小游戏中,数据的存储是非常重要的,不然就无法进行“悔一步”的操作。本小游戏系统受用了堆栈的存储方式来存储并且控制小人与箱子的移动以及地图文件的变换。而“悔一步”的操作让玩家可以进行反悔这一步操作,可避免因一时失手走错而导致的阻塞书面,可以节省玩家重新开始的时间。
其中,这个部分的部分代码为: else if(e.getSource()==btnback) { if(panel.isMystackEmpty())
JOptionPane.showMessageDialog(this,\您还未移动!\else {
switch(panel.back()) {
case 10:panel.backup(10);break; case 11:panel.backup(11);break;
19
四川师范大学成都学院专科毕业设计
}
case 20:panel.backdown(20);break; case 21:panel.backdown(21);break; case 30:panel.backleft(30);break; case 31:panel.backleft(31);break; case 40:panel.backright(40);break; case 41:panel.backright(41);break; } }
panel.requestFocus();
20
四川师范大学成都学院专科毕业设计
结 论
通过编写本次毕业设计程序,我完成了基于JAVA的推箱子小游戏的软件开发任务。在些其间,我遇到了许多问题,如地图文件的制作与读取、游戏界面过大或者过小、游戏图形的大小问题、小人与箱子的移动算法、堆栈算法的编写、悔步等操作的处理等等。不过,最终我都一一解决了相关问题,对其中比较主要的几点体会总结如下:
第一,为了熟悉推箱子小游戏的相关运作,我经常在电脑游戏上运用推箱子游戏,一步步地发现它所有的功能,然后再思考与查阅资料进行分析,最后经过逐步的设计与反复的修改论证,才完成了整个小游戏的开发。
第二,完成了从“小到全”,从“全到精”的转变。在设计的过程中,我经常会遇到一些困难,我也借此机会学会如何通过反复思考和测试找出自己的错误并加以改正,再进行下一个步骤的设计。本程序就是这样一点一点的完成的,在这之后再来优化整个程序。
第三,本次设计也让我得到一个不断学习新鲜事物的机会,从设计初的诸多不懂到最后能够顺利完成,期间我体会到在实践中学习的重要性,这对于将来我走上工作岗位具有重要意义。
第四,通过毕业设计使我对Java这门课程加深了解,也对我今后的就业之路奠定了一定的基础。
经过这些日子的不断努力,本次的毕业设计程序基本上完成了。回顾整个设计过程,我学到了许多书本上没有学到的知识。通过这次自己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,不仅使我受益匪浅,同时也体验到了开发软件开发的难度与不断更新自己的重要性。由于我是初次涉及这类开发软件,因此这其中或许还有很多的不足之处,界面的设计及整体的布局还比较简单,没有特别突出的特色,这也是我今后所要充实之处,在这里也恳请各位老师能够对我的作品指明不足并加以改正。
总体来说,这次毕业设计还是比较成功的,这也是我在大学四年来完成的一个比较全面的实际例子。在这次设计的过程,我也查阅了大量的资料,对Java有了更加全面的认识,对于软件工程这些辅助性的教材也巩固了不少,也为我这次的毕业设计提供了很大的帮助,同时锻炼并且增强了我这方面的能力。
21