当前位置: 首页 > 毕业资源下载

静态网页设计与制作作业成品

基于JAVA贪吃蛇游戏毕业设计(源代码+论文)免费下载

 摘要:


  随着通信技术的发展和手机的普及,手机游戏的开发技术越来越为人们所关注。以J2ME为开发平台,利用Java提供强大工具,不但可以在手机上实现静态HTML技术所无法实现的计算处理、数据存储、与服务器的通信等功能,而且能够开发各种手机游戏。本文在介绍J2ME及其体系结构的基础上,以贪吃蛇游戏为实例,描述了借助J2MEMIDlet类库开发手机游戏的过程。

关键字:
  手机游戏; MIDP应用程序 永久性数据


 目录:

微信图片_20210120135616.png


 手机游戏开发过程  

3.1 贪吃蛇游戏的规则简介以及开发环境

3.1.1 贪吃蛇游戏的规则简介

在贪吃蛇游戏中,玩家操作由小方块连接而成的蛇,去吃随机散落在画面内的小方块,每吃一块就增加一小方块长度,要是撞壁以及撞自己的尾,就属于失败,如无失败则直到通关为止。
屏幕的长度的行向为11单位,纵向为18单位。在这个范围内,玩家通过操作方向键来控制蛇的运动方向。该游戏的最大特色是屏幕自适应,无论各种手机,PDA的屏幕大小如何,该游戏总是能获得最佳的显示效果。

3.1.2 开发环境

1)开发硬件环境:CPU C1.7HZ/Maxor  40G/DDR 256M/CD-ROW 40X
   2)开发软件:JDK1.3J2MEWTK
 

3.2  详细设计

本游戏的操作流程(如图3-1:用户启动MIDlet后,即进入游戏主画面,屏幕开始显示为欢迎画面。用户按下[开始]按钮后,就可以开始玩游戏当用户想暂停时,再次按一下[开始]按钮,游戏就暂停了,在暂停的情况下再按[开始]按钮,游戏继续运行。任何时候按[退出]按钮,游戏MIDlet都会终止

图片1.png

 3-1操作流程

3.2.1 代码设计 

1)游戏地图代码设计
   游戏地图是蛇的活动范围和食物随机散落的范围,游戏的容器为行向为11单位,纵向为18单位,如下代码:
private final int iX = 10;//地图的开始坐标
    private final int iY = 10;//
private final int SWIDTH = 16;//图标的宽度
    private final int iCells = 11;//地图的列数
    private final int iRows = 18;//地图的行数
       private final int iBoxW = SWIDTH*iCells;//地图的宽
采用二维绘图工具:二维绘图工具drawLine采用4个参数——直线起点的xy坐标值和直线终点xy的坐标值,例如:
graphics.drawLine5001000);
这行代码会从位置(500)到(1000)绘制一条直线。
绘制一个矩形是一个类似的过程,不同的只是需要用起点加上宽度和高度的方式来指定这个对象。可以绘制透明的或者填充的矩形,甚至可以绘制圆角的矩形。4个绘制矩形的方法是:drawRectdrawRoundedRectfillRectfillRoundedRect
2)贪吃蛇和食物的代码设计
屏幕的长度为行向为11单位,纵向为18单位;在这个范围内(如图3.3),玩家操作方向键控制蛇的运动方向。该游戏的最大特色是屏幕自适应,无论各种手机,PDA的屏幕大小如何,该游戏总是能获得最佳的显示效果。

图片2.png

3-3游戏区域
 
贪吃蛇最初由3个小正方形组成,小正方形是蛇的身体和游戏容器的组成部分。食物也由一块小正方形组成,并且随机散落在游戏框图的区域内,每次只出现唯一一个,待玩家操作游戏完成一个任务后面,再出现下个食物小蛇每吃一个食物就增加一个长度。实现代码如下:
public int getCell(){
return iCell;
}
public int getRow(){
return iRow;
}
    public void show(){
        sLabel.setVisible(true);
    }
    public boolean isVisible(){
        return sLabel.isVisible();
    }
    public void hide(){
        sLabel.setVisible(false);
    }
    protected void setPosition(int row, int cell){
iCell = cell;
iRow  = row;
        sLabel.setBounds(cell*SWIDTH, row*SWIDTH, SWIDTH, SWIDTH);
    }
public void moveUp(){
if(iRow>0)
setPosition(--iRow,iCell);
else
setTouch();
}
public void moveDown(){
if(iRow<iBoxH-1)
setPosition(++iRow,iCell);
else
setTouch();
}
public void moveLeft(){
if(iCell>0)
setPosition(iRow,--iCell);
else
setTouch();
}
public void moveRight(){
if(iCell<iBoxW-1)
setPosition(iRow,++iCell);
else
setTouch();
}
static boolean getTouch(){
return isTouch;
}
static void setTouch(){
isTouch = true;
}
static void setImTouch(){
isTouch = false;
}
public Snake clone(){
Snake tem = new Snake();
tem.setPosition(this.getRow(),this.getCell());
return tem;
}
3)操作控制代码设计
MIDP的游戏设计,本质上就是用一个线程或者定时器产生重绘事件,用线程和用户输入改变游戏状态。这个游戏也不例外,启动MIDlet后,就立即生成一个重绘线程,该线程每隔50ms绘制一次屏幕。当然,重绘时有一些优化措施,并不是屏幕上所有的像素都需要重绘,而是有所选择,比如游戏画布上那些已经固定下来的就不需重绘。游戏画布是一个CommandListener,可以接受用户键盘命令,控制蛇的左移,右移,下移,上移。其代码如下:
public void move(){
hide();
if(aoSnakes[0].getRow()==Food.getRow()&&aoSnakes[0].getCell()==Food.getCell())
eat();
Snake tempSnakes[] = new Snake[iLen-1];
for(int i=0;i<tempSnakes.length;i++){
tempSnakes[i] = aoSnakes[i].clone();
}
switch(heading){
case 37:
aoSnakes[0].moveLeft();
break;
case 38:
aoSnakes[0].moveUp();
break;
case 39:
aoSnakes[0].moveRight();
break;
case 40:
aoSnakes[0].moveDown();
break;
default:
break;
 
整个游戏的流程控制体现在游戏画布对象的paint()方法里。paint()根据当前的游戏状态,绘制出当时的游戏画面。欢迎画面和Game Over画面的绘制相当简单游戏暂停画面的绘制也相当容易,就是设立标志,让paint()执行的时候无需真正执行重绘动作。


最新毕业设计成品

版权所有© 帮我毕业网 并保留所有权利

QQ 1370405256 微信 biyebang

QQ:629001810微信:biyebang

收缩