文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
1 Android 坦克大战游戏设计解析一
几年前在 Java ME 平台上写的坦克大战游戏,这个一个既有趣以能充分了解一个新平台的项目。而且通过两个平台的比较,也就更好的理解 Android 平台开发的一些特点。 下图是 Java ME 平台下坦克大战的界面效果图。
图片 1.1 pic
在移植到过程中,发现尽管 Android,和 Java ME 都是以 Java 为开发语言的手机平台,两都之间的差异还是不少的,但好处是,两者都采用 Java 语言,相当一部分与平台无关(如除图形,网络之类)的代码是可以通用的,这大大减少了从 Java ME 到 Android 平台移植的工作量。
这里先给出一些移植过程中的总结,后续文章将较详细的说明坦克大战游戏的设计过程(适用于各个平台)。
- Android 应用一般无主程序入口,但对于单 Activity 的应用来说,Activity 相当于 Java ME 的 Midlet。
- Android 中 View 的概念类同于其它平台中 Control 的,ViewGroup 相当于 Container. 当然它也可以用作一个窗口 View,在移植的过程中,采用单 Activity,多窗口 View 的方法来对应于 Java ME 的 Midlet 和多个 Displayable 类。
- Android 绘制图形时,没有一般图形库中提供的 Pen, Brush 类,设置 Pen 和 Brush,字体都是通过 Paint 类来设置的,对于初学者一开始会觉得有些困惑。
- Rect 一般是通过 left,top, bottom, right 来定义,而 Java ME 平台是通过 left, top, width, height,如果不注意,会造成意想不对结果:-),如 android 平台中 canavs.drawRect, 以及 canvas.clipRect 是通过 left,top, bottom, right 来定义一个四边形,而 Java ME 是通过 left,top 及宽度,高度来定义,移植过程如果不注意就出错了。
- Android 在非 UI 线程中更新 Canvas 里,需要调用 postInvalidate, view.invalidate 相当于 Jave ME 中 Canvas 的 repaint。如果想在非 UI 线程执行和 UI 相关的方法,一般是通 hander.post 来实现,而与这对应的 Java ME 是 display 的 callSerially.
- Android 中提供一个 SurfaceView 类,允许在使用另一个 thread 来更新 Canvas,这对于游戏的图形的刷新性能提高非常重要。
- Android 没有提供类似 Java ME 中的 Game API,但是实现或是移植一个类似的 Game API 也不困难,Android 坦克大战游戏中移植了 Java ME Game API 中 Layer, LayerManager,TiledLayer,Sprite 类,使得整个移植工作变得非常顺利。
总体感觉 Android 平台相对来说还是比较容易上手,对于会 Java 或是 C# 的程序员,即使以前没有从事过手机软件开发,也是比较容易入门的。而且 Android 平台和 Java SE 有相当一部分类是公用的,也是二进制兼容的,也就是说在 Java SE 平台上的类库(.jar) 文件,可以直接用在 Anroid 平台,这里先给出一个移植后的截图。后面将详细说明这个游戏的设计,最后会给出所有源码,有兴趣的朋友可以扩展成联网游戏或是作为学习游戏设计的参考,坦克大战游戏是一个中等难度的游戏,对于有志从事手机游戏开发的朋友,可以自行写个坦克大战游戏后基本就能入门手机软件开发。
图片 1.2 pic
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论