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

转自: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)

2012-7-10 19:46 上传
点击文件名下载附件
下载积分: 下载豆 -2



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

源码只有五个类:

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



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

直接看看效果吧。

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





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


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


1.jpg

2012-7-10 20:49 上传
下载附件(28.98 KB)



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


2.jpg

2012-7-10 20:49 上传
下载附件(94.3 KB)



运行看看效果咯:


3.png

2012-7-10 20:49 上传
下载附件(41.57 KB)



一切都正常,我们继续。我们再将它改成全屏吧,在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可以直接截图,比较方便。(下图中右上角的小照相机)。



5.jpg

2012-7-10 20:49 上传
下载附件(133.46 KB)




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


 

oribricks.png
2012-7-10 20:50 上传
下载附件(24.28 KB)
redbricks.png
2012-7-10 20:50 上传
下载附件(24.29 KB)
blubricks.png
2012-7-10 20:50 上传
下载附件(24.31 KB)
等等。。



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

2012-7-10 20:50 上传
下载附件(192.48 KB)


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

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


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

当然我们先要将Libgdx文件加入项目里面。
把这四个文件加入项目libs文件夹下:


7.jpg

2012-7-10 20:51 上传
下载附件(270.86 KB)


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


8.jpg

2012-7-10 20:51 上传
下载附件(147.81 KB)



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


9.jpg

2012-7-10 20:51 上传
下载附件(174.77 KB)



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

展开阅读全文

没有更多推荐了,返回首页