我正在准备一款像拼图这样的小游戏,为此我在布局中使用了 9 个图像视图和 9 个不同的图像。在启动时将图像设置为 imageview 这些是实际图像,随机播放后用户将滑动图像以完成拼图,我想检查修改后的图像与实际图像的,天气是否相等,如果它们相等弹出一条消息,就像游戏结束一样。
我试过这样
1.通过在图像(Drawables)之间使用 AND 运算符,但不幸的是。
2.对图像使用 setLevel() ,将这些 setLevel 值与滑动后图像的 getLevel 值进行比较仍然不走运..这里的问题是,如果我单击 imageview 一次 getLevel() 给出正确的值,如果我单击多次给出零值。为什么会出现这样的情况..
如果您在我的代码中发现任何错误,请帮助我,否则请用良好的技术指导我。
Xml code like this
<RelativeLayout
//9 imageview's
在这样的java代码中
如果用户单击 imageview 它将交换图像
img_View11.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(img_View21.getDrawable() == default_img ||
img_View12.getDrawable() == default_img) {
System.out.println("yes");
++click;
Noof_moves.setText("Moves: " +click);
ImageView iv = (ImageView)v;
d11 = iv.getDrawable();
prev_img = prev_imgView.getDrawable();
la11 = d11.getLevel();
System.out.println("d11 value is " +la11);
prev_imgView.setImageDrawable(d11);
img_View11.setImageDrawable(prev_img);
prev_imgView = img_View11;
check();
}
else { System.out.println("no"); }
}
});
void check(){
System.out.println("in checking condition");
if((lb11==la11) && (lb12==la12) && (lb13==la13) && (lb21==la21) && (lb22==la22)
&& (lb23==la23) && (lb31==la31) && (lb32==la32) && (lb33==la33)) {
Context c = getBaseContext();
System.out.println("gameover");
Toast.makeText(c, " GameOver ", Toast.LENGTH_SHORT).show();
}else{ System.out.println(" codition not checked "); }
}
//here lb=level before sliding
// la=level after sliding..
好的,这就是您为解决方案所做的事情。
- 维护一组新的可绘制对象,将它们标记为您最初拥有的原始可绘制对象。
可能就像
可绘制 og11 = imageView11.getDrawable();
在洗牌之前完成这部分。现在你有了原始的可绘制对象,以可绘制对象的形式存储。
- 每次单击后,检查拼图中的所有图像是否 og11 == imageView11.getDrawable(),...等等,如果匹配,则匹配,否则不匹配。
HTH.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)