J2ME程序设计实例教程(第07章).ppt_第1页
J2ME程序设计实例教程(第07章).ppt_第2页
J2ME程序设计实例教程(第07章).ppt_第3页
J2ME程序设计实例教程(第07章).ppt_第4页
J2ME程序设计实例教程(第07章).ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

J2ME程序设计实例教程第07章推箱子,作者:杨光E-mail:guang760212,第7章推箱子,本章将设计一个手机上的推箱子游戏,学习GAMEAPI的使用。7.1知识点7.2设计要求7.3类设计7.4代码实现7.5实践,7.1知识点GAMEAPI,GAMEAPI定义在javax.microedition.lcdui.game包中,由GameCanvas、Layer、TiledLayer、Sprite、LayerManager等5个类组成。,7.1知识点GameCanvas类,GameCanvas扩展了javax.microedition.lcdui.Canvas,是一个抽象类,为游戏提供了基本的游戏用户界面。GameCanvas类实现了双缓存技术。publicvoidflushGraphics()publicvoidflushGraphics(intxinty,intwidth,intheight)按键状态查询intkeyState=getKeyState();if(keyTiledLayerbackground=newTiledLayer(8,8,img,16,16);catch(IOExceptionioe)System.out.println(读取图片错误!+ioe.toString();,7.1知识点TiledLayer类,填充背景方法:publicvoidsetCell(intcol,introw,inttiledIndex)publicvoidfillCells(intcol,introw,intnumCols,intnumRows,inttiledIndexs),7.1知识点TiledLayer类,常用方法:publicintgetRows()publicintgetColumns()publicintgetCell(intcol,introw)publicintgetCellWidth()publicintgetCellHeight()publicvoidsetStaticTileSet(Imageimg,inttileWidth,intTileHeight),7.1知识点Sprite类,Sprite是Layer的子类,描述了游戏中活动的角色。例如,行走的人物、奔跑的怪物、飞行的子弹等。Sprite创建的对象拥有一个帧的集合,集合中的帧用来描绘Sprite对象的外观,任一时刻只显示一帧图像。如果快速、连续的显示集合中不同的帧,那么Sprite对象就会呈现出动画的效果。,7.1知识点Sprite类,7.1知识点Sprite类,创建Sprite对象tryImageimg=Image.createImage(/worker.png);Spriteworker=newSpriter(img,16,16);catch(IOExceptionioe)System.out.println(加载图片错误!+ioe.toString();,7.1知识点Sprite类,Sprite对象通过下面的方法可以改变当前显示的帧。publicvoidsetFrame(intsequenceIndex)publicvoidnextFrame()publicvoidprevFrame(),7.1知识点Sprite类,碰撞检测publicbooleancollidesWith(Sprites,booleanpixelLevel)publicbooleancollidesWith(TiledLayert,booleanpixelLevel)publicvoiddefineCollisionRectangle(intx,inty,intwidth,intheight),教材P166,例7-1演示了TiledLayer和Sprite的使用,7.1知识点LayerManager类,LayerManager是个图层管理器,负责管理游戏中的可见元素(Layer对象)。使用LayerManager能够简化游戏界面的绘制过程,并且可以很容易的实现游戏界面的滚动功能。,7.1知识点LayerManager类,7.1知识点LayerManager类,图层管理方法:publicvoidappend(Layerlayer)publicvoidinsert(Layerlayer,intindex)publicvoidremove(Layerlayer)publicLayergetLayerAt(intindex)publicintgetSize()教材P172,例7-2演示了图层管理,7.1知识点定时器,Timer定义在java.util包中,是个定时器,能够在后台线程中执行定时的任务。根据定时任务执行的次数,定时器有两种工作方式:一次运行的定时器和重复运行的定时器。,7.1知识点定时器,定时器在指定的时间执行定时的任务,该任务只被执行一次。定时器对象调用下面的方法安排任务的执行时间。publicvoidschedule(TimerTasktask,Datetime)publicvoidschedule(TimerTasktask,longdelay),7.1知识点定时器,定时器在指定的时间开始执行任务,然后该任务将被重复执行。定时器调用下面的方法安排任务开始执行的时间,及任务重复执行的频率。publicvoidschedule(TimerTasktask,DatefirstTime,longperiod)publicvoidschedule(TimerTasktask,longdelay,longperiod)publicvoidscheduleAtFixedRate(TimerTasktask,DatefirstTime,longperiod)publicvoidscheduleAtFixedRate(TimerTasktask,longdelay,longperiod),7.1知识点定时器,TimerTask是一个抽象类,表示定时器要执行的任务。TimerTask的子类负责实现执行任务的run方法。下面代码演示了定时器的使用。Timertimer=newTimer();TimerTasktask=newTimerTask()publicvoidrun()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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论