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