#Testin杯#Mkey libgdx游戏引擎教程实战篇(一)移植俄罗斯方块(附源码)

97
回复
434042
查看
  [复制链接]

30

主题

350

帖子

1089

安币

Android大神

Rank: 6Rank: 6

QQ达人

发表于 2012-7-10 20:47:12 | 显示全部楼层 |阅读模式
本帖最后由 耒佲請ぁ留埗 于 2012-7-26 17:26 编辑

   本文参与:Testin—安卓巴士Android开发原创教程大赛

以下系列教程按讲课顺序排列,也是推荐阅读的顺序

第一讲:libgdx游戏引擎教程(一)性能优良的游戏引擎—libgdx http://www.apkbus.com/android-57355-1-1.html

第二讲: libgdx游戏引擎教程(二) ApplicationListener,着手第一个程序http://www.apkbus.com/android-57372-1-1.html

第三讲:libgdx游戏引擎教程()libgdx粒子系统的使用 http://www.apkbus.com/android-57456-1-1.html

外篇一:libgdx游戏引擎教程外篇(一)优美的自定义进度条(附源码) http://www.apkbus.com/android-57523-1-1.html

第四讲:libgdx游戏引擎教程(四) 游戏正式开始,资源异步加载(附源码)http://www.apkbus.com/android-57716-1-1.html

第五讲 libgdx游戏引擎教程(五)多游戏界面的实现(一)附源码 http://www.apkbus.com/android-57936-1-1.html

第六讲 libgdx游戏引擎教程(六)多游戏界面的实现(二)附源码 http://www.apkbus.com/android-57991-1-1.html  

第七讲 libgdx游戏引擎教程(七) 在libgdx中拦截Android按键事件 http://www.apkbus.com/android-58030-1-1.html  

外篇二: libgdx游戏引擎教程外篇(二)libgdx移植俄罗斯方块(附源码) http://www.apkbus.com/android-58102-1-1.html   

实战一:libgdx游戏引擎教程实战篇(一)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58404-1-1.html  

实战二:libgdx游戏引擎教程实战篇(二)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58408-1-1.html  

实战三:libgdx游戏引擎教程实战篇(三)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58414-1-1.html  

实战四:libgdx游戏引擎教程实战篇(四)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58418-1-1.html  

实战五:libgdx游戏引擎教程实战篇(五)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58419-1-1.html

实战六:libgdx游戏引擎教程实战篇(六)移植俄罗斯方块(附源码) http://www.apkbus.com/android-58760-1-1.html

第八讲 libgdx游戏引擎教程(八) libgdx中的用户手势识别(一)附源码 http://www.apkbus.com/android-58933-1-1.html

第九讲 libgdx游戏引擎教程(九) libgdx中的用户手势识别(二)附源码 http://www.apkbus.com/android-59152-1-1.html

外篇三: libgdx游戏引擎教程外篇(三) 优美的自定义对话框(附源码) http://www.apkbus.com/android-59654-1-1.html  

第十讲:  libgdx游戏引擎教程(十)演员类的复杂动画(一)(附源码) http://www.apkbus.com/android-59998-1-2.html

第十一讲:libgdx游戏引擎教程(十一)演员类的复杂动画(二)(附源码) http://www.apkbus.com/android-60053-1-1.html

第十二讲:libgdx游戏引擎教程(十二)演员类的复杂动画(三)(附源码) http://www.apkbus.com/android-60194-1-1.html   

第十三讲: libgdx游戏引擎教程(十三)演员类的用户交互功能详解(附源码)  http://www.apkbus.com/android-60457-1-1.html

第十四讲:libgdx游戏引擎教程(十四)libgdx中常用的控件(附源码) http://www.apkbus.com/android-60569-1-1.html

最新更新 第十五讲 :libgdx游戏引擎教程(十五)在Libgdx中仿微信帮助滑动效果(附源码) http://www.apkbus.com/android-60822-1-1.html


     我们今天进入实战部分,因为我们学习游戏引擎毕竟是用来做游戏的嘛,不能能光说不练停留在一些表面的没有用的东西上面。嗯,进入正题。上次在

外篇二: libgdx游戏教程引擎外篇(二)libgdx移植俄罗斯方块(附源码) http://www.apkbus.com/android-58102-1-1.html   

中给出了这次我们要移植的俄罗斯方块的源码,我们在这里再给一次,方便大家下载:

SDK版本俄罗斯方块源码下载:



大家在下载以后最好先自己看一看源码,方便理解。

源码只有五个类:

Bricks.java,用于描述方块类;
GameView.java 游戏绘图界面;
SlideButton.java 开始界面的滑块类;
UiActivity.java 主界面Activity
ViewActivity.java 游戏界面Activity



代码这里就不做解释了,我将大部分源码都修改了一下并做了注释,大家可以在源码里面查看。

直接看看效果吧。

为了求简单,这个游戏没有上下左右的虚拟按键,有按键的手机可以使用上下左右按键操作方块,全触屏的手机可以按照的指示触摸屏幕的相应部位,相当于按下了相应的按键。





       这几讲我们将初步移植这个SDK版本的俄罗斯方块,改用libgdx实现,为了更快地让大家看到效果,我们先将主要的游戏功能都实现,至于一些同样重要的功能(如存档等),我们后续再加入,这样结构更清楚一些。


