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