制作的工具条件
android studio工具和ps
选择适合手机屏幕的图片
利用ps分成九等份,在制作一张空白图片
会安卓的点击事件处理
会Intent传值
会安卓基础的控件和布局
创建项目之后
第一件事就是写布局
第一个布局
选择图片的布局,称呼为选择图片的布局
写两个按钮用来切换图片,点击中间按钮开始游戏
并给id;
我是用图片代替按钮。
第二个布局
就是拼图游戏的布局;
用LinearLayout标签中的 android:layout_weight属性把九个图片控件平分屏幕。
并给id;
选择图片的Activity
很简单,一共有三个按钮,就写三个点击事件;
在定义一个 int tu_ID的变量,用来代表选中的是哪张图片;
首先是开始游戏的点击事件
利用Intent传值给拼图的Activity
其次是上一张的点击事件
点击后,tu_ID加一,并相应的改变背景图;
最后是下一张的点击事件
跟上一张差不多
拼图的Activity
第一件事就是拿到传过来的值,判断是哪张图片
然后创建一个长度为九的int数组,分别拿到8张图片的资源值
,第九张填空白图片的资源值。
打乱图片,图片不能直接随机打乱,否则会出现拼不了的现象;
我写了一个打乱方法
public int[] sjsss(int[] ai){
int weizhi=8;//表示白板的位置
int tihuan=0;
for (int i = 0; i < 50; i++) {//这个50次,你觉得少可以加
int sj1=(int)(Math.random()*4+1);
if (sj1==1) {
int pd=weizhi;
if (weizhi==2||weizhi==1||weizhi==0) {
pd=weizhi;
}else {
pd=weizhi-3;
}
tihuan=ai[weizhi];
ai[weizhi]=ai[pd];
ai[pd]=tihuan;
weizhi=pd;
}else if (sj1==2) {
int pd=weizhi;
if (weizhi==6||weizhi==7||weizhi==8) {
pd=weizhi;
}else {
pd=weizhi+3;
}
tihuan=ai[weizhi];
ai[weizhi]=ai[pd];
ai[pd]=tihuan;
weizhi=pd;
}else if (sj1==3) {
int pd=weizhi;
if (weizhi==0||weizhi==3||weizhi==6) {
pd=weizhi;
}else {
pd=weizhi-1;
}
tihuan=ai[weizhi];
ai[weizhi]=ai[pd];
ai[pd]=tihuan;
weizhi=pd;
}else if (sj1==4) {
int pd=weizhi;
if (weizhi==2||weizhi==5||weizhi==8) {
pd=weizhi;
}else {
pd=weizhi+1;
}
tihuan=ai[weizhi];
ai[weizhi]=ai[pd];
ai[pd]=tihuan;
weizhi=pd;
}
}
return ai;
}
打乱后,在把数组的资源分别填充到九个控件中
这里封装一个方法
public void runX(){
pt1.setImageDrawable(getResources().getDrawable(x[0]));
pt2.setImageDrawable(getResources().getDrawable(x[1]));
pt3.setImageDrawable(getResources().getDrawable(x[2]));
pt4.setImageDrawable(getResources().getDrawable(x[3]));
pt5.setImageDrawable(getResources().getDrawable(x[4]));
pt6.setImageDrawable(getResources().getDrawable(x[5]));
pt7.setImageDrawable(getResources().getDrawable(x[6]));
pt8.setImageDrawable(getResources().getDrawable(x[7]));
pt9.setImageDrawable(getResources().getDrawable(x[8]));
}
,
然后就在写九个控件的点击事件
看着多,其实简单写,
首先拿到白板的位置,
在每个点击事件里判断是否靠近白板
如果是,则交换数组的值,
然后在执行runX()
然后在写一个判断是否拼图完成的方法;
就是判断数组的每个值是否等于原先的值;
如果正确就可以弹出提示框或者什么;
最后
可以打包给同学朋友玩玩
也可以加个计时器进去。
有什么不懂的欢迎留言;