1、它的主要功能有:游戏规则的实现,积分计算,界面功能。1.2 技术原理J2ME游戏开发技术是支持像小型嵌入式设备或移动设备而制定的一系列的技术和规范的总称,它是JAVA语言的一个分支,遵循JAVA 的规则,是一个运行平台,特别适用于手机用户的游戏开发。本项目的贪吃蛇游戏就是基于J2ME游戏技术开发的。本次实训开发工具为Eclipse,使用JAVA 功能,支持RMS持久化数据库,可以保存游戏的积分,等级,速度等。用户也可以自行设置游戏的一些规则。其技术原理涉及MIDP简表:针对移动信息处理设备(主要指智能手机和一部分具有无线通信功能的PDA)的图形界面、输入和时间处理、持久性存储、无线电话。MID
2、P的总体框架:MID硬件层、本地系统软件层、KVM层、CLDC层、MIDP层。其中还涉及到MIDP2.0的新特性,MIDP的安全机制等。二、模块功能说明(概要设计)模块一:欢迎界面及游戏选择界面。模块二:用户界面的编写和游戏元素的功能。模块三:蛇的移动。模块四:蛇吃掉一个目标并积分。模块五:游戏规则的设定和实现。模块六:游戏汇总和积分计算。三、详细设计3.1 系统设计1.food类:Int foodX Int foodY int foodC;2.snake类:Int Snake int snakeNum;3. GameObj类:int SNAKE_W int SNAKE_H4. SnakeCa
3、nvas类:int direction3.2 功能实现:1、 游戏初始化:其实现的功能是初始化游戏的数据,实现该功能首先需要清晰的知道需要初始化那些数据,如何进行初始化。将贪吃蛇基本初始化在屏幕的中央,初始移动方向和贪吃蛇节点的排列顺序一致,食物的坐标固定位置。游戏初始化的代码如下: /*初始化开始数据*/ private void init() / 初始化节点数量 snakeNum = 7; / 初始化节点数据 for (int i = 0; i 0; i-) snakei0 = snakei - 10; snakei1 = snakei - 11; / 第一个单元格移动 switch (d
4、irection) case DIRECTION_UP: snake01 = snake01 - SNAKEWIDTH; break; case DIRECTION_DOWN: snake01 = snake01 + SNAKEWIDTH; case DIRECTION_LEFT: snake00 = snake00 - SNAKEWIDTH; case DIRECTION_RIGHT: snake00 = snake00 + SNAKEWIDTH; 3、 贪吃蛇方向控制:贪吃蛇方向的控制需要根据玩家的按键来改变蛇的方向,根据J2ME技术中事件处理的编程方式,实现的代码如下: /*事件处理*/
5、 public void keyPressed(int keyCode) int action = this.getGameAction(keyCode); switch (action) case UP: if (direction != DIRECTION_DOWN) direction = DIRECTION_UP; break; case DOWN:= DIRECTION_UP) direction = DIRECTION_DOWN; case LEFT:= DIRECTION_RIGHT) direction = DIRECTION_LEFT; case RIGHT:= DIRECT
6、ION_LEFT) direction = DIRECTION_RIGHT; reak;4、 贪吃蛇和食物的碰撞和处理:则本规则的实现代码如下: /*吃掉食物,自身增长*/ private void eatFood() / 判别蛇头是否和食物重叠 if (snake00 = foodX & snake01 = foodY) snakeNum+; generateFood();5、 食物坐标的随机生成:需要实现如下要求:a、 坐标位于屏幕以内b、 坐标不能和贪吃蛇任何一个节点重合c、 坐标必须是贪吃蛇节点宽度的整数倍(该要求和贪吃蛇的碰撞检测算法匹配)。按照以上逻辑实现的程序代码如下: /*产生
7、食物*/ private void generateFood() while (true) /屏幕范围内,且是蛇身宽度的整数倍 foodX = Math.abs(random.nextInt() % (width - SNAKEWIDTH + 1) / SNAKEWIDTH * SNAKEWIDTH; foodY = Math.abs(random.nextInt() % (height - SNAKEWIDTH + 1) /判断是否和蛇节点重叠 boolean b = true; for (int i = 0; if (foodX = snakei0 & snakei1 = foodY) b
8、 = false; if (b) 6、 游戏结束的判别:游戏结束的规则主要有两个:a、 贪吃蛇超出游戏区域b、 贪吃蛇自身的节点之间存在重叠代码如下所示: /*判断下一步是否超出屏幕而越界,或者碰到自身,游戏结束*/ if(isGameOver() isShow = false; isExit = true; return; /*蛇身移动过程*/ for(int i = snakeNum - 1;i i-) snakei*3+0 = snake(i-1)*3+0; snakei*3+1 = snake(i-1)*3+1; /第一个单元格移动 stepX = 0; stepY = 0; swit
9、ch(direction) case DIR_UP: stepY = -SNAKE_H; case DIR_DOWN: stepY = SNAKE_H; case DIR_LEFT: stepX = -SNAKE_W; case DIR_RIGHT: stepX = SNAKE_W; snake0*3+0 += stepX; snake0*3+1 += stepY;然后在程序中利用该方法的返回值,控制游戏中界面的切换等,从而实现游戏结束的功能。7、 游戏暂停的控制在程序中这样来实现暂停,使用变量isPaused的值来控制线程逻辑和事件处理,当按下暂停键时设置该变量为true,当按下继续键时设置
10、该变量为false。实现的代码如下: if(keyCode = -6) /左软键 isPaused = !isPaused; if(keyCode = -7) /右软键 SnakeMIDlet.quitApp(); if(isPaused) /如果暂停则不能控制移动方向 return; 代码如下:/*线程方法 使用精确延时*/ public void run() try while (isRun) / 开始时间 long start = System.currentTimeMillis();if (!isPaused) /如果不暂停 eatFood(); / 吃食物 move(); / 移动i
11、f (isGameOver() / 结束游戏 break; b = !b; / 控制闪烁 repaint(); / 重新绘制 long end = System.currentTimeMillis();if (end - start SLEEP_TIME) / 延时Thread.sleep(SLEEP_TIME - (end - start); catch (Exception e) 四、任务进度表日期计划任务完成任务缺陷报告2009年12月30日2010年1月2日开发环境安装配置,系统需求分析完成无1月3到1月6日用户界面设置及相关链接1月7日到1月10日实现蛇的运动和食物的事件1月11日到
12、12号实现方向控制,事件处理1月13日到14号游戏操作控制的设置,界面的设置1月15日说明书的撰写五、测试结果表5.1 系统测试结果测试内容预期结果实际结果评价游戏初始化实现初始化实现完成很好贪吃蛇方向控制实现控制完成良好贪吃蛇和食物的碰撞处理能正常实现游戏结束的判别能正确判别游戏暂停的控制能无误控制六、设计小结经过两周的程序综合实训,我们对ECLIPSE这个开发软件有了更深一步的了解,对J2ME的认识也有所提高。本次JAVA贪吃蛇游戏设计意义深重,对于巩固JAVA知识的运用和实践的推广起到重要的意义。虽然在游戏的开发过程中,我遇到了许多的问题和错误,但是面对这些,我还是想尽一切办法去解决,或
13、是上网找资料,或者请教同学互相讨论一番。经过种种的曲折,现在一个比较完善的贪吃蛇游戏总算完成了,我这两周的所付出的努力和心血总算没有白费。JAVA程序编程时实践性很强的一门计算机课程。其目的是使我们能够巩固所学的J2ME语言知识,增进J2ME语言编程的的理解。通过这次实训,我学会了用J2ME进行手机游戏的简单编写,让我更好的了解了相应的专业知识和技能,更加明白理论和实践相结合的重要意义。其实,J2ME并不是那么难的,只要用心,打好基础,把它掌握好还不会是问题的。希望在以后能对J2ME 有更好的了解!七、用户使用说明首先但运行游戏代码时,则会出现一个用户界面,上面会提示你按屏幕右下角的菜单键就会
14、进入游戏,左边则是退出游戏。点击menu后,又会显示游戏界面,上面会有“帮助说明“,”返回“,”难度选择“,”新游戏“等按键。1. 点击“开始游戏“时,则会出现贪吃蛇的游戏,按上下左右就可以移动蛇去吃食物了。2. 点击“帮助说明“时,则会显示如何使用该游戏。以及一些游戏的规则。3. 点击“难度选择“时,则又会出现选择”初级“,”中级“,”高级“的选项按钮,这个可以根据用户自己的水平或爱好来选择相应的游戏困难度。4. 点击“返回“时,则会层层返回上一页。5. 点击“新游戏“的按钮时,则会重新开始新的贪吃蛇游戏!参考文献1. 王克宏 著. Java技术教程(基础篇). 北京:高等教育出版社,2002.042. 孙燕 主编. Java入门与实例教程. 上海:上海出版社,2003.013. 叶核亚,陈立著. Java2程序设计使用教程. 北京:电子工业出版社,2003.54. Harvey M.Deitel, Paul J.Deitel 著. Java How to Program . 湖北工业出版社,2002.01
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1