libgdx游戏引擎教程实战篇(四)移植俄罗斯方块(附源码)
2013-03-11 14:23
806 查看
转自: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
我们接着实战三继续我们的移植工作(今晚我似乎讲了好几次这个话了=。=)
第三讲结束的时候我们的移植工作已经做了大半了。这个时候的程序已经可以运行了。也可以看到方块在动了...这是真的,相信我...
[align=left]不过我们还是没有做一个工作,就是捕捉触摸事件,在libgdx版本的俄罗斯方块中,我们不再捕捉键盘事件来控制方块,完全采用触摸的形式来控制。控制方式如下图所示,整个方块表示整个手机屏幕。[/align]
2012-7-10 22:00 上传
下载附件(24.46 KB)
[align=left]还是采用我曾经说过的,在GameScreen的reder()函数中捕捉触摸事件的方法。[/align]
if(Gdx.input.isTouched()){
int x=Gdx.input.getX();
int y=Gdx.input.getY();
if(x<(min/2)&&((y/x)>(max/min))&&y<(max-max*x/min)){
toLeft();
}
if(x>(min/2)&&(y/x<(max/min))&&y>(max-max*x/min)){
toRight();
}
if(((y/x)<(max/min))&&y<(max-max*x/min)){
roll();
}
if(((y/x)>(max/min))&&y>(max-max*x/min)){
toBelow();
}
}
复制代码
[align=left]当然这里还有一个问题,就像我们前几讲也曾经提到过的,render()函数运行得非常快,我们触摸一次的时间相对较长,那么就可能捕捉到很多次事件,那么该怎么办呢?我们可以在GameScreen.java里设置四个int型数:[/align]
int left;
int right;
int roll;
int below;
复制代码
[align=left]然后把以上判断触摸事件的代码改为:[/align]
if(Gdx.input.isTouched()){
int x=Gdx.input.getX();
int y=Gdx.input.getY();
if(x<(min/2)&&((y/x)>(max/min))&&y<(max-max*x/min)){
left++;
//触摸检测到事件并做出相应的频率变为原来的三分之一
if(left%3==0)
toLeft();
}
if(x>(min/2)&&(y/x<(max/min))&&y>(max-max*x/min)){
right++;
//触摸检测到事件并做出相应的频率变为原来的三分之一
if(right%3==0)
toRight();
}
if(((y/x)<(max/min))&&y<(max-max*x/min)){
roll++;
//触摸检测到事件并做出相应的频率变为原来的三分之一
if(roll%3==0)
roll();
}
if(((y/x)>(max/min))&&y>(max-max*x/min)){
below++;
//触摸检测到事件并做出相应的频率变为原来的二分之一 ,因为下降的操作灵敏一些比较好
if(below%2==0)
toBelow();
}
}
复制代码
[align=left]我们用这个很简单的办法就降低了事件实际的捕获频率,[/align]
[align=left]让游戏操作更自然一些,当然,灵敏度参数可以自行调整。[/align]
[align=left]这样,初步的移植就完成了。当然我们现在还有一些移植进来的函数没有用到,比如[/align]
[align=left]save(),read()函数等等,因为这些函数都是保存进度,读取进度的时候用的,我们先实现游戏功能,其他的我们一步步来。[/align]
其实我写到这个时候已经迫不及待偷偷地自己运行了一下,还好...可以运行...我们暂时先不看看效果图,看看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)
其实右上角有分数打印出来啦~!就是小了点...我懒了..没有把字体改大一点...大家将就看看吧=。=
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
我们接着实战三继续我们的移植工作(今晚我似乎讲了好几次这个话了=。=)
第三讲结束的时候我们的移植工作已经做了大半了。这个时候的程序已经可以运行了。也可以看到方块在动了...这是真的,相信我...
[align=left]不过我们还是没有做一个工作,就是捕捉触摸事件,在libgdx版本的俄罗斯方块中,我们不再捕捉键盘事件来控制方块,完全采用触摸的形式来控制。控制方式如下图所示,整个方块表示整个手机屏幕。[/align]
2012-7-10 22:00 上传
下载附件(24.46 KB)
[align=left]还是采用我曾经说过的,在GameScreen的reder()函数中捕捉触摸事件的方法。[/align]
if(Gdx.input.isTouched()){
int x=Gdx.input.getX();
int y=Gdx.input.getY();
if(x<(min/2)&&((y/x)>(max/min))&&y<(max-max*x/min)){
toLeft();
}
if(x>(min/2)&&(y/x<(max/min))&&y>(max-max*x/min)){
toRight();
}
if(((y/x)<(max/min))&&y<(max-max*x/min)){
roll();
}
if(((y/x)>(max/min))&&y>(max-max*x/min)){
toBelow();
}
}
复制代码
[align=left]当然这里还有一个问题,就像我们前几讲也曾经提到过的,render()函数运行得非常快,我们触摸一次的时间相对较长,那么就可能捕捉到很多次事件,那么该怎么办呢?我们可以在GameScreen.java里设置四个int型数:[/align]
int left;
int right;
int roll;
int below;
复制代码
[align=left]然后把以上判断触摸事件的代码改为:[/align]
if(Gdx.input.isTouched()){
int x=Gdx.input.getX();
int y=Gdx.input.getY();
if(x<(min/2)&&((y/x)>(max/min))&&y<(max-max*x/min)){
left++;
//触摸检测到事件并做出相应的频率变为原来的三分之一
if(left%3==0)
toLeft();
}
if(x>(min/2)&&(y/x<(max/min))&&y>(max-max*x/min)){
right++;
//触摸检测到事件并做出相应的频率变为原来的三分之一
if(right%3==0)
toRight();
}
if(((y/x)<(max/min))&&y<(max-max*x/min)){
roll++;
//触摸检测到事件并做出相应的频率变为原来的三分之一
if(roll%3==0)
roll();
}
if(((y/x)>(max/min))&&y>(max-max*x/min)){
below++;
//触摸检测到事件并做出相应的频率变为原来的二分之一 ,因为下降的操作灵敏一些比较好
if(below%2==0)
toBelow();
}
}
复制代码
[align=left]我们用这个很简单的办法就降低了事件实际的捕获频率,[/align]
[align=left]让游戏操作更自然一些,当然,灵敏度参数可以自行调整。[/align]
[align=left]这样,初步的移植就完成了。当然我们现在还有一些移植进来的函数没有用到,比如[/align]
[align=left]save(),read()函数等等,因为这些函数都是保存进度,读取进度的时候用的,我们先实现游戏功能,其他的我们一步步来。[/align]
其实我写到这个时候已经迫不及待偷偷地自己运行了一下,还好...可以运行...我们暂时先不看看效果图,看看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游戏引擎教程实战篇(二)移植俄罗斯方块(附源码)
- libgdx游戏引擎教程实战篇(五)移植俄罗斯方块(附源码)
- libgdx游戏引擎教程实战篇(六)移植俄罗斯方块(附源码)
- libgdx游戏引擎教程(十三)演员类的用户交互功能详解(附源码)
- libgdx游戏引擎教程(十)演员类的复杂动画(一)(附源码)
- libgdx游戏引擎教程(十四)libgdx中常用的控件(附源码)
- libgdx游戏引擎教程(十一)演员类的复杂动画(二)(附源码)
- libgdx游戏引擎教程(五)多游戏界面的实现(一)附源码
- libgdx游戏引擎教程(八) libgdx中的用户手势识别(一)附源码
- libgdx游戏引擎教程(九) libgdx中的用户手势识别(二)附源码
- 【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用
- Android游戏引擎libgdx使用教程7:引擎框架总观
- 【Android LibGDX游戏引擎开发教程】第08期:中文字体的显示和绘制(下)
- Android开发_libgdx游戏引擎教程外篇 优美的自定义进度条 (八)
- libgdx游戏引擎教程(二) ApplicationListener,着手第一个程序!
- 发现一个牛人写的android游戏教程——libgdx引擎
- Android游戏引擎libgdx使用教程2:如何绘制图形
- 【Android LibGDX游戏引擎开发教程】第04期:各个模块的详细介绍
- Android游戏引擎libgdx使用教程5:常用UI类与舞台
- 【Android LibGDX游戏引擎开发教程】第09期:动画类的使用