java飞机大战初始步骤

jiaonibugeiqian 2015-06-08 10:41:19
开发登录界面、设计地图加载、子弹飞机的加载、主控制程序的开发登录界面的开发,通常是在界面上显示游戏菜单选项,用户可根据菜单项选择需要的操作。菜单项是和游戏的功能紧密相关的。手机游戏的开发往往在界面和操作方式上有较高的要求,Java ME提供了低级界面开发的API,可用于游戏开发。低级界面画布类主要有Canvas和GameCanvas,其中Canvas是属于MIDP 1.0,GameCanvas则是属于MIDP 2.0。低级用户界面技术为用户提供了灵活的开发方法,可以进行一些较为底层的操作,例如:按键的处理事件更为丰富,组件位置的设置更为灵活。手机上的屏幕坐标系和我们常规数学的坐标系不相同。对于坐标(x,y),若x值越大,则越向右,y值越大,则越向下。对于飞机射击游戏,飞机在飞行过程中经过不同的地理环境,例如大海、小岛、石礁等作为地图的背景。地图的宽度通常要求能够自动匹配不同类型的手机宽度,高度则是以一个关卡所需的时间为依据进行设计。在此我们采用简化操作方法,给地图宽度和高度设置一个具体值。子弹的射击应该支持不同的方向,例如我方飞机自下而上发射子弹,敌方飞机自上而下发射子弹。当子弹与飞机碰撞之后,飞机的血量相应地要减少,如果飞机的血量为0,则产生爆炸效果,子弹和飞机都消失。飞机主角在开始游戏时出现在屏幕最底部的中间处,玩家可以通过上、下、左、右键控制其飞行方向,按下确认键后可以发射子弹。敌机在游戏开始后从背景上部出现,飞行,并发射子弹。在本任务中需要考虑敌机出现的位置,出现的数量和频率,飞行的速度和子弹的发射方向。
为了更好地控制游戏的主体逻辑,可以统一对游戏地图进行设置,对主角飞机、敌方飞机初始化,并在多线程中实现游戏的逻辑控制。
游戏主框架的首要模块的安排:
1.游戏的初始化。主要是完成游戏资源的加载,各种游戏对象、变量取值的初始化,游戏运行环境的获取和设置,历史记录的读取等。
2.游戏的主循环。执行游戏处理的主要代码,直到满足退出要求才停止循环,例如:玩家选择退出游戏,玩家游戏失败,玩家最终完成游戏等。主要实现分为三步:(1)获得游戏的输入信息;(2)处理游戏的逻辑;(3)更新游戏的画面
3.退出游戏
Canvas为抽象类,负责图形图像的绘制和用户交互。进行低级玩家界面的开发通常需要继承Canvas类,主要方法如下:
1.getHeight():获取Canvas绘图区域的高度。
2.getWidth():获取Canvas绘图区域的宽度。
3.paint(Graphics g):渲染画布,向屏幕画图,通常将画图的操作放在该方法中实现。当屏幕需要重新绘制时,Java ME主线程会自动调用paint方法,程序员不能在代码中直接声明调用该方法。
4.repaint():主动向系统请求刷新界面,具体的刷新操作实际是通过调用paint方法来完成。
5.isDoubleBuffered():判断手机设备是否匹配双缓冲。有些手机匹配双缓冲技术,有些则不匹配。
6.getGameAction(int keyCode):将手机的键值切换为游戏动作。
7.getKeyName(keyCode):得到按键的名字。
Graphics提供2D渲染能力,作用是在屏幕上绘制图形,类似于一支画笔。
Graphics绘制的图形不能够直接显示,必须通过Canvas或GameCanvas才能显示在屏幕上,因此Canvas和GameCanvas类似于可以显示图形的画布
Graphics类支持绘制图形主要包括以下3种:
(1)文本:可以设置文本的颜色、字体大小等
(2)图像:可以直接绘制图像文件或者从缓存中绘制
(3)2D几何图形:绘制点、直线、平面图形等
Graphics类没有构造方式,获取对象的途径有3种:
1.Canvas类中的paint方法有一个Graphics对象参数,系统会自动调用paint方法,并传进一个Graphics对象,因此可以在paint方法中使用Graphics对象编写绘图代码。
2.在GameCanvas类中通过getGraphics方法来获取一个Graphics对象,因此可以在要求的地方灵活地编写与绘图有关的代码。
3.Image对象的getGraphics()方法得到Graphics对象,可用于编写双缓冲区代码。
1.直接用整幅图片作为背景,再在上面重叠一层加入物件、摆设等,优点在于图形相对丰富、漂亮,但消耗资源较多,受手机硬件条件的影响不能做太大的图。
2.游戏地图是用一个个图块重复拼接成,而在程序中就可以通过一个较小的图像文件和一个二维数组,绘制出一幅较大的地图。具体的做法是将图像文件划分为若干个相同大小的图块(一般每个图块是16像素 × 16像素或者32像素 × 32像素),每个图块给一个索引值,例如:1表示草地图块,2表示砖头图块。而二维数据中记录的数字就是图像文件中的图块索引值,例如:某个数组元素的数值若为1,则表示在此处画草地。此方法的益处在于比较节约系统资源,可做出来的地图相对比较一般。
地图编辑器能够帮助将地图最后转变成程序直接使用,所以一个好的地图编辑器能够加速游戏的开发周期。
业界已经推出多款地图编辑器,例如Mappy(MapWin)、Tiled、TILE STUDIO等,其中Mappy功能比较强大,可以很方便地对2D地图进行编辑。
下载mayppy软件:HTTP:/ / www.tilemap.uk /mappy
假如需支持png图片,那么还需下载两个dll文件,这两个文件也都放在Mappy软件的网址上
zlib.dll用于文件压缩
libpng12.dll是PNG图像压缩库
将这两个文件下载复制到Mappy可执行文件的同一个目录下即可,否则在导入PNG文件时,会报图5-23的错误
制作游戏还需要用到图像素材,因此除了Mappy软件之外,还需要用到图像处理软件Photoshop来制作原始游戏素材。
J2SE中提供了多个接口和类管理集合,例如有Collection、List、Set、Map接口,实现接口的集合类有LinkedList、ArrayList、Vector、Hashtable、HashMap和WeakHashMap类。
在Java ME中只有java.util包提供Vector类,其功能和J2SE的Vector类似,实现的是一个动态增长的数组,可以在程序代码中调整或者裁减集合的大小,能向集合插入、删除和修改元素。
每一个集合中的元素都被分派一个整数索引号,能够直接根据索引号插入和删除一个元素,也能够修改和得到一个元素的值。
为了更好地控制游戏的主体逻辑,可以统一对游戏地图进行设置,对主角飞机、敌方飞机初始化,并在多线程中实现游戏的逻辑控制。
...全文
405 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiaonibugeiqian 2015-06-08
  • 打赏
  • 举报
回复
zijiding ...................

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