j2me实验三手机游戏程序设计.doc

上传人:xins****2008 文档编号:117574802 上传时间:2019-12-05 格式:DOC 页数:10 大小:281KB
返回 下载 相关 举报
j2me实验三手机游戏程序设计.doc_第1页
第1页 / 共10页
j2me实验三手机游戏程序设计.doc_第2页
第2页 / 共10页
j2me实验三手机游戏程序设计.doc_第3页
第3页 / 共10页
j2me实验三手机游戏程序设计.doc_第4页
第4页 / 共10页
j2me实验三手机游戏程序设计.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《j2me实验三手机游戏程序设计.doc》由会员分享,可在线阅读,更多相关《j2me实验三手机游戏程序设计.doc(10页珍藏版)》请在金锄头文库上搜索。

1、淮海工学院计算机工程学院实验报告书课程名: 手持设备软件开发 题 目: 实验3:J2ME手机游戏程序设计 班 级: 软件 学 号: 1 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日 手持设备软件开发实验报告 - 9 -一、实验目的与要求掌握J2ME手机游戏设计的一般方法,掌握游戏画布,分块图层,精灵和图层管理类的使用方法。掌握控制游戏画面更新及固定帧率的方法。二、实验内容对实例MIDP项目Game中的SimpleSprite游戏应用程序做如下的修改:1 使用动态分块修改游戏的背景使得在游戏运行过程中小花与小草连续的变换。2 增加命令,可以控制sprite0移动的速度,同时保证画面

2、的稳定更新。3 sprite1在游戏开始时出现的位置随机生成,但要保证不与sprite0发生碰撞。3、 实验步骤 SimpleSpriteCanvas.javapackage SimpleSprite;import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.*;import java.util.*;public class SimpleSpriteCanvas extends GameCanvasprivate boolean isPlay;/ 值为true时游戏线程反复执行private long dela

3、y;/ 线程执行时的延时,控制游戏每帧的时间private int width, height;/ 保存屏幕的宽度和高度private TiledLayer background;/ 定义背景为分块图层private Sprite sprite0, sprite1; /sprite0 大的 , sprite1 小的private Image backImage, spriteImage;/ 生成背景、精灵所用图像private final int toLeft=0, 1, 1, 2, 2, 3, 3, 4;/精灵0向左运动的帧序列private final int toRight=5, 6,

4、6, 7, 7, 8, 8, 9;/精灵0向右运动的帧序列private int xStep = 0, yStep = 0;private boolean pxCollides = false; /碰撞检测方式,默认矩形检查private boolean rightToLeft = true;private int aniIndex1, aniIndex2;private int state=1;private int moveLength=2; /初始步长private int xPosition=30,yPosition=80;/ 构造方法public SimpleSpriteCanvas

5、() super(true);width = getWidth();height = getHeight();delay = 50;background = createBackground();sprite0 = createSprite(/SimpleSprite/sprite0.png, 56, 29);sprite1 = createSprite(/SimpleSprite/sprite1.png, 34, 27);sprite0.setPosition(180,70);createPosition();/产生随机位置sprite1.setPosition(xPosition,yPos

6、ition);collidesFind();sprite0.setFrameSequence(toLeft);sprite1.defineCollisionRectangle(0, 0, 64, 64);/ 启动线程体public void start() isPlay = true; Thread1 thread1= new Thread1();Thread2 thread2= new Thread2();thread1.start();thread2.start();/ 停止线程执行public void stop() isPlay = false; / 线程体,游戏主体class Thr

7、ead1 extends Threadpublic void run() Graphics g = getGraphics();/ 获取脱机屏幕缓冲区中图形对象long beginTime = 0, endTime = 0;while (isPlay = true) beginTime = System.currentTimeMillis();queryKey();/ 查询按键状态sprite0Move();drawScreen(g);/ 绘制屏幕endTime = System.currentTimeMillis();if (endTime - beginTime delay) try Th

8、read.sleep(delay - (endTime - beginTime); catch (InterruptedException ie) / 主动查询按键状态,进行处理private void queryKey() int keyStates = getKeyStates();/ 查询游戏按键状态,游戏按键被按下时if (keyStates & LEFT_PRESSED) != 0)/ 如果未超过左侧范围,向左移动xStep = -1*moveLength;if (keyStates & RIGHT_PRESSED) !=0)/ 如果未超过TiledLayer右侧范围,向右移动xSt

9、ep = moveLength;if (keyStates & UP_PRESSED) != 0)/ 如果未超过TiledLayer上侧范围,向上移动yStep = -1*moveLength;if (keyStates & DOWN_PRESSED) !=0)/ 如果未超过TiledLayer下侧范围,向下移动yStep = moveLength;/ 在屏幕上显示游戏画面private void drawScreen(Graphics g) g.setColor(0x99ccff);g.fillRect(0, 0, getWidth(), getHeight();background.pai

10、nt(g);sprite0.nextFrame();sprite1.nextFrame();sprite0.paint(g);sprite1.paint(g);flushGraphics();/ 小花与小草转换class Thread2 extends Thread public void run() while (isPlay = true) if (state=1) background.setAnimatedTile(aniIndex1, 6); background.setAnimatedTile(aniIndex2, 5); state=0; else background.setA

11、nimatedTile(aniIndex1, 5); background.setAnimatedTile(aniIndex2, 6); state=1; try Thread.sleep(500); catch (InterruptedException ie) System.out.println(sleep wrong); / 建立分块图层private TiledLayer createBackground() try backImage = Image.createImage(/SimpleSprite/bgtiles.png); catch (Exception e) TiledLayer tiledLayer = new TiledLayer(8,9,backImage,32,32);aniIndex1 = tiledLayer.createAnimatedTile(5);aniIndex2 = tiledLayer.createAnimatedTile(6);/ 数组中存放单元格中需要填充的分块号int map = 0, 0, 7, 0, 0, 0, 8, 0, 7, 0, 0, 0, 7, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号