




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
_四川师范大学成都学院本科毕业设计 推箱子游戏设计与实现学生姓名张起明学 号2012101087所 在 系通信工程系专业名称通信工程班 级2012级宽带一班指导教师陆园四川师范大学成都学院二一六年五月推箱子游戏的设计与实现前言于如今竞争激烈的快节奏时代中,人们的生活水平越来越繁忙,因为此,愈来愈多的人感到内心的空虚与压力带来的烦躁,这些也带给人们许许多多心理上和身体上的困惑。所以如何缓解当代人们的生活压力,已成为人们的共同夙愿。这一次的这个基于JAVA的推箱子小游戏正是使用JAVA语言并且结合于Eclipses编译器,开发出了这样一款适合用于休闲的小游戏,在放松的同时也给忙碌的人们打开另一个思考的空间。这一款基于JAVA开发的推箱子主要分为初始化、画图、移动小人、移动箱子以及功能控制共五个模块。玩家可以通过控制游戏中的小人的移动来实现推动箱子,同时需要避开障碍物和死角方能将箱子推放到正确位置从而过关。每关的难易程度各不相同,不仅可以供人们用以娱乐,还有助于开发智力,提高人们思考问题与想象的能力,改善人们的思维方式,拓展思维。关键词:JAVA 解压 推箱子 游戏精品资料AbstractIn todays competitive era of fast-paced, people s living level is becoming more and more busy, because of this, an increasing number of people have felt irritability of emptiness and pressure, these also bring people many psychological and physical puzzles. So how to alleviate the pressure of contemporary life, has become the common aspiration of the people. This time the based on Java Sokoban game is using the Java language and the combination of the eclipses of the compiler developed such a suitable for leisure game, in a relaxed but also to the busy people to open another thinking space. This is based on the JAVA development of the push box is divided into initialization, drawing, moving people, moving boxes and a total of five functional control module. Players can control the game through the villains mobile to achieve the promotion of the box, while the need to avoid obstacles and dead side to push the box to the correct position so that. Each level of difficulty is different, not only can be used for people to entertain, but also helps to develop intelligence, improve peoples ability to think about problems and imagination, improve peoples way of thinking, expand thinking.Key Words:JAVA Relieve pressure Push box Game精品资料_目 录前言IAbstractII1 可行性研究21.1设计目的21.2可行性研究前提21.3可行性分析21.4结论意见32需求分析32.1引言32.2游戏需求32.3软硬件需求4硬件环境需求:4软件环境:42.4接口控制42.5方案论证42.5.1.C+语言的优点42.5.2.Java语言的优点52.5.3.方案选择63概要设计73.1游戏设计分析73.3.1.地图文件的引用73.3.2.程序运逻辑73.3.3.绘图73.3.4.显示平台73.2 注意事项83.3 游戏流程图84.详细设计94.1游戏总体结构与代码9结 论21参 考 文 献22致 谢231 可行性研究1.1设计目的灵活运用自己在学校学习期间所学到的理论知识和实际动手技能,并结合自己于课外查找到的资料,该推箱子游戏设计并开发基于JAVA,使自己能够熟悉和熟练应用开发过程及相关技能,培养独立思考能力,测试学习结果,实践和提高编程能力,并为今后的工作打下坚实基础的实际能力。1.2可行性研究前提基本需求:系统开发的总体任务是综合体现游戏本身的可操作性、美观性和及时性。在游戏的开发过程中谨遵软件工程规范,可采用结构化或面向对象分析的设计方法。主要是实现Windows的GUI程序开发,对游戏中的图形图像通过键盘进行控制。玩家可通过控制键盘上的上下左右方向按键来对游戏中的人物进行移动操作。主要开发目标:采用结构化的设计方法,开发出一个操作简单、界面简洁且美观、适合人们用以休闲娱乐的小游戏,实现Windows的GUI程序开发,并期望能够通过此次游戏开发过程全面提高个人自身的综合素质。条件假定和限制:由于对编程语言的学习以及理解还不是很到位,因此本游戏可能会在诸多方面存在一些问题以及不足之处。可行性研究所采用的方法和步骤:通过研究分析推箱子小游戏所需要的具体功能以及这些功能实现的方法、确定主体结构。利用所学到的知识,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。评价尺度:由于本软件是一个初级产品,因此对其要求并不是太苛刻,所以只需要能够达到推箱子小游戏的一般功能即可。1.3可行性分析管理可行性: 这款推箱子游戏软件的设计目的是为了提高自身素质以及检查自己在校期间所学习JAVA的相关知识的成果,运用JAVA语言编写后,在EditPlus编译器中运行简单明了,所有功能全部根据基本需求所做,从而得以便于管理,所以在这方面是可以实现的。经济可行性:由于本游戏的主要背景是毕业设计,不注重其直接可能产生的经济效益和其后的发展方向,其关键在于注重个人自身独立编写JAVA程序的水平以及其能力的提高,对自身的经济要求也不高,只要有一台能运行JAVA软件和EditPlus编译器的电脑即可,所以可以不用考虑经济方面的相关问题。技术可行性:对于本游戏,可以使用如VB,Java,Delphi等诸多相关的编程语言进行编写,但是考虑到编写程序的难易程度、个人自身对编译语言的了解程度以及完成的便利性等方面因素,故本游戏选择了以JAVA程序语言作为编程语言。需要对变量定义、变量初始化、界面初始化、游戏初始化等,然后就可以进入游戏,处理游戏过程中的各种操作。社会可行性:本游戏的开发仅作为毕业课程设计使用,仅用来巩固先前所学的知识,是以个人为单位的,可供个人或他人平常娱乐解压所用,无需考虑该游戏有可能造成的社会影响,因此可以不用考虑到法律、版权等多方面的社会因素,所以在这方面也是完全可行的。1.4结论意见综上所述,本游戏软件程序的技术基本成熟。经过出于管理可行性、经济可行性、技术可行性和社会可行性这四大方面的分析,在这些方面上均无重大问题,因此能够达到此次设计所预期的目的,所以可开始着手编写本次游戏程序。2需求分析2.1引言对软件需求的透彻理解,对于软件开发工作能否成功是起着至关重要的作用,需求说明的任务是发现、规范的过程,这有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,有助于采用工程方法开发软件,提高软件的质量,还有利于开发人员、维护人员、管理人员之间的交流以及协作,并且可以作为工作成果的原始依据;再者,亦可在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相符合。2.2游戏需求玩家是通过对小人的移动操作来控制推动箱子的,并且玩家需要避过障碍物以及死角,才能将其推放到指定位置从而达到过关的目的。如果玩家将箱子推入死角导致箱子无法移动或不能移动到指定位置则闯关失败,可以通过悔步或重新开始等操作来重新挑战本关。游戏功能需求如下所示:游戏界面需求:简洁美观的用户界面,可以带给用户自然清晰的画面。游戏内容需求:良好的小人与箱子设计,可以给玩家带来更真实的感觉。小人需要前、后、左、右四张图片,移动中的箱子与终点上的箱子要所有区别,因此需要两不同的图片以示区别。键盘处理事件:控制小人与箱子的移动,可通过键盘方向键(上、下、左、右键)对小人进行上、下、左、右的移动,并且能够推动箱子。显示需求:当所有箱子都到达指定位置后即可过关,若进入死角则无法过关,需要进行悔步或重新开始的操作。可以由玩家喜欢选择关卡进行游戏。2.3软硬件需求 硬件环境需求:CPU:PentiumIII 600以上;内存要求:2GB以上;内存剩余资源:128MB以上; 软件环境:JDK 1.5及其以上的版本。2.4接口控制本小游戏需要通过键盘进行操作,在Windows的操作系统下,利用键盘的上、下、左、右方向按键控制小人的行动来推动箱子,要使用键盘的接口实现。2.5方案论证学校开设的关于学习编程语言的课程有C+语言、Java程序语言等,皆可用于编写推箱子小游戏的程序。2.5.1 C+语言的优点C+语言是对C语言的扩充,扩充的绝大部分来自著名语言中的最佳特性:从SIMULA 67中吸取了类,从ALGOL 68中吸取了运算符一名多用、引用和在分程序中任何地方说明变量,综合了Ada的类属和Clu的模块特点,从BCPL中吸取异常处理,从BCPL中吸取了用/表示注释。C+语言保持了C语言的紧凑、灵活、高效和易移植强的优点,它对数据抽象的支持主要在于类概念和机制,对面向对象风范的支持主要通过虚拟函数。C+语言既有数据抽象和面向对象能力,语言运行性能高多,加上C语言的普及,而从C语言至C+语言的过渡较为平滑,以及C+语言与C语言的兼容程度可使数据巨大的C语言程序能方便地在C+语言环境中重用。尽管C+语言当初的设计本意是帮助管理大型程序,但其用途并不仅限于此。C+语言的面向对象的特性可有效地用于实际的程序设计工作。C+语言常常用于设计编辑器、数据库、个人文件系统以及通讯程序等。而且,由于C+语言共享C语言的效率,所以用C+语言可以构成很多高性能的系统软件。2.5.2.Java语言的优点Java是定义位于网络计算的计算机语言,其技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。这些特点使得Java语言特别适用于用来开发网络上的应用程序;另外,作为一种面世较晚的语言,Java语言也集中体现和充分利用了若干当代软件技术新成果,例如C+语言、面向对象、多线程等等,它们所拥有的优点都让Java语言收入其中。开台无关性。如前所述,Java语言独特的运行机制使得它具有良好的二进制级的可移植性,利用Java语言,开发人员可以编写出与具体平台无关、普遍适用的应用程序,大大降低了开发、维护和管理的开销。Java是面向对象的编程语言。面向对象技术较好地适应了当今软件开发过程中新出现的种种传统面向过程语言所不能处理的问题,包括软件开发的规模扩大、升级加快、维护量增大经及开发分工日趋细化、专业化和标准化等,是一种迅速成熟、推广的软件开发方法。面向对象技术的核心是以更接近人类思维的方式建立计算机逻辑模型,它利用类和对象的机制将数据与其上的操作封装在一起,并通过统一的接口与外界交互,使反映现实世界实体的各个类在程序中能够独立、自治、继承;这种方法非常有利于提高程序的可维护性和可重用性,大大提高了开发效率和程序的可管理性,使得面向过程语言难于操纵的大规模软件可以很方便的创建、使用和维护。安全稳定可靠。对网络上应用程序的另一个需求是较高的安全可靠性。用户通过网络获取并在本地运行的应用程序必须是可依赖的,不会充当病毒或其他恶意操作的传播者而攻击用户的本地资源;同时它还应该是稳定的,轻易不会产生死机等错误,使得用户乐于使用。可以支持多线程。多线程是当今软件技术的又一重要成果,已成功应用在操作系统、应用开发等多个领域。多程序技术允许同一个程序有两个执行线索,即同时做两件事情,满足了一些复杂软件的需求。Java不但内置多线程功能,而且提供语言级的多线程支持,即定义了一些用于建立、管理多线程的类和方法,使得开发具有多线程功能的程序变得简单、容易和有效。综合先前所述,衍生自C+的Java语言,出于安全稳定性的考虑,去除了C+中不容不得易理解和掌握的部分,如最典型的指针操作等,降低了学习的难度;同时,Java还有一个十分特殊的特点,这就是它的基本语法部分与C语言几乎一模一样。这样,无论是学习过Java语言再学习C语言,还是已经掌握了C语言再学习Java语言,都会感到轻松不已。2.5.3.方案选择面向对象是一种认识世界的方法,是一种程序设计方法。面向对象的观点认为,客观世界是由各种各样的实体,即对象组成的。每种对象都有自己的内部状态和运动规律,不同对象间的相互联系和相互作用就构成了各种不同的系统,并进而构成整个客观世界。按照这样的思想设计程序,就是面向对象的程序设计。面向对象的程序设计吸取了结构化程序设计的先进思想,并把它们同几个支持用户用新方法进行程序设计的有力概念结合在一起。所有面向对象的程序设计语言一般都包含三个概念:封装、多态性和继承性。这种方法要求语言必须具备抽象、封装、继承和多态性这几个关键要素。面向对象的程序设计,是通过数据和代码建立分块的内存区域,以便提供对程序进行模块化的一种程序设计方法,这些模块可以被用作样板,在需要时再建立其副本。C+语言和Java语言在面向对象这方面都比较强,C+语言为了与C语言兼容,其是包含了些面向过程的成分;Java语言除了C+语言中非面向过程的部分,其程序编写过程就是设计、实现类,定义其属性、行为的过程。还有Java语言特有的“沙箱”机制是其安全性的保障,同时它去除了C+语言中易造成的错误指针,增加了自动内存管理等措施,保证了Java程序运行的可靠性。因此,经过再三比较两种语言之后,采用了Java语言来编写推箱子小游戏的程序代码。3概要设计3.1游戏设计分析从面向对象的观念出发,本程序可分为以下几个对象:l 地图文件的引用l 小人与箱子的移动l 程序运算逻辑l 绘图l 显示平台分析对象的技巧在于它的重复利用及维护效率。如果要把设计出来的程序在不同的显示平台上执行,就要作大幅度的更动甚至重写,这样就失去了面向对象属性,所以在本程序分析时将不变与易变的因素分别做成对象,如地图文件、小人与箱子的移动以及程序的运算逻辑就是不变的项目,而绘图及显示平台会因为环境而有所不同属于易变的项目。3.3.1.地图文件的引用在设计游戏程序时,通常都是把游戏的画面布局数据存放在一个地图文件中。程序通过读取地图文件中的数据来获取画面的布局安排。地图文件是20*20的变量数组文件,在地图不同的数字代表不同的意义。把这组数据保存到一个文件中,这个文件就是地图文件了。3.3.2.程序运逻辑程序中逻辑运算包含小人与箱子的移动、键盘事件的响应、保存数据以实现悔步以及重新开始的操作等等。3.3.3.绘图绘图主要是用于在小人与箱子的移动后,原位置由草地填补,以此来表示小人与箱子的移动以及其画面的连贯性。3.3.4.显示平台“可移植性高”是Java的属性之一,Java的应用涉及许多领域,如手机、单机程序及浏览器等,不同的平台对于它的设定不尽相同,若将显示平台独立为一个类,将有助于主程序的完整性及移植程序的快速性。3.2 注意事项小游戏在设计时要注意绘图部分的设计代码,还要注意通过输入流读取地图文件与图像文件部分的设计代码等等。3.3 游戏流程图系统功能模块初始化模块绘图模块移动小人模块移动箱子模块功能控制模块图1 系统功能模块4.详细设计4.1游戏总体结构与代码推箱子的小游戏界面如图4.1所示:图4.1 小游戏界面由图4.1可以看出,本小游戏的界面简洁、直观,从界面中可以直接得到本小游戏的相关功能操作信息。(1)界面框架与按钮设计界面设计中包括了所有玩家可以直观见到的图形界面,窗体的大小,界面中的功能按钮,让玩家可以方便使用操作。界面中的按钮包括:“悔一步”,“重来”,“上一关”,“下一关”,“第1关”,“最终关”,“选关”。并且各个按钮的名称与相关功能为:“悔一步”:返回上一移动状态(可以连续返回多步);“重来”:重新开始当前关;“上一关”:返回到当前关的上一关;“下一关”:跳转到当前关的下一关;“第1关”:游戏系统默认开始关为第一关,此按钮让玩家可以方便从其它关卡直接跳转到第一关;“最终关”:可以跳转到最后一关,即游戏系统默认的最后一个关。“选关”:选择想要挑战的关卡。其中,这个部分的部分代码为:public class Tuixiangzipublic static void main(String args)new mainFrame();class mainFrame extends JFrame implements ActionListener,ItemListenerJLabel lb;JLabel lb2;JButton btnrenew,btnlast,btnnext,btnchoose,btnfirst,btnover,btnmuc,btnback;mainpanel panel;Sound sound;JComboBox jc=new JComboBox();MenuItem renew=new MenuItem( 重新开始);MenuItem back=new MenuItem( 悔一步);MenuItem last=new MenuItem( 上一关);MenuItem next=new MenuItem( 下一关);MenuItem choose=new MenuItem( 选关);MenuItem exit=new MenuItem( 退出);MenuItem qin=new MenuItem( 琴萧合奏);MenuItem po=new MenuItem( 泡泡堂);MenuItem guang=new MenuItem( 灌篮高手);MenuItem nor=new MenuItem( 默认);MenuItem eye=new MenuItem( eyes on me);MenuItem about=new MenuItem( 关于推箱子.);mainFrame()super(推箱子v1.0);setSize(720,720);setVisible(true);setResizable(false);setLocation(300,20);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Container cont=getContentPane();cont.setLayout(null);cont.setBackground(Color.black);Menu choice=new Menu( 选项);choice.add(renew);choice.add(last);choice.add(next);choice.add(choose);choice.add(back);choice.addSeparator();choice.add(exit);renew.addActionListener(this);last.addActionListener(this);next.addActionListener(this);choose.addActionListener(this);exit.addActionListener(this);back.addActionListener(this);Menu setmuc=new Menu( 设置音乐);setmuc.add(nor);setmuc.add(qin);setmuc.add(po);setmuc.add(guang);setmuc.add(eye);nor.addActionListener(this);qin.addActionListener(this);po.addActionListener(this);guang.addActionListener(this);eye.addActionListener(this);Menu help=new Menu( 帮助);help.add(about);about.addActionListener(this);MenuBar bar=new MenuBar();bar.add(choice);bar.add(setmuc);bar.add(help);setMenuBar(bar); nor.setEnabled(false);lb=new JLabel(毕业设计JAVA推箱子游戏v1.0版。,SwingConstants.CENTER);lb2=new JLabel(更换音乐,SwingConstants.CENTER);add(lb);add(lb2);lb.setBounds(100,20,400,20);lb.setForeground(Color.white);lb2.setBounds(625,500,55,20);lb2.setForeground(Color.white);btnrenew=new JButton(重来);btnback=new JButton(悔一步);btnlast=new JButton(上一关);btnnext=new JButton(下一关);btnchoose=new JButton(选关);btnfirst=new JButton(第关);btnover=new JButton(最终关);btnmuc=new JButton(音乐关);add(btnrenew);add(btnlast);add(btnnext);add(btnchoose);add(btnfirst);add(btnover);add(btnmuc);add(btnback);btnrenew.setBounds(625,100,80,30);btnrenew.addActionListener(this);btnback.setBounds(625,150,80,30);btnback.addActionListener(this);btnfirst.setBounds(625,200,80,30);btnfirst.addActionListener(this);btnlast.setBounds(625,250,80,30);btnlast.addActionListener(this);btnnext.setBounds(625,300,80,30);btnnext.addActionListener(this);btnover.setBounds(625,350,80,30);btnover.addActionListener(this);btnchoose.setBounds(625,400,80,30);btnchoose.addActionListener(this);btnmuc.setBounds(625,450,80,30);btnmuc.addActionListener(this);jc.setBounds(625,530,80,20);jc.addItem(默认);jc.addItem(琴萧合奏);jc.addItem(泡泡堂);jc.addItem(灌篮高手);jc.addItem(eyes on me);jc.addItemListener(this);cont.add(jc);sound=new Sound();sound.loadSound();panel=new mainpanel();add(panel);panel.Tuixiangzi(panel.level);panel.requestFocus();validate();(2)地图的绘制形成地图以二维数组的形式进行存储,不同的数家代表了不同的含义。在本小游戏的地图文件中,09这十个数字的定义如下所示:编号0:代表未定义的区域;编号1:代表障碍物(或者边界);编号2:代表草地;编号3:代表箱子(未到指定位置);编号4:代表目的地;编号5:代表小人向下移动方向;编号6:代表小人向左移动方向;编号7:代表小人向右移动方向;编号8:代表小人向上移动方向;编号9:代表到达指定位置时的箱子。例如下图4.2所示(左边是二维数组的地图文件,右边是相对应的小游戏界面): 图4.2 地图文件与相应界面(3)推箱子小游戏的游戏性其主要功能是给用户一个良好的游戏界面,游戏中包括50关的地图文件。地图文件是预先写好的,所有界面信息以数字的形式存放在一个20*20的二维数组当中并且把这些地图文件统一放在一个地图文件中,使得程序方便调用地图文件。然后,每一关就会按照这些数组数据重新绘制地图,从而达到小游戏的可用性及其相应的目的。(4)小人与箱子移动的算法小人与箱子的移动中包括了正移动以及“悔一步”的负移动。正移动:小人向上、下、左、右的移动是一个判断算法,其判断都是通过判断小人前面是否是草地或者是箱子亦或者是障碍物(或者边界)。如果是障碍物或者是边界,就不能够进行移动;如果是没有箱子或者是障碍物,就可以自由移动;又如果是有箱子,就要判断是否可以移动箱子,最后再讨论箱子被推过的位置,小人移动的位置,以及它们的原位置和被遮挡住的新位置的图形变化等等,需要运用算法使其重新绘制地图,填补空白。算法判断完毕后,传出数据并且将其记录在一个堆栈中,以备“悔一步”时使用。负移动:通过记录在堆栈中的数据来判断,前一步小人的移动方向以及移动中使用过的算法,逆向将代码重新运行,同时绘制并刷新地图以达到前一步的状态。其中,这个部分的部分代码为:void moveup()if(mapmanY-1manX=2|mapmanY-1manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;repaint();manY-;mystack.push(10);else if(mapmanY-1manX=3)if(mapmanY-2manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=9;repaint();manY-;mystack.push(11);else if(mapmanY-2manX=2)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=3;repaint();manY-;mystack.push(11);else mapmanYmanX=8;repaint();else if(mapmanY-1manX=9)if(mapmanY-2manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=9;repaint();manY-;mystack.push(11);else if(mapmanY-2manX=2)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=3;repaint();manY-;mystack.push(11);else mapmanYmanX=8;repaint();if(mapmanY-1manX=1)mapmanYmanX=8;repaint();void backup(int t)int n=t;if(n=10)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;else if(n=11)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=9;else mapmanYmanX=3;if(maptmpmanY-1manX=4|maptmpmanY-1manX=9)mapmanY-1manX=4;else mapmanY-1manX=2;mapmanY+1manX=8;repaint();manY+;void movedown()if(mapmanY+1manX=2|mapmanY+1manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY+1manX=5;repaint();manY+;mystack.push(20);else if(mapmanY+1manX=3)if(mapmanY+2manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY+1manX=5;mapmanY+2manX=9;repaint();manY+;mystack.push(21);else if(mapmanY+2manX=2)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY+1manX=5;mapmanY+2manX=3;repaint();manY+;mystack.push(21);else mapmanYmanX=5;repaint();else if(mapmanY+1manX=9)if(mapmanY+2manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY+1manX=5;mapmanY+2manX=9;repaint();manY+;mystack.push(21);else if(mapmanY+2manX=2)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY+1manX=5;mapmanY+2manX=3;repaint();manY+;mystack.push(21);else mapmanYmanX=5;repaint();else if(mapmanY+1manX=1)mapmanYmanX=5;repaint();void backdown(int t)int n=t;if(n=20)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;else if(n=21)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=9;else mapmanYmanX=3;if(maptmpmanY+1manX=4|maptmpmanY+1manX=9)mapmanY+1manX=4;else mapmanY+1manX=2;mapmanY-1manX=5;repaint();manY-;(5)移动的代码在本小游戏系统中,小人与箱子的移动应该是能带给玩家较为逼真的视觉感受,这样才能体现系统的有效性与娱乐性。玩家通过控制小人,推动箱子在草地上避过障碍物与边界死角来到达指定的终点位置。其中,这个部分的部分代码为:void moveright()if(mapmanYmanX+1=2|mapmanYmanX+1=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanYmanX+1=7;repaint();manX+;mystack.push(40);else if(mapmanYmanX+1=3)if(mapmanYmanX+2=4)if(maptmpmanYmanX=4)mapmanYmanX=4;else mapmanYmanX=2;mapmanYmanX+1=7;mapmanYmanX+2=9;repaint();manX+;mystack.push(41);else if(mapmanYmanX+2=2)if(maptmpmanYmanX=4)mapmanYmanX=4;else mapmanYmanX=2;mapmanYmanX+1=7;mapmanYmanX+2=3;repaint();manX+;mystack.push(41);else mapmanYmanX=7;repaint();else if(mapmanYmanX+1=9)if(mapmanYmanX+2=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanYmanX+1=7;mapmanYmanX+2=9;repaint();manX+;mystack.push(41);else if(mapmanYmanX+2=2)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanYmanX+1=7;mapmanYmanX+2=3;repaint();manX+;mystack.push(41);else mapmanYmanX=7;repaint();else if(mapmanYmanX+1=1)mapmanYmanX=7;repaint();(6)堆栈的应用在推箱子小游戏中,数据的存储是非常重要的,不然就无法进行“悔一步”的操作。本小游戏系统受用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论