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

转自:http://www.apkbus.com/android-58418-1-1.html

 

SDK版俄罗斯方块源码下载(我们移植工作的素材)

Tetris_slide.rar(537.04 KB, 下载次数: 34)

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



实战一到五移植后的源码:
libgdxTetris.rar(3.93 MB, 下载次数: 100)

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



我们接着实战三继续我们的移植工作(今晚我似乎讲了好几次这个话了=。=)

第三讲结束的时候我们的移植工作已经做了大半了。这个时候的程序已经可以运行了。也可以看到方块在动了...这是真的,相信我...

不过我们还是没有做一个工作,就是捕捉触摸事件,在libgdx 版本的俄罗斯方块中,我们不再捕捉键盘事件来控制方块,完全采用触摸的形式来控制。控制方式如下图所示,整个方块表示整个手机屏幕。


2012-7-10 22:00 上传
下载附件(24.46 KB)



还是采用我曾经说过的,在GameScreen的reder()函数中捕捉触摸事件的方法。
  1. if(Gdx.input.isTouched()){
  2. int x=Gdx.input.getX();
  3. int y=Gdx.input.getY();
  4. if(x<(min/2)&&((y/x)>(max/min))&&y<(max-max*x/min)){
  5. toLeft();
  6. }
  7. if(x>(min/2)&&(y/x<(max/min))&&y>(max-max*x/min)){
  8. toRight();
  9. }
  10. if(((y/x)<(max/min))&&y<(max-max*x/min)){
  11. roll();
  12. }
  13. if(((y/x)>(max/min))&&y>(max-max*x/min)){
  14. toBelow();
  15. }
  16. }
复制代码
当然这里还有一个问题,就像我们前几讲也曾经提到过的, render() 函数运行得非常快,我们触摸一次的时间相对较长,那么就可能捕捉到很多次事件,那么该怎么办呢?我们可以在GameScreen.java里设置四个 int 型数:

 

  1. int left;
  2. int right;
  3. int roll;
  4. int below;
复制代码
然后把以上判断触摸事件的代码改为:
  1. if(Gdx.input.isTouched()){
  2. int x=Gdx.input.getX();
  3. int y=Gdx.input.getY();
  4. if(x<(min/2)&&((y/x)>(max/min))&&y<(max-max*x/min)){
  5. left++;
  6. //触摸检测到事件并做出相应的频率变为原来的三分之一
  7. if(left%3==0)
  8. toLeft();
  9. }
  10. if(x>(min/2)&&(y/x<(max/min))&&y>(max-max*x/min)){
  11. right++;
  12. //触摸检测到事件并做出相应的频率变为原来的三分之一
  13. if(right%3==0)
  14. toRight();
  15. }
  16. if(((y/x)<(max/min))&&y<(max-max*x/min)){
  17. roll++;
  18. //触摸检测到事件并做出相应的频率变为原来的三分之一
  19. if(roll%3==0)
  20. roll();
  21. }
  22. if(((y/x)>(max/min))&&y>(max-max*x/min)){
  23. below++;
  24. //触摸检测到事件并做出相应的频率变为原来的二分之一 ,因为下降的操作灵敏一些比较好
  25. if(below%2==0)
  26. toBelow();
  27. }
  28. }
复制代码

 

我们用这个很简单的办法就降低了事件实际的捕获频率,
让游戏操作更自然一些,当然,灵敏度参数可以自行调整。



 

这样,初步的移植就完成了。 当然我们现在还有一些移植进来的函数没有用到,比如

 

save(),read() 函数等等,因为这些函数都是保存进度,读取进度的时候用的,我们先实现游戏功能,其他的我们一步步来。



其实我写到这个时候已经迫不及待偷偷地自己运行了一下,还好...可以运行...我们暂时先不看看效果图,看看libgdx版俄罗斯方块移植到现在的代码吧:


2012-7-10 22:06 上传
下载附件(39.53 KB)



算了,还是看看效果图吧,我也有点忍不住了。当然为了达到以下的效果,比如在GameScreen中加入背景图什么的小的改动我就没有在这里细说,大家可以看看代码。这一讲我们就把目前为止移植好了的源码放上来给大家看看好了。下一讲我们将做目前整个移植工作做一个总结,贴出各部分的完整代码并对各部分的功能再做一个解释。

2012-7-10 22:10 上传
下载附件(138.64 KB)



按一下下面的那个按钮...

2012-7-10 22:09 上传
下载附件(173.01 KB)




其实右上角有分数打印出来啦~!就是小了点...我懒了..没有把字体改大一点...大家将就看看吧=。=

你可能感兴趣的:(libgdx)