基于客户端javascript技术下推箱子游戏算法剖析
- 格式:pdf
- 大小:139.92 KB
- 文档页数:1
基于JAVA的面向对象课程设计--------推箱子小游戏设计第一章绪论1.1JAVA语言的发展史1995年,美国Sun Microsystems公司正式向IT业界推出了java语言,该语言具有安全、跨平台、面向对象、简单、适用于网络等显著特点,当时以web 为主要形式的互联网正在迅猛发展,java语言的出现迅速引起所有程序员和软件公司的极大关注,程序员们纷纷尝试用java语言编写网络应用程序,并利用网络把程序发布到世界各地进行运行。
包括IBM、Oracle、微软、Netscape、Apple、SGI等大公司纷纷与Sun Microsystems公司签订合同,授权使用java 平台技术。
微软公司总裁比尔盖茨先生在经过研究后认为"java语言是长时间以来最卓越的程序设计语言"。
目前,java语言已经成为最流行的网络编程语言,截止到2001年中,全世界大约有310万java程序员,许多大学纷纷开设java 课程,java正逐步成为世界上程序员最多的编程语言。
在经历了以大型机为代表的集中计算模式和以PC机为代表的分散计算模式之后,互联网的出现使得计算模式进入了网络计算时代。
网络计算模式的一个特点是计算机是异构的,即计算机的类型和操作系统是不一样的,例如SUN工作站的硬件是SPARC体系,软件是UNIX中的Solaris操作系统,而PC机的硬件是INTEL体系,操作系统是windows或者是Linux,因此相应的编程语言基本上只是适用于单机系统,例如COBOL、FORTRAN、C、C++等等;网络计算模式的另一个特点是代码可以通过网络在各种计算机上进行迁移,这就迫切需要一种跨平台的编程语言,使得用它编写的程序能够在网络中的各种计算机上能够正常运行,java就是在这种需求下应运而生的。
正是因为java语言符合了互联网时代的发展要求,才使它获得了巨大的成功。
大家想一想,在PC下用windows编写的程序能够不做修改就直接拿到UNIX 系统上运行吗?显然是不可以的,因为程序的执行最终必须转换成为计算机硬件的机器指令来执行,专门为某种计算机硬件和操作系统编写的程序是不能够直接放到另外的计算机硬件上执行的,至少要做移植工作。
推箱子游戏一实训任务与要求本次实训是基于安卓系统上的一款游戏的开发——推箱子游戏。
要求我们对“推箱子游戏”进行分析、设计及编程实现。
本实训对实训项目已经作了较为详细的分析及相关知识讲解,通过实训,促使我们专业技能得到综合训练,让我们了解软件开发基本技术和工作过程。
同时,本实训中将会让我们了解图形界面设计基本技术。
二系统开发步骤根据软件开发一般有以下步骤,此款游戏开发步骤如下:1.问题定义2.可行性研究3.需求分析(需求分析阶段)4.总体设计5.详细设计6.编码及单元测试7.综合测试8.软件维护(安装调试阶段)其中1、2、3步可以整合为调研分析阶段,4、5、6、7步可以整合为项目实施阶段。
根据实际本次软件项目实训的实际情况,我们着重进行系统设计和编码实施。
该阶段主要工作有:1.游戏结构的总体设计决定系统的总体结构,包括整个系统分哪些部分,各部分之间有什么联系以及已确定的需求对这些组成部分如何分配等方面。
2.数据结构定义定义游戏中处理的对象——数据的基本结构、存储技术,定义数据处理流程。
3.详细设计对各功能模块的功能定义,说明模块之间的调用关系与接口(参数)。
4.编码及调试根据详细设计的要求,按照统一的要求和编码规范,用C语言编码实现,同时负责每个模块的独立调试。
5.综合测试游戏开发的后期是软件装配和综合测试。
游戏测试一般有专业的测试人员,同时通过发布使用试用版(体验版)等方式让用户体验、测试。
在多次测试改进后,才正式发布三游戏的基本信息1 游戏的名称:益智推箱子游戏2 出版商和作者:出版商:实训小组作者:赵虎刘文昊徐达李赫黄传云胡秋娜徐倩倩3 游戏的类型:益智小游戏4 价格:面议5 最少的硬件配置要求:硬件配置:CPU:≥Pentium III 600 内存:≥64MB 硬盘剩余空间:≥128MB 软件环境:javascrip,安卓虚拟机四概要信息1 游戏的简要概述:推箱子是一款经典的益智小游戏,目的是在训练人的逻辑思考能力。
一、项目背景推箱子游戏是一款经典的益智游戏,起源于日本。
玩家需要在狭小的仓库中,通过移动人物,将箱子推到指定的位置。
这款游戏不仅考验玩家的逻辑思维和空间想象力,还锻炼玩家的耐心和策略。
为了提高自身的编程能力,我们选择推箱子游戏作为实训项目。
二、实训目的1. 学习和掌握Java编程语言的基本语法和常用库;2. 熟悉图形用户界面(GUI)编程;3. 提高逻辑思维和编程能力;4. 实现一个具有良好用户体验的推箱子游戏。
三、项目设计1. 系统架构推箱子游戏采用MVC(模型-视图-控制器)架构,将游戏逻辑、界面展示和用户交互分离,提高代码的可读性和可维护性。
2. 关卡设计游戏共包含10个关卡,每个关卡都有不同的地图和目标。
关卡难度逐渐增加,以满足不同玩家的需求。
3. 游戏功能(1)基本功能1)地图展示:游戏开始时,展示当前关卡的地图,包括人物、箱子、目的地和墙壁;2)人物移动:玩家可以通过键盘或鼠标控制人物上下左右移动;3)箱子移动:当人物站在箱子旁边时,按空格键将箱子推到目标位置;4)胜利判断:所有箱子都推到目标位置,游戏胜利;5)失败判断:人物无法移动或通道被堵住,游戏失败。
(2)扩展功能1)悔棋功能:玩家可以撤销上一步操作,回到之前的状态;2)重置关卡:玩家可以重新开始当前关卡;3)关卡选择:玩家可以选择不同的关卡进行游戏;4)音乐和音效:游戏过程中,播放背景音乐和音效,增强游戏氛围。
四、关键技术1. Java编程语言:使用Java编程语言实现游戏逻辑、界面展示和用户交互;2. Swing库:使用Swing库实现图形用户界面;3. 图像处理:使用ImageIO类加载和显示游戏地图、人物、箱子等图片;4. 事件监听:使用ActionListener、KeyListener等监听器处理用户操作。
五、项目实现1. 创建项目:使用Eclipse创建Java项目,导入Swing库和ImageIO类;2. 设计界面:创建JFrame作为主窗口,添加JPanel作为游戏区域,添加JButton作为按钮控件;3. 游戏逻辑:定义游戏地图、人物、箱子等数据结构,实现人物移动、箱子移动、胜利判断和失败判断等功能;4. 图像处理:加载游戏地图、人物、箱子等图片,使用ImageIO类进行显示;5. 事件监听:为按钮控件添加ActionListener和KeyListener,处理用户操作。
小白如何用javascript编写推箱子游戏(一)首先,自我介绍下,我叫月亮上的风铃(当然不是真名)。
文档建议用WPS2019版本打开,保证原汁原味。
在以后的介绍中,将javascript简称为js。
第一节准备工作随便找个C盘D盘,或者文件夹里,新建一个文件夹,命名为推箱子,双击打开推箱子文件夹,新建一个文件夹,命名为images,将上面图片挨个点右键→另存为图片,另存到images文件夹中,分别命名为,ball,block,box,boxb,down,left,right,up,wall,一共是9个,图片默认存为png格式了,不是这个格式的修改为png格式。
在推箱子文件夹下再新建一个文件夹,命名为js,存放js文档。
使用工具Visual Studio Code,下载地址https:///#alt-downloads,进入页面后选window下的System Installer后面的按你所使用的系统选择32位或64位。
下载好后,安装即可。
看到界面一片英文,是不是头大了,不少人估计百度找汉化方法了,笔者不建议汉化,一是这工具用的功能极少,记住三四个英文单词就行了,还有能让小白适应编程状态,编程的祖宗用的是英文,不适应满屏英文又如何进入编程状态啊!第二节搭建平台打开Visual Studio Code,File→New File。
File→Save,打开推箱子文件夹,点保存将文件存为index.html文件。
进入编程后,除非必要时输汉字,输入法一定要用英文的!!!然后第一行输入:<!doctype html>。
这是html5文档的声明。
回车换行。
输入<html>这时,工具会自动补齐代码。
变为<html></html>,按回车。
说明里面输入的代码是为网页布局服务的。
输入<head>,回车,说明里面输入的代码是格式化网页用的。
输入<meta charset=”UTF-8”>,回车。
推箱子趣味游戏1. 课程设计的目的随着科技水平的发展,人们的生活,工作节奏越来越快,同时人们的各方面的压力也越来越大。
在社会的条件下,压力给人们带来很多烦恼,所以合理的解压,但又不会浪费很多时间的方式成为现代人的共同心愿。
游戏随之产生,他的娱乐性和有趣性也越来越被大家所认可,小游戏可以安装在手机里,让人们无论何时何地都能玩到游戏。
基于这样的目的, 我们在本次课程设计中为大家开发了一款适合休闲娱乐的小游戏—推箱子趣味游戏。
他不仅可以帮助人们消磨时间,还可以在一定程度上开发智力,此游戏的挑战性更加激发大家玩此游戏的热情。
此课设计是配合JA V A 程序设计课程,深入学习掌握JA V A语言,熟练运用Java工具对系统的编写。
通过课程设计各个项目的综合训练,培养学生实际分析问题,编程和动手能力,提高学生的综合素质。
2. 系统总体设计在此游戏中本着娱乐为目的,游戏者不仅可以在玩游戏还可以享受音乐,游戏界面简单,操作容易,在玩游戏的同时还可以锻炼大家的反应速度及灵敏程度,在游戏中设置关数,级别由低到高,一关比一关难,提高大家的兴趣,玩家可以自由的选关,并设置了分数的存储系统。
系统中又增加了音乐的设置可以让玩家享受音乐。
通过对小人移动箱子是否到达墙边进行判断决定胜负及是否可以进入下一关。
2.1系统功能模块划分在该系统中总共划分了五个模块(1)初始化模块,对游戏界面进行初始化操作,对各个按钮的功能进行操作使之当动作发生时有一定的反应及相应。
(2)画图模块,主要是对地图的绘制进行画图的操作,在此游戏中不同的数字代表不同的含义。
(3)移动箱子模块,在推箱子游戏中最主要的模块,用户可以移动箱子到界面中的各个地方,以完成游戏设定的任务。
(4)移动小人模块,同过对小人的操作使之小人能够操作木块到各个位置。
(5)功能控制模块,通过对此功能的设置,可以对游戏的功能进行设置,可以设置背景音乐,及通过的关数进行一些必要的设定。
⽤HTML5+原⽣js实现的推箱⼦游戏<!DOCTYPE html><html><head><meta charset="UTF-8"><title>⽤HTML5+原⽣js实现的推箱⼦游戏</title><link rel="stylesheet"href="css/style.css"></head><body onkeydown="doKeyDown(event)"><div class="game"><canvas id="canvas" width="560"height="560"></canvas><div id="msg"></div><input type="button" value="上⼀关" onclick="NextLevel(-1)"><input type="button"value="下⼀关" onclick="NextLevel(1)"><input type="button" value="重玩本关" onclick="NextLevel(0)"><input type="button" value="游戏说明" onclick="showHelp()"></div><script src="js/index.js"></script><script src="js/index1.js"></script></body></html>js代码:let can = document.getElementById("canvas");let msg = document.getElementById("msg");let ctx = can.getContext("2d");let w = 35, h = 35;let curMap;//当前的地图let curLevel;//当前登记的地图let curMan;//初始化⼩⼈let iCurlevel = 0;//关卡数let moveTimes = 0//移动了多少次//预加载所有图⽚let oImgs = {"block" : "images/block.gif","wall" : "images/wall.png","box" : "images/box.png","ball" : "images/ball.png","up" : "images/up.png","down" : "images/down.png","left" : "images/left.png","right" : "images/right.png"};function imgPreload (srcs,callback) {let count = 0,imgNum = 0,images = {};for (src in srcs) {imgNum++;};for (src in srcs) {images[src] = new Image();images[src].onload = function () {if (++count >= imgNum) {callback(images)};};images[src].src = srcs[src];};};let block,wall,box,ball,up,down,left,right;imgPreload (oImgs,function (images) {block = images.block;wall = images.wall;box = images.box;up = images.up;ball = images.ball;down = images.down;left = images.left;right = images.right;init();});//初始化游戏function init () {initLevel();//初始化对应等级的游戏showMoveInfo();//初始化对应等级的游戏数据};//绘制地板function InitMap () {for (var i = 0; i < 16; i++) {for (var j = 0; j < 16; j++) {ctx.drawImage(block,w*j,h*i,w,h);};};};};let perPosition = new Point(5,5);//⼩⼈的初始值//绘制每个游戏关卡的地图function DrawMap (level) {for (var i = 0; i < level.length; i++) {for (var j = 0; j < level[i].length; j++) {let pic = block;//初始图⽚switch (level[i][j]){case 1://绘制墙壁pic = wall;break;case 2://绘制陷阱pic = ball;break;case 3://绘制箱⼦pic = box;break;case 4://绘制⼩⼈pic = curMan;//⼩⼈有四个⽅向具体显⽰哪个图需要和上下左右⽅位值关联 //获取⼩⼈的坐标位置perPosition.x = i;perPosition.y = j;break;case 5://绘制箱⼦及陷阱的位置pic = box;break;};//每个图⽚不⼀样宽需要在对应地板的中⼼绘制地图ctx.drawImage(pic,w * j - (pic.width-w) / 2,h * i - (pic.height-h),pic.width,pic.height) };};};//初始化游戏等级function initLevel () {curMap = copyArray(levels[iCurlevel]);//当前移动过的游戏地图curLevel = levels[iCurlevel];//当前等级的初始地图curMan = down;//初始化⼩⼈InitMap();//初始化地板DrawMap(curMap);//初始化当前等级的地图};//下⼀关function NextLevel (i) {iCurlevel = iCurlevel + i;if (iCurlevel < 0) {iCurlevel = 0;return;};let len= levels.length;if (iCurlevel > len-1) {iCurlevel = len-1;};initLevel();//初始当前等级关卡moveTimes = 0;//游戏关卡移动步数清零showMoveInfo();//初始化当前关卡数据};//⼩⼈移动function go(dir) {let p1, p2;switch(dir) {case "up":curMan = up;//获取⼩⼈前⾯的两个坐标位置来进⾏判断⼩⼈是否能够移动p1 = new Point(perPosition.x - 1, perPosition.y);p2 = new Point(perPosition.x - 2, perPosition.y);break;case "down":curMan = down;p1 = new Point(perPosition.x + 1, perPosition.y);p2 = new Point(perPosition.x + 2, perPosition.y);break;case "left":curMan = left;p1 = new Point(perPosition.x, perPosition.y - 1);p2 = new Point(perPosition.x, perPosition.y - 2);break;break;}//若果⼩⼈能够移动的话,更新游戏数据,并重绘地图if(Trygo(p1, p2)) {moveTimes++;showMoveInfo();}//重绘地板InitMap();//重绘当前更新了数据的地图DrawMap(curMap);//若果移动完成了进⼊下⼀关if(checkFinish()) {alert("恭喜过关!!");NextLevel(1);}}//判断是否推成功function checkFinish() {for(var i = 0; i < curMap.length; i++) {for(var j = 0; j < curMap[i].length; j++) {//当前移动过的地图和初始地图进⾏⽐较,若果初始地图上的陷进参数在移动之后不是箱⼦的话就指代没推成功if(curLevel[i][j] == 2 && curMap[i][j] != 3 || curLevel[i][j] == 5 && curMap[i][j] != 3) {return false;}}}return true;};//判断⼩⼈是否能够移动function Trygo(p1, p2) {if(p1.x < 0) return false; //若果超出地图的上边,不通过if(p1.y < 0) return false; //若果超出地图的左边,不通过if(p1.x > curMap.length) return false; //若果超出地图的下边,不通过if(p1.y > curMap[0].length) return false; //若果超出地图的右边,不通过if(curMap[p1.x][p1.y] == 1) return false; //若果前⾯是墙,不通过if(curMap[p1.x][p1.y] == 3 || curMap[p1.x][p1.y] == 5) { //若果⼩⼈前⾯是箱⼦那就还需要判断箱⼦前⾯有没有障碍物(箱⼦/墙) if(curMap[p2.x][p2.y] == 1 || curMap[p2.x][p2.y] == 3) {return false;}//若果判断不成功⼩⼈前⾯的箱⼦前进⼀步curMap[p2.x][p2.y] = 3; //更改地图对应坐标点的值//console.log(curMap[p2.x][p2.y]);}//若果都没判断成功⼩⼈前进⼀步curMap[p1.x][p1.y] = 4; //更改地图对应坐标点的值//若果⼩⼈前进了⼀步,⼩⼈原来的位置如何显⽰var v = curLevel[perPosition.x][perPosition.y];if(v != 2) //若果刚开始⼩⼈位置不是陷进的话{if(v == 5) //可能是5 既有箱⼦⼜陷进{v = 2; //若果⼩⼈本⾝就在陷进⾥⾯的话移开之后还是显⽰陷进} else {v = 0; //⼩⼈移开之后之前⼩⼈的位置改为地板}}//重置⼩⼈位置的地图参数curMap[perPosition.x][perPosition.y] = v;//若果判断⼩⼈前进了⼀步,更新坐标值perPosition = p1;//若果⼩动了返回true 指代能够移动⼩⼈return true;};//判断是否推成功//与键盘上的上下左右键关联function doKeyDown (event) {switch (event.keyCode){case 37://左键头go("left");break;case 38://上键头go("up");break;case 39://右键头go("right");break;};//完善关卡数据及游戏说明function showMoveInfo () {msg.innerHTML = "第" + (iCurlevel + 1) + "关卡移动次数:" + moveTimes;};//游戏说明let showhelp = false;function showHelp () {showhelp = !showhelp;if (showhelp) {msg.innerHTML = "⽤键盘上的上、下、左、右键移动⼩⼈,把箱⼦全部推到⼩球的位置即可过关。
图3 游戏主界面
图4 游戏成功界面
(2)打开推箱子游戏,点击“选项“按钮,选中选关,输入你想要玩的关数,例如第
3关,点击确定,游戏界面如图4所示:
图5开始选关界面
图6选关成功界面
(3)游戏的帮助功能也很强大,点击帮助按钮,选中“使用说明”,或是“关于”。
游戏界面如图6和图7所示:
图7使用说明界面
4.设计体会
为期两周的课程设计很快就结束了,回顾这两周,累并快乐着。
从老师开始给布置课程设计的题目、内容及要求到自己广泛借助互联网查阅资料并独立完成Java推箱子小应用程序;从两周前刚接到任务时的茫然与无助到两周后的清晰与明了;从对Java 的编辑器EditPlus和eclipse初步了解到熟练运用,历经了太多的困难。
对于环境变量的配置,我做到了知其然,知其所以然,对EditPlus的了解也完全上升了一个层次,从课堂上老师教给的在dos 界面中输入Javac 文件名.java编译、Java 文件名运行到在EditPlus中选中“工具”、“配置用户组“,设置编译和执行相关参数,按快捷键Ctrl+1编译、Ctrl+2运行,节省了大量时间,使编程效率有了很大的提高。
对于推箱子游戏,更是有了进一步的了解,其中用到了9张图片,用户可以通过改变图片来改变游戏的显示界面,当然,这个是不被允许的,因为每个程序的代码都有版权,但对于设计者而言,却可以更加清楚的了解代码的内部构造,达到熟能生巧的效果。
基于JAVA的推箱子游戏前言在这个充满竞争的社会里,随着生活节奏的不断加快,人们的生活水平越来越繁忙,因此,越来越多人感到无比的烦躁与巨大的压力,这些压力也带给人们诸多烦恼。
所以如何解除现代人的生活压力,释放心中苦闷已经成为现代人的共同心愿。
而本次的这个基于JAVA的推箱子小游戏正是使用JAVA语言并且结合于EditPlus编译器,为大家开发了一款适合的、休闲娱乐的游戏,在娱乐的同时也给忙碌的上班族们开拓了另一个思考问题的空间。
基于JAVA的推箱子小游戏主要分为初始化模块,画图模块,移动小人模块,移动箱子模块以及功能控制模块。
玩家是通过控制小人的移动来推动箱子,需要避过障碍物与死角才能将其推放到指定位置从而达到过关的目的。
每关的难易程度各异,不仅适合人们休闲娱乐,还有助于开发智力,提高人们思考问题能力与想象能力,改善思考方式,拓展思维。
关键词:JAVA;解压;推箱子;休闲娱乐AbstractIn this competitive society, along with the accelerating pace of life, people's living standard more and busier, therefore, more and more people feel very upset and enormous pressure, the pressure also gives people a lot of trouble. So how to relieve the pressure of modern life, release the pain has become the common aspiration of the people. But this time based on the JAVA Push Box Game is the use of JAVA language and the combination of EditPlus compiler; we developed a suitable, recreational game, in the entertainment but also for busy office workers to develop another thinking space.Based on the JAVA Push Box Game consists of initialization module, drawing module, mobile SIM module, mobile box module and control module. Game player is controlled through a small mobile drive box, need to avoid obstacles and dead angle can be pushed into the specified location so as to achieve the purpose of clearance. Each level of difficulty degree is different, not only for recreation, also contribute to the development of intelligence, improve people's thinking ability and imagination ability, improve the way of thinking, the development of thinking.Key Words:JAVA; Relieve pressure; Push box; Recreation and entertainment目录前言 (I)Abstract (II)1.可行性研究 (2)1.1设计目的 (2)1.2可行性研究前提 (2)1.3可行性分析 (2)1.4结论意见 (3)2.需求分析 (3)2.1引言 (3)2.2游戏需求 (3)2.3软硬件需求 (4)硬件环境需求: (4)软件环境: (4)2.4接口控制 (4)2.5方案论证 (4)2.5.1.C++语言的优点 (4)2.5.2.Java语言的优点 (5)2.5.3.方案选择 (6)3.概要设计 (7)3.1游戏设计分析 (7)3.3.1.地图文件的引用 (7)3.3.2.程序运逻辑 (7)3.3.3.绘图 (7)3.3.4.显示平台 (7)3.2 注意事项 (8)3.3 游戏流程图 (8)4.详细设计 (9)4.1游戏总体结构与代码 (9)结论 (21)参考文献 (22)致谢 (23)引言在人类的社会生活当中,游戏占有很大的比重,并且随着社会的发展而不断发展。
JavaScript写一个小乌龟推箱子游戏推箱子游戏是老游戏了,网上有各种各样的版本,说下推箱子游戏的简单实现,以及我找到的一些参考视频和实例;推箱子游戏的在线DEMO :打开如下是效果图:这个拖箱子游戏做了移动端的适配,我使用了zepto的touch模块,通过手指滑动屏幕就可以控制乌龟走不同的方向;因为推箱子这个游戏比较简单,直接用了过程式的方式写代码,模块也就是两个View和Model,剩下就是用户的事件Controller,用户每一次按下键盘的方向键都会改变数据模型的数据,然后重新生成游戏的静态html,然后用innerHTML方式插入到界面,自动生成DOM节点;游戏的关卡模型就是数据,我把每一关的数据分为三块:1.地图数据,二维数组(地图数据包括板砖,箱子要去的目标位置,空白的位置)2.箱子数据,一维数组(箱子的初始位置)3.小乌龟的数据,json对象每一个关卡都有对应的游戏关卡数据,模拟的数据如下:1.level: [ { //0是空的地图2.//1是板砖3.//3是目标点4. state:[ [0,0,1,1,1,0,0,0,0], [0,1,1,3, 3,1,0,0,0], [0,1,0,0,0,0,1,0, 0], [0,1,0,0,0,0,1,0,0], [0,1,1,1,1,1,1,0,0] ], person: {x : 2, y : 2}, box: [{x:3, y : 2},{x:4,y:2}]}, //第二关5. { //0是空的地图6.//1是板砖7.//3是目标点8. state:[ [0,1,1,1,1,1,0,0], [0,1,0,0,1, 1,1,0], [0,1,0,0,0,0,1,0], [1,1,1,0,1,0,1,1], [1,3,1,0,1,0,0,1], [1,3,0,0,0,1,0,1], [1,3,0,0, 0,0,0,1], [1,1,1,1,1,1,1,1] ], person: {x :2, y : 2}, box: [{x:3, y : 2}, { x:2,y:5} ,{x:5, y:6}] /* box : [ {x:3, y : 1}, {x:4, y : 1}, {x:4, y : 2}, {x: 5, y : 5} ] */}, //第三关9. { //0是空的地图10.//1是板砖11.//3是目标点12. state:[[0,0,0,1,1,1,1,1,1,0], [0,1,1 ,1,0,0,0,0,1,0], [1,1,3,0,0,1 ,1,0,1,1], [1,3,3,0,0,0,0,0,0 ,1], [1,3,3,0,0,0,0,0,1,1], [1,1,1,1,1,1,0,0,1,0], [0,0,0,0,0,1,1,1,1,0] ], person: {x : 8, y : 3}, box: [{x:4, y : 2}, {x:3,y:3} ,{x: 4, y:4},{x:5, y:3},{x:6, y:4}] },//第四关13. { //0是空的地图14.//1是板砖15.//3是目标点16. state:[[0,1,1,1,1,1,1,1,0,0], [0,1,0 ,0,0,0,0,1,1,1], [1,1,0,1,1,1 ,0,0,0,1], [1,0,0,0,0,0,0,0,0 ,1], [1,0,3,3,1,0,0,0,1,1], [1,1,3,3,1,0,0,0,1,0], [0,1,1,1,1,1,1,1,1,0] ], person: {x : 2, y : 3}, box: [{x:2, y : 2}, {x:4,y:3} ,{x: 6, y:4},{x:7, y:3},{x:6, y:4}] },//第五关17. { //0是空的地图18.//1是板砖19.//3是目标点20. state:[[0,0,1,1,1,1,0,0], [0,0,1,3,3 ,1,0,0], [0,1,1,0,3,1,1,0], [0,1,0,0,0,3,1,0], [1,1,0,0,0,0,1,1], [1,0,0,1,0,0,0,1], [1,0,0,0,0,0,0,1], [1,1,1,1,1,1,1,1]], person: {x: 4, y : 6}, box: [{x:4, y : 3},{x:3,y:4} ,{x:4, y:5}, {x:5,y:5}]/* box : [{x:3, y : 1}, {x:4, y : 1},{x:4, y : 2}, {x:5, y : 5} ]*/ }, //第六关21. { //0是空的地图22.//1是板砖23.//3是目标点24. state:[[0,0,0,0,1,1,1,1,1,1,1,0], [0,0,0,0,1,0,0,1,0,0,1,0], [0,0,0,0,1,0,0,0,0,0,1,0], [1,1,1,1,1,0,0,1,0,0,1,0], [3,3,3,1,1,0,0,0,0,0,1,1], [3,0,0,1,0,0,0,0,1,0,0,1], [3,0,0,0,0,0,0,0,0,0,0,1], [3,0,0,1,0,0,0,0,1,0,0,1], [3,3,3,1,1,1,0,1,0,0,1,1], [1,1,1,1,1,0,0,0,0,0,1,0], [0,0,0,0,1,0,0,1,0,0,1,0], [0,0,0,0,1,1,1,1,1,1,1,0] ], person:{x : 5, y : 10}, box: [{x:5, y:6}, {x:6, y:3}, {x:6, y:5},{x:6, y:7},{x:6, y:9}, {x:7, y:2},{x:8, y:2},{x:9, y:6} ]} ]有一个很重要的东西就是推箱子游戏的主要逻辑:因为小乌龟走的地方只能是空白的区域,而且乌龟前面有墙就不能走,或者乌龟前面是箱子,就再判断箱子前面是否有墙,如果没有墙乌龟和箱子都可以走往前走一步,如果有墙就不能走。
基于JAVA的推箱子游戏前言在这个充满竞争的社会里,随着生活节奏的不断加快,人们的生活水平越来越繁忙,因此,越来越多人感到无比的烦躁与巨大的压力,这些压力也带给人们诸多烦恼。
所以如何解除现代人的生活压力,释放心中苦闷已经成为现代人的共同心愿。
而本次的这个基于JAVA的推箱子小游戏正是使用JAVA语言并且结合于EditPlus编译器,为大家开发了一款适合的、休闲娱乐的游戏,在娱乐的同时也给忙碌的上班族们开拓了另一个思考问题的空间。
基于JAVA的推箱子小游戏主要分为初始化模块,画图模块,移动小人模块,移动箱子模块以及功能控制模块。
玩家是通过控制小人的移动来推动箱子,需要避过障碍物与死角才能将其推放到指定位置从而达到过关的目的。
每关的难易程度各异,不仅适合人们休闲娱乐,还有助于开发智力,提高人们思考问题能力与想象能力,改善思考方式,拓展思维。
关键词:JAVA;解压;推箱子;休闲娱乐AbstractIn this competitive society, along with the accelerating pace of life, people's living standard more and busier, therefore, more and more people feel very upset and enormous pressure, the pressure also gives people a lot of trouble. So how to relieve the pressure of modern life, release the pain has become the common aspiration of the people. But this time based on the JAVA Push Box Game is the use of JAVA language and the combination of EditPlus compiler; we developed a suitable, recreational game, in the entertainment but also for busy office workers to develop another thinking space.Based on the JAVA Push Box Game consists of initialization module, drawing module, mobile SIM module, mobile box module and control module. Game player is controlled through a small mobile drive box, need to avoid obstacles and dead angle can be pushed into the specified location so as to achieve the purpose of clearance. Each level of difficulty degree is different, not only for recreation, also contribute to the development of intelligence, improve people's thinking ability and imagination ability, improve the way of thinking, the development of thinking.Key Words:JAVA; Relieve pressure; Push box; Recreation and entertainment目录前言 (I)Abstract (II)1.可行性研究 (2)1.1设计目的 (2)1.2可行性研究前提 (2)1.3可行性分析 (2)1.4结论意见 (3)2.需求分析 (3)2.1引言 (3)2.2游戏需求 (3)2.3软硬件需求 (4)硬件环境需求: (4)软件环境: (4)2.4接口控制 (4)2.5方案论证 (4)2.5.1.C++语言的优点 (4)2.5.2.Java语言的优点 (5)2.5.3.方案选择 (6)3.概要设计 (7)3.1游戏设计分析 (7)3.3.1.地图文件的引用 (7)3.3.2.程序运逻辑 (7)3.3.3.绘图 (7)3.3.4.显示平台 (7)3.2 注意事项 (8)3.3 游戏流程图 (8)4.详细设计 (9)4.1游戏总体结构与代码 (9)结论 (21)参考文献 (22)致谢 (23)引言在人类的社会生活当中,游戏占有很大的比重,并且随着社会的发展而不断发展。