Код для пятнашек на Андроид

Автор: | 16.02.2016
package sunshine.ikurs.kz.myapplication;

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


public class MainActivity extends AppCompatActivity {

    //Объявляем массив кнопок
    Button [] B;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Создаем массив кнопок.
        B=new Button[16];
        //Записываем кнопки в массив.
        B[0]=(Button)findViewById(R.id.button1);
        B[1]=(Button)findViewById(R.id.button2);
        B[2]=(Button)findViewById(R.id.button3);
        B[3]=(Button)findViewById(R.id.button4);
        B[4]=(Button)findViewById(R.id.button5);
        B[5]=(Button)findViewById(R.id.button6);
        B[6]=(Button)findViewById(R.id.button7);
        B[7]=(Button)findViewById(R.id.button8);
        B[8]=(Button)findViewById(R.id.button9);
        B[9]=(Button)findViewById(R.id.button10);
        B[10]=(Button)findViewById(R.id.button11);
        B[11]=(Button)findViewById(R.id.button12);
        B[12]=(Button)findViewById(R.id.button13);
        B[13]=(Button)findViewById(R.id.button14);
        B[14]=(Button)findViewById(R.id.button15);
        B[15]=(Button)findViewById(R.id.button16);

    }
    //Функция смены кнопок Swap(B[2],B[3]);
    public void Swap(Button B1, Button B2)
    {
        if (B2.getVisibility() == View.INVISIBLE)
        {
            B2.setVisibility(View.VISIBLE);
            B1.setVisibility(View.INVISIBLE);
            String Tmp = B1.getText().toString();
            B1.setText(B2.getText());
            B2.setText(Tmp);
        }
    }

    public void buttonOnClick(View V) {
        //Получаем текущую кнопку по которой кликнули
        Button current = (Button)V;
        //Получаем номер кнопки из тега кторый задали в XML файле в текстовом режиме редактирования
        String N=current.getTag().toString();
        //преобразуем тег из строки в целое число
        int n = Integer.parseInt(N)-1;
        //рассчитываем номер строки путем целочисленного деления
        int y = n / 4;
        //вычисляем столбец
        int x = n;
        if (n >= 12) x = n - 12;
        else
        if (n >= 8) x = n - 8;
        else
        if (n >= 4) x = n - 4;
        //Рассчитываем номер кнопки сверху снизу слева справа и записываем в переменные
        //NT NL NR NB NC (Top Left Right Bottom Current)
        int nc = y * 4 + x;
        int nt = (y - 1) * 4 + x;
        int nb = (y + 1) * 4 + x;
        int nl= y * 4 + x-1;
        int nr = y * 4 + x + 1;
        //Проверяем существование кнопки слева справа снизу сверху
        //Если существует то пытаемся поменять кнопки местами
        if (y - 1 >= 0)
            Swap(B[nc], B[nt]);
        if (y + 1 < 4)
            Swap(B[nc], B[nb]);
        if (x - 1 >= 0)
            Swap(B[nc], B[nl]);
        if (x + 1 < 4)
            Swap(B[nc], B[nr]);
    }


}