Код: Выделить всё
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;
}
}
}