android中怎么实现经典90坦克大战战中,坦克...

Android坦克大战游戏设计解析_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Android坦克大战游戏设计解析
来源:Linux社区&
作者:guidebee
在前文曾经写过,但是后来由于没有时间,就没写完,最近,计划将地图开发包移植到平台。因此需要对Android平台进行学习,在看过Android开发指南后,对Android平台有了一些了解,但是还是无实战经验,学习一个平台最好的办法是通过一个项目,也就是通过编程来学习一个新的移动开发平台。因此想起几年前在Java ME平台上写的坦克大战游戏,这个一个既有趣以能充分了解一个新平台的项目。而且通过两个平台的比较,也就更好的理解Android平台开发的一些特点。
下图是Java ME平台下坦克大战的界面效果图。
在移植到过程中,发现尽管Android,和Java ME都是以Java为开发语言的手机平台,两都之间的差异还是不少的,但好处是,两者都采用Java语言,相当一部分与平台无关(如除图形,网络之类)的代码是可以通用的,这大大减少了从Java ME到Android平台移植的工作量。
这里先给出一些移植过程中的总结,后续文章将较详细的说明坦克大战游戏的设计过程(适用于各个平台)。
1. Android应用一般无主程序入口,但对于单Activity的应用来说,Activity相当于Java ME的 Midlet.
2. Android中View的概念类同于其它平台中Control的,ViewGroup相当于Container. 当然它也可以用作一个窗口View,在移植的过程中,采用单Activity,多窗口View的方法来对应于Java ME的Midlet和多个Displayable类.
相关资讯 & & &
& (07/13/:14)
& (08/11/:27)
& (05/06/:13)
& (04/17/:32)
& (05/31/:15)
& (04/02/:07)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款坦克大战截图
坦克大战注意事项
PS:拇指玩独家解决数据包不能共享问题!
坦克大战游戏介绍
做好准备,群雄逐鹿!我是迈克?坦克逊将军,世界上最伟大的坦克手!各路英雄来到我的岛屿参加《坦克大战》锦标赛,但是只有一人能加冕为王。最后鹿死谁手?快行动起来,发动《坦克大战》吧!自定义你的坦克,横扫战场,碾碎对手!《坦克大战》----免费游戏,给你最精彩刺激的多人玩家体验以及富有挑战性的单人任务!坦克调动简单快捷,让你立刻成为娴熟的坦克指挥官!√ 打造你的骑乘:大炮、装甲、履带、迷彩等的组合超过90000个,让你自定义个性坦克。√ 统治战场:22种强大物品比如地雷、炮塔、炸弹,给敌人造成巨大伤害!√ 组队战斗:和好友一起游戏或在史诗级的战斗中向他们挑战,爬上每周排行榜和全时段排行榜。√ 乐趣无限:单人游戏关卡多达80+,多人游戏地图多达10幅,还有可摧毁路障、移动障碍、自闭式门、传送带等,为你创造无限欢乐。
拇指玩***
游戏***成功显示黑屏或闪退时,玩家可以尝试手动解压GPK的方式
把GPK文件放到电脑桌面,将后缀名称“gpk”改成“zip”格式,进行解压,解压后用数据线连接手机,在电脑连接的手机文件夹Android里找到OBB文件夹,把之前解压出的数据包拖拽到OBB后再***APK尝试进入
02月27窗世
来自BBK VIVO S7I(T)
02月23xq9027d
这游戏真不错。但是要下新版本。新版没有下不了。
来自Xiaomi HM NOTE 1LTETD
02月16taoqiangzi
あなたのお
かあさん母さん
だいべん大便
来自HUAWEI H60-L01
02月14panchenyang
翻墙咋没有用啊
来自HUAWEI H60-L02
02月14?你一次
跑分有何用玩不玩的起所有安卓游戏才是王道
来自nubia NX503A
02月10回忆挽留
嚓,要更新
来自Hisense HS-EG958
荣耀6至尊版路过
来自HUAWEI H60-L21
01月21沉沦气氛
无法连接网络。我草
来自BBK VIVO X5MAX L
01月17楼不了
来自Xiaomi MI 3
01月16微甜的悲伤
翻墙就可以了
来自samsung SCH-R530U
加载更多评论
大家都在玩儿的游戏
角色扮演游戏推荐
最新游戏推荐
找安卓游戏,就来拇指玩Android 坦克大战游戏设计解析五
本篇介绍坦克大战游戏场景类BattleField的设计思路。
BattleField 是 Game API 中 TiledLayer 的子类。TiledLayer 实现了由小的图形(称为 tile)拼接成大的背景,坦克大战游戏的背景是由砖块,石块,树林,水面,雪地等小的图片拼接而成。TiledLayer 可以很容易的实现这种类型的背景,包括水面波汶的动态效果。
下面的图片是一个简单由多个小 tile 组成的游戏背景。
理论上 TiledLayer 可以实现无限大的背景。为简单起见坦克大战游戏中采用了半随机的方法来生成游戏背景,同时也提供了从文件读取游戏背景的方法,如果想完全复现 FC 的每一关,可以使用地图编辑器或是文本编辑器生成文件,然后从文件中读取背景。
这里给出一个关口的例子文件。
其中0代表空白,1 代表雪地,2 代表砖块,3 代表树林,4,5 代表水面,6 代表石块。由于每个 tile 比较小,这里每个数据代表一个 2X2 的区块,下面代表实现从文件生成游戏背景
* Read the battle from an input stream.
* @param is input stream stores the battle field information.
private void readBattlefield(java.io.InputStream is) throws IOException {
int c = -1;
int x0 = (WIDTH_IN_TILES-NUMBER_IN_TILES)/2;
int y0 = (HEIGHT_IN_TILES-NUMBER_IN_TILES)/2;
int x=0,y=0;
while ((c = is.read()) != -1 && y & NUMBER_IN_TILES) {
switch (c) {
case ' '://empty
duplicateCell(x+x0, y+y0, 0);x+=2;
case '1'://snow field
duplicateCell(x+x0, y+y0,SNOW);x+=2;
case '2'://brick wall
duplicateCell(x+x0, y+y0, BRICK_WALL);x+=2;
case '3'://forest
duplicateCell(x+x0, y+y0, FOREST);x+=2;
case '5'://water
duplicateCell(x+x0, y+y0, -1 - ((x ^ y) & 1));x+=2;
case '6': //Concrete wall
duplicateCell(x+x0, y+y0, CONCRETE_WALL);x+=2;
case '\n'://new line
实现在游戏中采用了半随机的方法,这样游戏关卡可以有无限多,半随机是指一半的砖块是从 HZK16(16 点阵汉字库)读取一个汉字,用其点阵显示为砖块,其它雪地,树林等采用随机数随机分布在游戏场景中。前几关的汉字是“引路蜂软件”。
坦克大战游戏中还会随机出现一些增强法宝,比如定时器可以让敌方坦克停止运动,地雷可以使屏幕中敌方坦克全部炸毁。铁锹可以让“家”全部被石块包住从而使敌方子弹无法打穿。星星可以让已方坦克加速,同时发射的子弹数增加并增加打击能力(比如可以打穿石块甚至树林等等)。
所以 BattleField 中同时也定义了显示 PowerUp(增强法宝),初始化敌方坦克位置(一般是从最上方的左,中,右依次出现)。另外还要判断某个位置坦克是否可能通过(有砖块,石头,水面不能通过),雪地要加速,其它地方可以通行。另外还要判断子弹是否击中墙壁(子弹击中墙壁后要爆炸等等)。
最后来看看它的 tick() 中主要做些什么
public void tick() {
int tickState = (tickCount++ && 3); // slow down x8
int tile = tickState % 2;
setAnimatedTile(-1 - tile, waterFrames[tile][(tickState % 4) / 2]);
if(concreteWallStartTime&0){
long tickTime=System.currentTimeMillis();
if(tickTime-concreteWallStartTime&concreteWallPeriod){
makeHomeBrickWall();
concreteWallStartTime=0;
它主要显示水面的动态效果,如果当前需要显示石块做的家,则将相应的 cell 中填入石块,由于宝贝有时效性,到了一定时间后将“家”变回普通砖块做成。

参考资料

 

随机推荐