开始移植,新建一个工程,



现在里面什么都没有,我们先修改一下values里面strings.xml的值,改成我们工程的名字



运行看看效果咯:



一切都正常,我们继续。我们再将它改成全屏吧,在ActvityOnCreate()部分加上两行代码:
  1. requestWindowFeature(Window.FEATURE_NO_TITLE);
  2.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
复制代码
顺便在Manifest.xml里面将这个Activity强制改成竖屏的,在Activity的标签里加上以下语句。
  1. android:screenOrientation="portrait"
  2. android:configChanges="keyboardHidden|orientation"
复制代码
无论是用libgdx还是SDK写的,都可以用这个方法设置全屏,很方便。


看看效果,确认一下是不是全屏了。




没错,确实已经全屏了。这里顺便告诉大家一个小技巧,很多地方也有说过,把真机插在电脑上用DDMS可以直接截图,比较方便。(下图中右上角的小照相机)。





    我们先做一些简单的工作,我们把Bricks.java整个复制到新的工程里面,按照俄罗斯方块的玩法,应该有七种方块,所有方块都可以被包括在一个4*4的方格内,如图所示(图是自己画的,可能有点丑,大家见谅,haha~):

等等。。


     Bricks.java是怎么描述方块的呢?它用一个4*4的二维数组表示上图所示的4*4方格,然后用0表示该处为空,用非零的数字表示此处有方块,至于不同的数字就可以表示不同的颜色了,然后最后绘图的时候把代表整个页面的数组遍历一遍,不等于0的单位用根据其对应的非零值画出方块即可。我们来看看asset中的图片:

    很显然,按照我随手排的顺序,数组某个单位的值分别为1——6时,对应的颜色分别为蓝色,淡蓝色,绿色,红色,紫色和黄色。

   这里只是简单介绍一下这个类的工作原理。具体的大家还是要看一下源代码。因为这个类并不涉及绘图之类的工作,只是简单的用数组表示方块,因为不需要做任何的修改。

移植架构设计:
      既然我们是要用libgdx移植这个游戏,我们很显然要让UiActvity从直接继承Activity改成继承AndrodApplication, 并且我们用到了多界面,那么按照我在第五,第六,第七讲三讲中讲的,我们要有两个继承自Screen的界面,分别叫UiScreen,GameScreen,并且有一个管理这两个Screen的继承自Game类的类,我们叫它TetrisGame好了
当然我们先要将Libgdx文件加入项目里面。
把这四个文件加入项目libs文件夹下:


复制到项目的libs文件夹下:




再在工程中导入外部jar包:



    接下来我们就要开始移植了,需要先按照我们先前按照Libgdx游戏框架设计的架构新建一些类然后再进行功能上的移植。由于篇幅太长,我们放在 实战(二)中继续讲下去。


Testin ID:ilovemkey@gmail.com 总的而言这个平台真的非常好用!我正是用这个平台发现了现在写的这个应用的一些内存管理方面的问题。另外建议能够在测试报告中看到某一台机型在整个执行过程中的cpu和内存占用的变化情况,这样可以更快地锁定问题。感谢Itestin让测试变得轻松了太多太多!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

好!  发表于 2013-4-10 20:25
君见一叶舟,出没风波里

20

主题

802

帖子

3366

安币

码皇(巴士元老)

android亲王

Rank: 8Rank: 8

QQ达人最佳新人突出贡献热心会员签到达人

发表于 2012-7-10 22:38:45 | 显示全部楼层
沙发..........
android2千人开发qq群,火爆招募!!猛点      http://url.cn/OGlIWV

5

主题

163

帖子

956

安币

代码手工艺人

Rank: 4

发表于 2012-7-10 22:38:48 | 显示全部楼层
沙发,哈哈哈和哈哈哈

30

主题

350

帖子

1089

安币

Android大神

Rank: 6Rank: 6

QQ达人

 楼主| 发表于 2012-7-11 00:18:01 | 显示全部楼层
long_wang 发表于 2012-7-10 22:38
沙发,哈哈哈和哈哈哈

这么晚你居然还在线=。=
君见一叶舟,出没风波里

39

主题

342

帖子

494

安币

禁止发言

QQ达人

发表于 2012-7-12 22:54:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
www.027hsdn.com 武汉电脑回收,武汉二手电脑回收

0

主题

12

帖子

21

安币

初级码农

Rank: 1

发表于 2012-7-18 11:29:16 | 显示全部楼层
应该讲解多些。这才是重要的。。。其它的没什么用的{:Big Chin 2:}就少些了

30

主题

350

帖子

1089

安币

Android大神

Rank: 6Rank: 6

QQ达人

 楼主| 发表于 2012-7-18 11:32:32 | 显示全部楼层
live17909 发表于 2012-7-18 11:29
应该讲解多些。这才是重要的。。。其它的没什么用的就少些了

我讲的都是有用的,很多东西一知半解然后做的时候出一些很奇怪的错误,那讲的还有意思吗?
君见一叶舟,出没风波里

0

主题

455

帖子

9651

安币

码皇(巴士元老)

Rank: 8Rank: 8

发表于 2012-7-19 19:56:29 | 显示全部楼层
谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )