package com.example.xxr.game3;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by xxr on 2018/3/10.
 */

public class ActivityCollector {
    public static List<Activity> activities=new ArrayList<>();
    public static void addActivity(Activity activity){
        activities.add(activity);

    }
    public static void removeActivity(Activity activity){
        activities.remove(activity);
    }
    public static void finishAll(){
        for(Activity activity:activities){
            if(!activity.isFinishing()){
                activity.finish();
            }
        }
    }
}
package com.example.xxr.game3;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

/**
 * Created by xxr on 2018/3/10.
 */

public class BasicActivity extends AppCompatActivity {
    protected void  onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        ActivityCollector.addActivity(this);
    }
    protected void onDestroy(){
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }
}
package com.example.xxr.game3;

import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class Main2Activity extends BasicActivity {
    Button start,back,how;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        start=(Button)findViewById(R.id.begin);
        back=(Button)findViewById(R.id.back);
        how=(Button)findViewById(R.id.how);
        start.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent intent=new Intent(Main2Activity.this,Main3Activity.class);
                startActivity(intent);
            }
        });
        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                System.exit(0);
            }
        });
        how.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                AlertDialog.Builder howhow=new AlertDialog.Builder(Main2Activity.this);
                howhow.create();
                howhow.setIcon(R.drawable.icon);
                howhow.setMessage("                  **游戏规则**:\n   每个可以移动的颜色块下面有其可以移动的次数的数字,根据下面的数字,使界面最终变成一种颜色的色块,可移动色块不能移动到另一个可移动色块上,如果可移动色块数为零且没使界面统一颜色,则为失败,否则胜利!\n        祝你好运!!!!");
                howhow.setPositiveButton("确定",new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog,int which){
                        Toast.makeText(Main2Activity.this,"ok",Toast.LENGTH_SHORT).show();

                    }
                });
                howhow.show();

            }
        });

    }
}
package com.example.xxr.game3;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class Main3Activity extends BasicActivity {
    Button button;

    Button[] buttons=new Button[9];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        button=(Button)findViewById(R.id.backfinally);
        button.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                ActivityCollector.finishAll();
            }
        });
        buttons[0]=(Button)findViewById(R.id.b1);
        buttons[1]=(Button)findViewById(R.id.b2);
        buttons[3]=(Button)findViewById(R.id.b4);
        buttons[0].setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent intent=new Intent(Main3Activity.this,MainActivity.class);
                Toast.makeText(Main3Activity.this,"Ready....Go!",Toast.LENGTH_SHORT).show();
                startActivity(intent);

            }
        } );
        buttons[1].setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent intent=new Intent(Main3Activity.this,Main4Activity.class);
                Toast.makeText(Main3Activity.this,"Ready....Go!",Toast.LENGTH_SHORT).show();
                startActivity(intent);

            }
        } );
        buttons[3].setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent intent=new Intent(Main3Activity.this,Main5Activity.class);
                Toast.makeText(Main3Activity.this,"Ready....Go!",Toast.LENGTH_SHORT).show();
                startActivity(intent);

            }
        });
    }
}
package com.example.xxr.game3;

import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

  public class Main4Activity extends BasicActivity {
      Button button;
    GridLayout glayout;
    int x, y, currentx, currenty;
    int[] num=new int[11];
    ImageView[] group = new ImageView[11];
    TextView[] text = new TextView[11];


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4);
        button=(Button)findViewById(R.id.back2);
        button.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent intent=new Intent(Main4Activity.this,Main3Activity.class);
                startActivity(intent);
            }
        });
        glayout=(GridLayout)findViewById(R.id.mylayout);
        text[0] = (TextView) findViewById(R.id.t1a);
        text[1] = (TextView) findViewById(R.id.t2a);
        text[2] = (TextView) findViewById(R.id.t3a);
        text[3] = (TextView) findViewById(R.id.t4a);

        text[4] = (TextView) findViewById(R.id.t5a);
        text[5] = (TextView) findViewById(R.id.t6a);
        text[6] = (TextView) findViewById(R.id.t7a);

        text[7] = (TextView) findViewById(R.id.t8a);
        text[8] = (TextView) findViewById(R.id.t9a);
        text[9] = (TextView) findViewById(R.id.t10a);
        text[10] = (TextView) findViewById(R.id.t11a);

        group[0] = (ImageView) findViewById(R.id.i1a);
        group[1] = (ImageView) findViewById(R.id.i2a);
        group[2] = (ImageView) findViewById(R.id.i3a);
        group[3] = (ImageView) findViewById(R.id.i4a);

        group[4] = (ImageView) findViewById(R.id.i5a);
        group[5] = (ImageView) findViewById(R.id.i6a);
        group[6] = (ImageView) findViewById(R.id.i7a);

        group[7] = (ImageView) findViewById(R.id.i8a);
        group[8] = (ImageView) findViewById(R.id.i9a);
        group[9] = (ImageView) findViewById(R.id.i10a);
        group[10] = (ImageView) findViewById(R.id.i11a);

        for(int i=0;i<11;i++){
            num[i]=0;
        }
        num[1]=2;num[4]=1;num[6]=1;num[3]=1;num[10]=3;num[9]=2;


        glayout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent event) {


                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        x = (int) event.getX();
                        y = (int) event.getY();
                        Log.e("a", Integer.toString(x) + "aa" + Integer.toString(y));
                        // return true;
                        break;
                    case MotionEvent.ACTION_UP:
                        currentx = (int) event.getX();
                        currenty = (int) event.getY();
                        Log.e("b", Integer.toString(currentx) + "aaa" + Integer.toString(currenty));


                        //不知道此处的用法是否正确
                        if (x - currentx > 0 && Math.abs(y - currenty) < 100) {
                            Log.e("a", "left");
                            int m = (int) (y / (view.getHeight() / 4)) * 3 + (int) (x / (view.getWidth() / 3));
                            int n = (int) (x / (view.getWidth() / 3));
                            if (num[m] > 0 && n != 0&&num[m-1]==0) {
                                num[m - 1] = num[m] - 1;
                                num[m] = 0;
                                text[m].setText("                       0                 ");
                                text[m - 1].setText("                                      " + num[m - 1]);
                                group[m - 1].setImageDrawable(group[m].getDrawable());

                            }
                        } else if (x - currentx < 0 && Math.abs(y - currenty) < 100) {
                            int m = (int) (y / (view.getHeight() / 4)) * 3 + (int) (x / (view.getWidth() / 3));
                            int n = (int) (x / (view.getWidth() / 3));
                            if (num[m] > 0 && n != 2&&num[m+1]==0) {
                                num[m + 1] = num[m] - 1;
                                num[m] = 0;
                                text[m].setText("                       0                 ");
                                text[m + 1].setText("                                     " + num[m + 1]);
                                group[m + 1].setImageDrawable(group[m].getDrawable());
                            }
                        } else if (y - currenty > 0 && Math.abs(x - currentx) < 100) {
                            int m = (int) (y / (view.getHeight() / 4)) * 3 + (int) (x / (view.getWidth() / 3));
                            int n = (int) (y / (view.getHeight() / 4));
                            if (num[m] > 0 && n != 0&&num[(int) (y / (view.getHeight() / 4) - 1) * 3 + (int) (x / (view.getWidth() / 3))]==0) {
                                num[(int) (y / (view.getHeight() / 4) - 1) * 3 + (int) (x / (view.getWidth() / 3))] = num[m] - 1;
                                num[m] = 0;
                                text[m].setText("                      0                 ");
                                text[(int) (y / (view.getHeight() / 4) - 1) * 3 + (int) (x / (view.getWidth() / 3))].setText("                                     " + num[(int) (y / (view.getHeight() / 4) - 1) * 3 + (int) (x / (view.getWidth() / 3))]);
                                group[(int) (y / (view.getHeight() / 4) - 1) * 3 + (int) (x / (view.getWidth() / 3))].setImageDrawable(group[m].getDrawable());
                            }
                        } else if (y - currenty < 0 && Math.abs(x - currentx) < 100) {
                            int m = (int) (y / (view.getHeight() / 4)) * 3 + (int) (x / (view.getWidth() / 3));
                            int n = (int) (y / (view.getHeight() / 4));
                            if (num[m] > 0 && n != 3&& num[(int) (y / (view.getHeight() / 4) + 1) * 3 + (int) (x / (view.getWidth() / 3))]==0) {
                                num[(int) (y / (view.getHeight() / 4) + 1) * 3 + (int) (x / (view.getWidth() / 3))] = num[m] - 1;
                                num[m] = 0;
                                text[m].setText("                      0                 ");
                                text[(int) (y / (view.getHeight() / 4) + 1) * 3 + (int) (x / (view.getWidth() / 3))].setText("                                     " + num[(int) (y / (view.getHeight() / 4) + 1) * 3 + (int) (x / (view.getWidth() / 3))]);
                                group[(int) (y / (view.getHeight() / 4) + 1) * 3 + (int) (x / (view.getWidth() / 3))].setImageDrawable(group[m].getDrawable());
                            }
                        } else {
                            Toast.makeText(Main4Activity.this, "try again", Toast.LENGTH_SHORT).show();

                        }


                }
                for(int i=0;i<11;i++){
                    if(num[i]!=0){
                        break;
                    }
                    if(i==10){
                        isWin();
                    }
                }

                return true;
            }
        });
    }

      public void isWin(){
          for(int i=0;i<11;i++){
              if(!(group[i].getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.c).getConstantState()))){
                  AlertDialog.Builder alert=new AlertDialog.Builder(this);
                  alert.create();
                  alert.setTitle("Game");
                  alert.setIcon(R.drawable.fall);
                  alert.setCancelable(false);
                  alert.setMessage("对不起,你输了!\n你想要重新来过吗?亲!");
                  alert.setPositiveButton("恩",new DialogInterface.OnClickListener(){
                      public void onClick(DialogInterface dialog,int which){

                          Intent intent =new Intent(Main4Activity.this,Main4Activity.class);
                          startActivity(intent);
                      }

                  });
                  alert.setNegativeButton("算了吧",new DialogInterface.OnClickListener(){
                      public void onClick(DialogInterface dialog,int which){
                          Intent intent=new Intent(Main4Activity.this,Main3Activity.class);
                          startActivity(intent);
                      }
                  });
                  alert.show();
                  break;
              }





              if(i==10&&group[i].getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.c).getConstantState())){
                  AlertDialog.Builder alert=new AlertDialog.Builder(this);
                  alert.create();
                  alert.setTitle("Game");
                  alert.setIcon(R.drawable.win);
                  alert.setCancelable(false);
                  alert.setMessage("恭喜你顺利过关!!\n你想要进入下一关吗?亲!");
                  alert.setPositiveButton("恩",new DialogInterface.OnClickListener(){
                      public void onClick(DialogInterface dialog,int which){

                          Intent intent =new Intent(Main4Activity.this,Main5Activity.class);
                          startActivity(intent);
                      }

                  });
                  alert.setNegativeButton("算了吧",new DialogInterface.OnClickListener(){
                      public void onClick(DialogInterface dialog,int which){
                          Intent intent=new Intent(Main4Activity.this,Main3Activity.class);
                          startActivity(intent);
                      }
                  });
                  alert.show();
              }
          }
    }









}
package com.example.xxr.game3;

import android.content.DialogInterface;
import android.content.Intent;
import android.provider.MediaStore;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class Main5Activity extends BasicActivity {
    Button button;
    GridLayout glayout;
    int x, y, currentx, currenty;
    int[] num = new int[41];
    ImageView[] group = new ImageView[41];
    TextView[] text = new TextView[41];
    music c;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main5);
        c=new music(Main5Activity.this);
        button=(Button)findViewById(R.id.back3);
        button.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent intent=new Intent(Main5Activity.this,Main3Activity.class);
                startActivity(intent);
            }
        });
        glayout = (GridLayout) findViewById(R.id.mylayoutmm);
        text[0] = (TextView) findViewById(R.id.t1b);
        text[1] = (TextView) findViewById(R.id.t2b);
        text[2] = (TextView) findViewById(R.id.t3b);
        text[3] = (TextView) findViewById(R.id.t4b);

        text[4] = (TextView) findViewById(R.id.t5b);
        text[5] = (TextView) findViewById(R.id.t6b);
        text[6] = (TextView) findViewById(R.id.t7b);

        text[7] = (TextView) findViewById(R.id.t8b);
        text[8] = (TextView) findViewById(R.id.t9b);
        text[9] = (TextView) findViewById(R.id.t10b);
        text[10] = (TextView) findViewById(R.id.t11b);
        text[11] = (TextView) findViewById(R.id.t12b);
        text[12] = (TextView) findViewById(R.id.t13b);
        text[13] = (TextView) findViewById(R.id.t14b);
        text[14] = (TextView) findViewById(R.id.t15b);
        text[15] = (TextView) findViewById(R.id.t16b);

        text[16] = (TextView) findViewById(R.id.t17b);
        text[17] = (TextView) findViewById(R.id.t18b);
        text[18] = (TextView) findViewById(R.id.t19b);

        text[19] = (TextView) findViewById(R.id.t20b);
        text[20] = (TextView) findViewById(R.id.t21b);
        text[21] = (TextView) findViewById(R.id.t22b);
        text[22] = (TextView) findViewById(R.id.t23b);
        text[23] = (TextView) findViewById(R.id.t24b);
        text[24] = (TextView) findViewById(R.id.t25b);
        text[25] = (TextView) findViewById(R.id.t26b);
        text[26] = (TextView) findViewById(R.id.t27b);
        text[27] = (TextView) findViewById(R.id.t28b);

        text[28] = (TextView) findViewById(R.id.t29b);
        text[29] = (TextView) findViewById(R.id.t30b);
        text[30] = (TextView) findViewById(R.id.t31b);

        text[31] = (TextView) findViewById(R.id.t32b);
        text[32] = (TextView) findViewById(R.id.t33b);
        text[33] = (TextView) findViewById(R.id.t34b);
        text[34] = (TextView) findViewById(R.id.t35b);
        text[35] = (TextView) findViewById(R.id.t36b);
        text[36] = (TextView) findViewById(R.id.t37b);
        text[37] = (TextView) findViewById(R.id.t38b);
        text[38] = (TextView) findViewById(R.id.t39b);
        text[39] = (TextView) findViewById(R.id.t40b);

        text[40] = (TextView) findViewById(R.id.t41b);


        group[0] = (ImageView) findViewById(R.id.i1b);
        group[1] = (ImageView) findViewById(R.id.i2b);
        group[2] = (ImageView) findViewById(R.id.i3b);
        group[3] = (ImageView) findViewById(R.id.i4b);

        group[4] = (ImageView) findViewById(R.id.i5b);
        group[5] = (ImageView) findViewById(R.id.i6b);
        group[6] = (ImageView) findViewById(R.id.i7b);

        group[7] = (ImageView) findViewById(R.id.i8b);
        group[8] = (ImageView) findViewById(R.id.i9b);
        group[9] = (ImageView) findViewById(R.id.i10b);
        group[10] = (ImageView) findViewById(R.id.i11b);
        group[11] = (ImageView) findViewById(R.id.i12b);
        group[12] = (ImageView) findViewById(R.id.i13b);
        group[13] = (ImageView) findViewById(R.id.i14b);
        group[14] = (ImageView) findViewById(R.id.i15b);
        group[15] = (ImageView) findViewById(R.id.i16b);

        group[16] = (ImageView) findViewById(R.id.i17b);
        group[17] = (ImageView) findViewById(R.id.i18b);
        group[18] = (ImageView) findViewById(R.id.i19b);

        group[19] = (ImageView) findViewById(R.id.i20b);
        group[20] = (ImageView) findViewById(R.id.i21b);
        group[21] = (ImageView) findViewById(R.id.i22b);
        group[22] = (ImageView) findViewById(R.id.i23b);
        group[23] = (ImageView) findViewById(R.id.i24b);
        group[24] = (ImageView) findViewById(R.id.i25b);
        group[25] = (ImageView) findViewById(R.id.i26b);
        group[26] = (ImageView) findViewById(R.id.i27b);
        group[27] = (ImageView) findViewById(R.id.i28b);

        group[28] = (ImageView) findViewById(R.id.i29b);
        group[29] = (ImageView) findViewById(R.id.i30b);
        group[30] = (ImageView) findViewById(R.id.i31b);

        group[31] = (ImageView) findViewById(R.id.i32b);
        group[32] = (ImageView) findViewById(R.id.i33b);
        group[33] = (ImageView) findViewById(R.id.i34b);
        group[34] = (ImageView) findViewById(R.id.i35b);
        group[35] = (ImageView) findViewById(R.id.i36b);
        group[36] = (ImageView) findViewById(R.id.i37b);
        group[37] = (ImageView) findViewById(R.id.i38b);
        group[38] = (ImageView) findViewById(R.id.i39b);
        group[39] = (ImageView) findViewById(R.id.i40b);

        group[40] = (ImageView) findViewById(R.id.i41b);


        for (int i = 0; i < 41; i++) {
            num[i] = 0;
        }
        num[7] = 3;
        num[14] = 2;
        num[20] = 2;
        num[25] = 2;
        num[27] = 2;
        num[29] = 2;
        num[34] = 4;
        num[33] = 1;


        glayout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent event) {


                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        x = (int) event.getX();
                        y = (int) event.getY();
                        Log.e("a", Integer.toString(x) + "aa" + Integer.toString(y));
                        // return true;
                        break;
                    case MotionEvent.ACTION_UP:
                        currentx = (int) event.getX();
                        currenty = (int) event.getY();
                        Log.e("b", Integer.toString(currentx) + "aaa" + Integer.toString(currenty));


                        //不知道此处的用法是否正确
                        if (x - currentx > 0 && Math.abs(y - currenty) < 100) {
                            Log.e("a", "left");
                            int m = (int) (y / (view.getHeight() / 7)) * 6 + (int) (x / (view.getWidth() / 6));
                            int n = (int) (x / (view.getWidth() / 6));
                            if (num[m] > 0 && n != 0 && num[m - 1] == 0) {
                                num[m - 1] = num[m] - 1;
                                num[m] = 0;
                                text[m].setText("         0       ");
                                text[m - 1].setText("          " + num[m - 1] + "        ");
                                group[m - 1].setImageDrawable(group[m].getDrawable());

                            }
                        } else if (x - currentx < 0 && Math.abs(y - currenty) < 100) {
                            int m = (int) (y / (view.getHeight() / 7)) * 6 + (int) (x / (view.getWidth() / 6));
                            int n = (int) (x / (view.getWidth() / 6));
                            if (num[m] > 0 && n != 5 && num[m + 1] == 0) {
                                num[m + 1] = num[m] - 1;
                                num[m] = 0;
                                text[m].setText("         0       ");
                                text[m + 1].setText("         " + num[m + 1] + "        ");
                                group[m + 1].setImageDrawable(group[m].getDrawable());
                            }
                        } else if (y - currenty > 0 && Math.abs(x - currentx) < 100) {
                            int m = (int) (y / (view.getHeight() / 7)) * 6 + (int) (x / (view.getWidth() / 6));
                            int n = (int) (y / (view.getHeight() / 7));
                            if (num[m] > 0 && n != 0 && num[(int) (y / (view.getHeight() / 7) - 1) * 6 + (int) (x / (view.getWidth() / 6))] == 0) {
                                num[(int) (y / (view.getHeight() / 7) - 1) * 6 + (int) (x / (view.getWidth() / 6))] = num[m] - 1;
                                num[m] = 0;
                                text[m].setText("         0       ");
                                text[(int) (y / (view.getHeight() / 7) - 1) * 6 + (int) (x / (view.getWidth() / 6))].setText("         " + num[(int) (y / (view.getHeight() / 7) - 1) * 6 + (int) (x / (view.getWidth() / 6))] + "        ");
                                group[(int) (y / (view.getHeight() / 7) - 1) * 6 + (int) (x / (view.getWidth() / 6))].setImageDrawable(group[m].getDrawable());
                            }
                        } else if (y - currenty < 0 && Math.abs(x - currentx) < 100) {
                            int m = (int) (y / (view.getHeight() / 7)) * 6 + (int) (x / (view.getWidth() / 6));
                            int n = (int) (y / (view.getHeight() / 7));
                            if (num[m] > 0 && n != 6 && num[(int) (y / (view.getHeight() / 7) + 1) * 6 + (int) (x / (view.getWidth() / 6))] == 0) {
                                num[(int) (y / (view.getHeight() / 7) + 1) * 6 + (int) (x / (view.getWidth() / 6))] = num[m] - 1;
                                num[m] = 0;
                                text[m].setText("         0       ");
                                text[(int) (y / (view.getHeight() / 7) + 1) * 6 + (int) (x / (view.getWidth() / 6))].setText("         " + num[(int) (y / (view.getHeight() / 7) + 1) * 6 + (int) (x / (view.getWidth() / 6))] + "        ");
                                group[(int) (y / (view.getHeight() / 7) + 1) * 6 + (int) (x / (view.getWidth() / 6))].setImageDrawable(group[m].getDrawable());
                            }
                        } else {
                            Toast.makeText(Main5Activity.this, "try again", Toast.LENGTH_SHORT).show();
                            ;
                        }


                }
                for(int i=0;i<41;i++){
                    if(num[i]!=0){
                        break;
                    }
                    if(i==40){
                        isWin();
                    }
                }
                return true;
            }
        });
    }

    public void isWin() {
        for (int i = 0; i < 41; i++) {
            if (!(group[i].getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.nbl).getConstantState()))) {
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                alert.create();
                alert.setTitle("Game");
                alert.setIcon(R.drawable.fall);
                alert.setCancelable(false);
                alert.setMessage("对不起,你输了!\n你想要重新来过吗?亲!");
                alert.setPositiveButton("恩", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {

                        Intent intent = new Intent(Main5Activity.this, Main5Activity.class);
                        startActivity(intent);
                    }

                });
                alert.setNegativeButton("算了吧", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(Main5Activity.this, Main3Activity.class);
                        startActivity(intent);
                    }
                });
                alert.show();
                break;
            }


            if (i == 40&& group[i].getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.nbl).getConstantState())) {
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                alert.create();
                alert.setTitle("Game");
                alert.setIcon(R.drawable.win);
                alert.setCancelable(false);
                alert.setMessage("恭喜你顺利过关!!\n你想要进入下一关吗?亲!");
                alert.setPositiveButton("恩", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {

                        Intent intent = new Intent(Main5Activity.this, Main3Activity.class);
                        startActivity(intent);
                    }

                });
                alert.setNegativeButton("算了吧", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(Main5Activity.this, Main3Activity.class);
                        startActivity(intent);
                    }
                });
                alert.show();
            }
        }
    }
    public void onStop(){
        c.pause();
        super.onStop();
    }
}
package com.example.xxr.game3;

import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends BasicActivity {

   GridLayout glayout;
   Button button;
    int x, y, currentx, currenty;
  int[] num=new int[11];
    ImageView[] group = new ImageView[11];
    TextView[] text = new TextView[11];


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent=new Intent(MainActivity.this,MusicService.class);
         startService(intent);


        glayout=(GridLayout)findViewById(R.id.mylayout);
        text[0] = (TextView) findViewById(R.id.t1);
        text[1] = (TextView) findViewById(R.id.t2);
        text[2] = (TextView) findViewById(R.id.t3);
        text[3] = (TextView) findViewById(R.id.t4);

        text[4] = (TextView) findViewById(R.id.t5);
        text[5] = (TextView) findViewById(R.id.t6);
        text[6] = (TextView) findViewById(R.id.t7);

        text[7] = (TextView) findViewById(R.id.t8);
        text[8] = (TextView) findViewById(R.id.t9);
        text[9] = (TextView) findViewById(R.id.t10);
        text[10] = (TextView) findViewById(R.id.t11);

        group[0] = (ImageView) findViewById(R.id.i1);
        group[1] = (ImageView) findViewById(R.id.i2);
        group[2] = (ImageView) findViewById(R.id.i3);
        group[3] = (ImageView) findViewById(R.id.i4);

        group[4] = (ImageView) findViewById(R.id.i5);
        group[5] = (ImageView) findViewById(R.id.i6);
        group[6] = (ImageView) findViewById(R.id.i7);

        group[7] = (ImageView) findViewById(R.id.i8);
        group[8] = (ImageView) findViewById(R.id.i9);
        group[9] = (ImageView) findViewById(R.id.i10);
        group[10] = (ImageView) findViewById(R.id.i11);

        for(int i=0;i<11;i++){
            num[i]=0;
        }
        num[1]=1;num[7]=2;num[10]=3;
        button=(Button)findViewById(R.id.back1);
        button.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent intent=new Intent(MainActivity.this,Main3Activity.class);
                startActivity(intent);
            }
        });


            glayout.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent event) {


                    switch (event.getAction()) {
                        case MotionEvent.ACTION_DOWN:
                            x = (int) event.getX();
                            y = (int) event.getY();
                            Log.e("a", Integer.toString(x) + "aa" + Integer.toString(y));
                            // return true;
                            break;
                        case MotionEvent.ACTION_UP:
                            currentx = (int) event.getX();
                            currenty = (int) event.getY();
                            Log.e("b", Integer.toString(currentx) + "aaa" + Integer.toString(currenty));


                            //不知道此处的用法是否正确
                            if (x - currentx > 0 && Math.abs(y - currenty) < 100) {
                                Log.e("a", "left");
                                int m = (int) (y / (view.getHeight() / 4)) * 3 + (int) (x / (view.getWidth() / 3));
                                int n = (int) (x / (view.getWidth() / 3));
                                if (num[m] > 0 && n != 0&&num[m - 1]==0) {
                                    num[m - 1] = num[m] - 1;
                                    num[m] = 0;
                                    text[m].setText("                       0                 ");
                                    text[m - 1].setText("                                      " + num[m - 1]);
                                    group[m - 1].setImageDrawable(group[m].getDrawable());

                                }
                            } else if (x - currentx < 0 && Math.abs(y - currenty) < 100) {
                                int m = (int) (y / (view.getHeight() / 4)) * 3 + (int) (x / (view.getWidth() / 3));
                                int n = (int) (x / (view.getWidth() / 3));
                                if (num[m] > 0 && n != 2&&num[m + 1] ==0) {
                                    num[m + 1] = num[m] - 1;
                                    num[m] = 0;
                                    text[m].setText("                       0                 ");
                                    text[m + 1].setText("                                     " + num[m + 1]);
                                    group[m + 1].setImageDrawable(group[m].getDrawable());
                                }
                            } else if (y - currenty > 0 && Math.abs(x - currentx) < 100) {
                                int m = (int) (y / (view.getHeight() / 4)) * 3 + (int) (x / (view.getWidth() / 3));
                                int n = (int) (y / (view.getHeight() / 4));
                                if (num[m] > 0 && n != 0&& num[(int) (y / (view.getHeight() / 4) - 1) * 3 + (int) (x / (view.getWidth() / 3))]==0) {
                                    num[(int) (y / (view.getHeight() / 4) - 1) * 3 + (int) (x / (view.getWidth() / 3))] = num[m] - 1;
                                    num[m] = 0;
                                    text[m].setText("                      0                 ");
                                    text[(int) (y / (view.getHeight() / 4) - 1) * 3 + (int) (x / (view.getWidth() / 3))].setText("                                     " + num[(int) (y / (view.getHeight() / 4) - 1) * 3 + (int) (x / (view.getWidth() / 3))]);
                                    group[(int) (y / (view.getHeight() / 4) - 1) * 3 + (int) (x / (view.getWidth() / 3))].setImageDrawable(group[m].getDrawable());
                                }
                            } else if (y - currenty < 0 && Math.abs(x - currentx) < 100) {
                                int m = (int) (y / (view.getHeight() / 4)) * 3 + (int) (x / (view.getWidth() / 3));
                                int n = (int) (y / (view.getHeight() / 4));
                                if (num[m] > 0 && n != 3&& num[(int) (y / (view.getHeight() / 4) + 1) * 3 + (int) (x / (view.getWidth() / 3))]==0) {
                                    num[(int) (y / (view.getHeight() / 4) + 1) * 3 + (int) (x / (view.getWidth() / 3))] = num[m] - 1;
                                    num[m] = 0;
                                    text[m].setText("                      0                 ");
                                    text[(int) (y / (view.getHeight() / 4) + 1) * 3 + (int) (x / (view.getWidth() / 3))].setText("                                     " + num[(int) (y / (view.getHeight() / 4) + 1) * 3 + (int) (x / (view.getWidth() / 3))]);
                                    group[(int) (y / (view.getHeight() / 4) + 1) * 3 + (int) (x / (view.getWidth() / 3))].setImageDrawable(group[m].getDrawable());
                                }
                            } else {
                                Toast.makeText(MainActivity.this, "try again", Toast.LENGTH_SHORT).show();

                            }


                    }
                    for(int i=0;i<11;i++){
                        if(num[i]!=0){
                            break;
                        }
                        if(i==10){
                            isWin();
                        }
                    }
                    return true;
                }
            });
        }


    public void isWin(){
        for(int i=0;i<11;i++){
            if(!(group[i].getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.c).getConstantState()))){
                AlertDialog.Builder alert=new AlertDialog.Builder(this);
                alert.create();
                alert.setTitle("Game");
                alert.setIcon(R.drawable.fall);
                alert.setCancelable(false);
                alert.setMessage("对不起,你输了!\n你想要重新来过吗?亲!");
                alert.setPositiveButton("恩",new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog,int which){

                        Intent intent =new Intent(MainActivity.this,MainActivity.class);
                        startActivity(intent);
                    }

                });
                alert.setNegativeButton("算了吧",new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog,int which){
                        Intent intent=new Intent(MainActivity.this,Main3Activity.class);
                        startActivity(intent);
                    }
                });
                alert.show();
                break;
            }





            if(i==10&&group[i].getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.c).getConstantState())){
                AlertDialog.Builder alert=new AlertDialog.Builder(this);
                alert.create();
                alert.setTitle("Game");
                alert.setIcon(R.drawable.win);
                alert.setCancelable(false);
                alert.setMessage("恭喜你顺利过关!!\n你想要进入下一关吗?亲!");
                alert.setPositiveButton("恩",new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog,int which){

                        Intent intent =new Intent(MainActivity.this,Main4Activity.class);
                        startActivity(intent);
                    }

                });
                alert.setNegativeButton("算了吧",new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog,int which){
                        Intent intent=new Intent(MainActivity.this,Main3Activity.class);
                        startActivity(intent);
                    }
                });
                alert.show();
            }
        }









}

public void onStop(){

        Intent intent=new Intent(MainActivity.this,MusicService.class);
        stopService(intent);
        super.onStop();
}



}
package com.example.xxr.game3;

import android.content.Context;
import android.media.MediaPlayer;

/**
 * Created by xxr on 2018/3/11.
 */

public class music {



private static  MediaPlayer music;
private boolean musicSt=false;

public  music(Context t){
    music= MediaPlayer.create(t,R.raw.no__goodbye);
    music.setLooping(true);
    if(!musicSt){
        music.start();
        musicSt=true;
    }

}
public void pause(){
    if(musicSt){
        music.stop();
        musicSt=false;
    }
}



}
package com.example.xxr.game3;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;

/**
 * Created by xxr on 2018/3/11.
 */

public class MusicService extends Service {
    private MediaPlayer mediaPlayer;
    public IBinder onBind(Intent intent){
        return null;
    }
    public void onStart(Intent intent,int startld){
        super.onStart(intent,startld);
        if(mediaPlayer==null){
            mediaPlayer=MediaPlayer.create(this,R.raw.dzq);




            mediaPlayer.setLooping(true);
            mediaPlayer.start();

        }
    }
    public void onDestroy(){
        super.onDestroy();
        mediaPlayer.stop();
    }
}