转自:http://www.apkbus.com/android-58404-1-1.html
我们今天进入实战部分,因为我们学习游戏引擎毕竟是用来做游戏的嘛,不能能光说不练停留在一些表面的没有用的东西上面。嗯,进入正题。上次在
外篇二:libgdx游戏教程引擎外篇(二)libgdx移植俄罗斯方块(附源码)http://www.apkbus.com/android-58102-1-1.html
中给出了这次我们要移植的俄罗斯方块的源码,我们在这里再给一次,方便大家下载:
SDK版本俄罗斯方块源码下载:
Tetris_slide.rar(537.04 KB, 下载次数: 219)
大家在下载以后最好先自己看一看源码,方便理解。
源码只有五个类:
Bricks.java,用于描述方块类;
GameView.java 游戏绘图界面;
SlideButton.java 开始界面的滑块类;
UiActivity.java 主界面Activity
ViewActivity.java 游戏界面Activity
代码这里就不做解释了,我将大部分源码都修改了一下并做了注释,大家可以在源码里面查看。
直接看看效果吧。
为了求简单,这个游戏没有上下左右的虚拟按键,有按键的手机可以使用上下左右按键操作方块,全触屏的手机可以按照的指示触摸屏幕的相应部位,相当于按下了相应的按键。
这几讲我们将初步移植这个SDK版本的俄罗斯方块,改用libgdx实现,为了更快地让大家看到效果,我们先将主要的游戏功能都实现,至于一些同样重要的功能(如存档等),我们后续再加入,这样结构更清楚一些。
一切都正常,我们继续。我们再将它改成全屏吧,在Actvity的OnCreate()部分加上两行代码:
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
- android:screenOrientation="portrait"
- android:configChanges="keyboardHidden|orientation"
Bricks.java是怎么描述方块的呢?它用一个4*4的二维数组表示上图所示的4*4方格,然后用0表示该处为空,用非零的数字表示此处有方块,至于不同的数字就可以表示不同的颜色了,然后最后绘图的时候把代表整个页面的数组遍历一遍,不等于0的单位用根据其对应的非零值画出方块即可。我们来看看asset中的图片:
很显然,按照我随手排的顺序,数组某个单位的值分别为1——6时,对应的颜色分别为蓝色,淡蓝色,绿色,红色,紫色和黄色。
移植架构设计:
既然我们是要用libgdx移植这个游戏,我们很显然要让UiActvity从直接继承Activity改成继承AndrodApplication,并且我们用到了多界面,那么按照我在第五,第六,第七讲三讲中讲的,我们要有两个继承自Screen的界面,分别叫UiScreen,GameScreen,并且有一个管理这两个Screen的继承自Game类的类,我们叫它TetrisGame好了。
复制到项目的libs文件夹下:
接下来我们就要开始移植了,需要先按照我们先前按照Libgdx游戏框架设计的架构新建一些类然后再进行功能上的移植。由于篇幅太长,我们放在 实战(二)中继续讲下去。