Not work

Ответить
weTR1k
Сообщения: 1
Зарегистрирован: 11 авг 2019, 16:29

Not work

Сообщение weTR1k » 11 авг 2019, 16:34

Код: Выделить всё

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    ImageView box00,box01,box02,
              box10,box11,box12,
              box20,box21,box22;
    protected boolean playerMove = true;
    protected volatile String box = null;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TicTacToe ticTacToe = new TicTacToe();

        box00 = findViewById(R.id.box_00);
        box01 = findViewById(R.id.box_01);
        box02 = findViewById(R.id.box_02);
        box10 = findViewById(R.id.box_10);
        box11 = findViewById(R.id.box_11);
        box12 = findViewById(R.id.box_12);
        box20 = findViewById(R.id.box_20);
        box21 = findViewById(R.id.box_21);
        box22 = findViewById(R.id.box_22);

        box00.setOnClickListener(this);
        box01.setOnClickListener(this);
        box02.setOnClickListener(this);
        box10.setOnClickListener(this);
        box11.setOnClickListener(this);
        box12.setOnClickListener(this);
        box20.setOnClickListener(this);
        box21.setOnClickListener(this);
        box22.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.box_00:
                box = "00";
                break;
            case R.id.box_01:
                box = "01";
                break;
            case R.id.box_02:
                box = "02";
                break;
            case R.id.box_10:
                box = "10";
                break;
            case R.id.box_11:
                box = "11";
                break;
            case R.id.box_12:
                box = "12";
                break;
            case R.id.box_20:
                box = "20";
                break;
            case R.id.box_21:
                box = "21";
                break;
            case R.id.box_22:
                box = "22";
                break;
        }
    }
}

и

Код: Выделить всё

public class TicTacToe extends MainActivity implements Runnable {

    private Thread gameThread;
    private boolean gameRunning = true;
    private ArrayList<String> boxList = new ArrayList<>();
    private int[][] logic;
    private int game,temp1,temp2;
    private String temp;

    public TicTacToe() {
        logic = new int[3][3];
        gameThread = new Thread(this);
        gameThread.start();
    }

    @Override
    public void run() {
        while (gameRunning) {
            if (box != null) {
                boxListener();
            }
        }
    }

    private void control() {
        try {
            gameThread.sleep(20);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    private void boxListener() {
        if (playerMove) {
            boxLogicPlayer();
        }else if (!playerMove) {
            boxLogicBot();
        }
    }

    private void boxLogicPlayer() {
            synchronized (MainActivity.class) {
                if (box.equals("00") && playerMove) {
                    boxList.add("00");
                    logic[0][0] = 1;
                    box00.setImageResource(R.drawable.cross);
                    box00.setOnClickListener(null);
                    isWinner();
                    playerMove = false;
                }
            }


    }

    private void boxLogicBot() {
        if (!playerMove) {
            while(true) {
                temp1 = 0 + (int) (Math.random() * 2);
                temp2 = 0 + (int) (Math.random() * 2);
                temp = Integer.toString(temp1) + Integer.toString(temp2);
                if (!boxList.contains(temp)) {
                    boxList.add(temp);
                    logic[temp1][temp2] = 2;
                    isBox(temp);
                    isWinner();
                    playerMove = true;
                    break;
                }
            }
        }
    }

    private void isBox(String temp) {
        if (temp.equals(00)) {
            box00.setImageResource(R.drawable.zero);
            box00.setOnClickListener(null);
        }
        else if(temp.equals(01)) {
            box01.setImageResource(R.drawable.zero);
            box01.setOnClickListener(null);
        }
        else if(temp.equals(02)) {
            box02.setImageResource(R.drawable.zero);
            box02.setOnClickListener(null);
        }
        else if(temp.equals(10)) {
            box10.setImageResource(R.drawable.zero);
            box10.setOnClickListener(null);
        }
        else if(temp.equals(11)) {
            box11.setImageResource(R.drawable.zero);
            box11.setOnClickListener(null);
        }
        else if(temp.equals(12)) {
            box12.setImageResource(R.drawable.zero);
            box12.setOnClickListener(null);
        }
        else if(temp.equals(20)) {
            box20.setImageResource(R.drawable.zero);
            box20.setOnClickListener(null);
        }
        else if(temp.equals(21)) {
            box21.setImageResource(R.drawable.zero);
            box21.setOnClickListener(null);
        }
        else if(temp.equals(22)) {
            box22.setImageResource(R.drawable.zero);
            box22.setOnClickListener(null);
        }

    }

    private void isWinner() {
        if (logic[0][0] == 1 && logic[0][1] == 1 && logic[0][2] == 1) {
            game = 1;
            gameRunning = false;
        }
        else if (logic[0][0] == 2 && logic[0][1] == 2 && logic[0][2] == 2) {
            game = 2;
            gameRunning = false;
        }
        if (logic[1][0] == 1 && logic[1][1] == 1 && logic[1][2] == 1) {
            game = 1;
            gameRunning = false;
        }
        else if (logic[1][0] == 2 && logic[1][1] == 2 && logic[1][2] == 2) {
            game = 2;
            gameRunning = false;
        }
        if (logic[2][0] == 1 && logic[2][1] == 1 && logic[2][2] == 1) {
            game = 1;
            gameRunning = false;
        }
        else if (logic[2][0] == 2 && logic[2][1] == 2 && logic[2][2] == 2) {
            game = 2;
            gameRunning = false;
        }
        if (logic[0][0] == 1 && logic[1][0] == 1 && logic[2][0] == 1) {
            game = 1;
            gameRunning = false;
        }
        else if (logic[0][0] == 2 && logic[1][0] == 2 && logic[2][0] == 2) {
            game = 2;
            gameRunning = false;
        }
        if (logic[0][1] == 1 && logic[1][1] == 1 && logic[2][1] == 1) {
            game = 1;
            gameRunning = false;
        }
        else if (logic[0][1] == 2 && logic[1][1] == 2 && logic[2][1] == 2) {
            game = 2;
            gameRunning = false;
        }
        if (logic[0][2] == 1 && logic[1][2] == 1 && logic[2][2] == 1) {
            game = 1;
            gameRunning = false;
        }
        else if (logic[0][2] == 2 && logic[1][2] == 2 && logic[2][2] == 2) {
            game = 2;
            gameRunning = false;
        }
        if (logic[0][0] == 1 && logic[1][1] == 1 && logic[2][2] == 1) {
            game = 1;
            gameRunning = false;
        }
        else if (logic[0][0] == 2 && logic[1][1] == 2 && logic[2][2] == 2) {
            game = 2;
            gameRunning = false;
        }
        if (logic[0][2] == 1 && logic[1][1] == 1 && logic[2][0] == 1) {
            game = 1;
            gameRunning = false;
        }
        else if (logic[0][2] == 2 && logic[1][1] == 2 && logic[2][0] == 2) {
            game = 2;
            gameRunning = false;
        }
    }
}
Не прошу решения проблемы, хотя бы просто натолкните или посоветуйте

Ответить