




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
J2ME程序设计实例教程 第07章 推箱子,作者 :杨光 E-mail:,第7章 推箱子,本章将设计一个手机上的推箱子游戏,学习GAME API的使用。 7.1 知识点 7.2 设计要求 7.3 类设计 7.4 代码实现 7.5 实践,7.1 知识点GAME API,GAME API定义在javax.microedition.lcdui.game 包中,由GameCanvas、Layer、TiledLayer、Sprite、LayerManager等5个类组成。,7.1 知识点GameCanvas类,GameCanvas扩展了javax.microedition. lcdui.Canvas,是一个抽象类,为游戏提供了基本的游戏用户界面。 GameCanvas类实现了双缓存技术。 public void flushGraphics() public void flushGraphics(int x int y, int width, int height) 按键状态查询 int keyState = getKeyState(); if(key & UP_PRESSED) != 0) /向上的方向键被按下 ,7.1 知识点Layer类,Layer是个抽象类,用于表示游戏中的可见元素。例如:游戏背景、行走的人物、奔跑的怪兽等。Game API为开发人员提供了两个Layer的子类:TiledLayer和Sprite。 常用方法: public int getWidth() public int getHeight() public int getX() public int getY() public void setPosition(int x, int y) public void setVisible(boolean b) public boolean isVisible() public void move(int hd, int vd),7.1 知识点TiledLayer类,TiledLayer是Layer的子类,用于创建游戏背景。该类创建的游戏背景由单元网格组成,单元格使用图像贴砖填充,就好像在用马赛克拼图一样。图像贴砖由Image对象提供,一个Image对象表示一幅图片,这个图片可以被水平和垂直分割成一系列大小相等的图像贴砖,并且每个图像贴砖都被指定一个唯一的引用值。,7.1 知识点TiledLayer类,try Image img = Image.createImage(“/Storage.png“); TiledLayer background = new TiledLayer(8, 8, img, 16, 16); catch(IOException ioe) System.out.println(“读取图片错误!“ + ioe.toString(); ,7.1 知识点TiledLayer类,填充背景方法: public void setCell(int col, int row, int tiledIndex) public void fillCells(int col, int row, int numCols, int numRows, int tiledIndexs),7.1 知识点TiledLayer类,常用方法: public int getRows() public int getColumns() public int getCell(int col, int row) public int getCellWidth() public int getCellHeight() public void setStaticTileSet(Image img, int tileWidth, int TileHeight),7.1 知识点Sprite类,Sprite是Layer的子类,描述了游戏中活动的角色。例如,行走的人物、奔跑的怪物、飞行的子弹等。 Sprite创建的对象拥有一个帧的集合,集合中的帧用来描绘Sprite对象的外观,任一时刻只显示一帧图像。如果快速、连续的显示集合中不同的帧,那么Sprite对象就会呈现出动画的效果。,7.1 知识点Sprite类,7.1 知识点Sprite类,创建Sprite对象 try Image img = Image.createImage(“/worker.png“); Sprite worker = new Spriter(img, 16, 16); catch(IOException ioe) System.out.println(“加载图片错误!“ + ioe.toString(); ,7.1 知识点Sprite类,Sprite对象通过下面的方法可以改变当前显示的帧。 public void setFrame(int sequenceIndex) public void nextFrame() public void prevFrame(),7.1 知识点Sprite类,碰撞检测 public boolean collidesWith(Sprite s, boolean pixelLevel) public boolean collidesWith(TiledLayer t, boolean pixelLevel) public void defineCollisionRectangle(int x, int y, int width, int height),教材P166,例7-1演示了TiledLayer和Sprite的使用,7.1 知识点LayerManager类,LayerManager是个图层管理器,负责管理游戏中的可见元素(Layer对象)。使用LayerManager能够简化游戏界面的绘制过程,并且可以很容易的实现游戏界面的滚动功能。,7.1 知识点LayerManager类,7.1 知识点LayerManager类,图层管理方法: public void append(Layer layer) public void insert(Layer layer, int index) public void remove(Layer layer) public Layer getLayerAt(int index) public int getSize() 教材P172,例7-2演示了图层管理,7.1 知识点定时器,Timer定义在java.util包中,是个定时器,能够在后台线程中执行定时的任务。根据定时任务执行的次数,定时器有两种工作方式:一次运行的定时器和重复运行的定时器。,7.1 知识点定时器,定时器在指定的时间执行定时的任务,该任务只被执行一次。定时器对象调用下面的方法安排任务的执行时间。 public void schedule(TimerTask task, Date time) public void schedule(TimerTask task, long delay),7.1 知识点定时器,定时器在指定的时间开始执行任务,然后该任务将被重复执行。定时器调用下面的方法安排任务开始执行的时间,及任务重复执行的频率。 public void schedule(TimerTask task, Date firstTime, long period) public void schedule(TimerTask task, long delay, long period) public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period) public void scheduleAtFixedRate(TimerTask task, long delay, long period),7.1 知识点定时器,TimerTask是一个抽象类,表示定时器要执行的任务。TimerTask的子类负责实现执行任务的run方法。下面代码演示了定时器的使用。 Timer timer = new Timer(); TimerTask task = new TimerTask() public void run() System.out.println(“Hello, Tom.“); timer.schedule(task, 100, 200);,7.2 设计要求,用户通过方向键可以操作游戏中的搬运工推动箱子,搬运工一次只能推动一个箱子。当用户把所有的箱子都推到指定的位置,即完成任务。 搬运工推箱子的过程在一个封闭的区域内进行,搬运工和箱子都不能越界。在区域内会有一些障碍,搬运工和箱子不能直接穿过,只能绕行。 用户可以通过菜单选择进入下一关或者上一关游戏,也可以选择重新开始当前关的游戏。,7.2 类设计,7.3 代码实现程序打包,启动J2ME无线开发工具,新建一个项目。 推箱子游戏需要4个png格式的图片文件,分别为:worker16.png、storage16.png、box16.png、init.png。把这些文件拷贝到新建项目的resimg目录中。 打开记事本,输入7.3节6描述的第一关游戏的初始数据,然后把编辑后的文件保存到当前项目的resmap目录中,文件名为level1.map。 将7.4.2节中的java源文件保存到当前项目的src目录中。单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版光伏发电项目施工合同小型工程本文本
- 2025版动漫衍生品授权销售合同汇编
- 2025翻译公司知识产权保护保密协议
- 2025版无人机监控设备采购安装合同
- 二零二五年屋顶雨棚安装工程环保验收合同
- 二零二五年度挖掘机采购合同及维修配件供应范本
- 二零二五版旅游客车租赁与旅游文化交流协议
- 2025版绿色交通保障返租回报资金担保合同
- 2025版企业内退员工再就业培训及就业服务合同
- 2025版投影机采购及配套软件服务合同
- 混凝土配合比验证检验委托书模板
- 住房公积金投诉申请书
- 众辰变频器说明书3400
- 《世说新语》乘船 完整版课件
- 施工现场安全检查记录表(周)以及详细记录
- 《财务管理》课程教学实施方案
- 煤矿地质基础知识课件
- 检验科生物安全风险评估报告
- 西安市建设工程竣工验收备案表
- 大学体育四——啦啦操的教学设计
- 原始点疗法PPT课件
评论
0/150
提交评论