用Android Studio做一个超好玩的拼图游戏( 八 )


运行效果:
5、拼图游戏成功的条件
上面我们已经实现了拼图碎片进行移动的效果,但是并没有拼图游戏成功的效果和提示,所以,我们要在刚刚的move方法的最后加上一个判断的方法();顾名思义:判断游戏结束 。
|我们来实现一下判断游戏结束的逻辑 |
|–|–|
在方法里面先定义一个loop标志位,然后要遍历下标数组,判断是否它的[i]==i,就是说所有拼图的下标全部对应正确的位置 。比如:第1张图片的下标是0,[0]的值也是0,显示第一张图片 。所有图片都满足,也就是说此时拼图成功 。如果一个不满足,则未成功,所有loop置为false,继续判断 。
boolean loop = true;//定义标志位loopfor (int i = 0; i < imageIndex.length; i++) {if (imageIndex[i]!=i) {loop = false;break;}}
如果拼图成功了,则.(1)进行停止计时,
而且设置ib00.(false)禁止玩家继续移动按钮,
还有就是第九块空白区域显示出图片,即下标为8的第九张拼图 。
if (loop) {//拼图成功了//停止计时handler.removeMessages(1);//拼图成功后,禁止玩家继续移动按钮ib00.setClickable(false);ib01.setClickable(false);ib02.setClickable(false);ib10.setClickable(false);ib11.setClickable(false);ib12.setClickable(false);ib20.setClickable(false);ib21.setClickable(false);ib22.setClickable(false);//拼图成功后,第九块空白显示出图片,即下标为8的第九张图片ib22.setImageResource(image[8]);ib22.setVisibility(View.VISIBLE);
|我们再来实现一下游戏结束时的对话框 |
|–|–|
对话框要用到.对象,它的使用就是固定套路,我来补充知识点:
第一步:创建.对象第二步:设置对话框的内容:()方法来指定显示的内容第三步:调用//()设置:确定,取消,中立按钮第四歩:调用()方法创建这个对象第五歩:调用show()方法来显示我们的对话框
非常简单,按照上面的流程,我们来设置下对话框:
//弹出提示用户成功的对话框,并且设置确实的按钮//第一步:创建AlertDialog.Builder对象AlertDialog.Builder builder = new AlertDialog.Builder(this);//调用setIcon()设置图标,setTitle()或setCustomTitle()设置标题//第二步:设置对话框的内容:setMessage()方法来指定显示的内容builder.setMessage("恭喜,拼图成功!您用的时间为"+time+"秒")//第三步:调用setPositive/Negative/NeutralButton()设置:确定,取消,中立按钮.setPositiveButton("确认",null);//第四歩:调用create()方法创建这个对象AlertDialog dialog = builder.create();//第五歩:调用show()方法来显示我们的AlertDialog对话框dialog.show();
实现效果:
6、拼图游戏重新开始
我们在上面实现了拼图游戏成功的条件和提示了,现在到了最后一步——如何让游戏重新开始?
我们来看下拼图成功后,点击重新开始,目前只能重新计时,拼图并没有打乱,而且第九块还没有隐藏,所以,接下来我们的思路很明确,在重新开始的方法中编写打乱和隐藏图片的逻辑 。
|我们来实现重新开始游戏时的按钮状态还原 |
|–|–|
首先,这些按钮已经被设置成不可点击了,所以我们先要将它们设置为可以点击,就是设置ib00.(true),因为这部分代码都是一样的,所以我们将它单独封装成一个方法 。
另外,还要还原被点击的图片按钮变成初始化的模样,= ()其实就是绑定最后一次被隐藏的那块拼图,然后.(View.)将它显示出来 。= (R.id.)就是绑定的第九块拼图,.(View.)设置为不可见 。最后 = R.id.来初始化空白区域的按钮id 。