//This is a basic game tic-tac-toe implemented using Java and build using Android Studio //MainAcivity.java file code is given below: package com.rharipriya.tictactoe;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle; import android.view.Menu;
import android.view.MenuItem; import android.view.View;
import android.widget.GridLayout; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
// 0 = cross, 1 = dot
int activePlayer = 0;
boolean gameIsActive = true;
// 2 means unplayed
int[] gameState = {2, 2, 2, 2, 2, 2, 2, 2, 2}; //intially assume draw
int[][] winningPositions = {{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, {2,4,6}}; //declaring winning positions
public void dropIn(View view) {
ImageView counter = (ImageView) view;
int cnt = Integer.parseInt(counter.getTag().toString());
if (gameState[cnt] == 2 && gameIsActive) {
gameState[cnt] = activePlayer;
counter.setTranslationY(-1000f);
if (activePlayer == 0) {
counter.setImageResource(R.drawable.cross);
activePlayer = 1;
}
else {
counter.setImageResource(R.drawable.dot);
activePlayer = 0;
}
counter.animate().translationYBy(1000f).rotation(360).setDuration(300);
for (int[] winningPosition : winningPositions) {
if (gameState[winningPosition[0]] == gameState[winningPosition[1]] && gameState[winningPosition[1]] == gameState[winningPosition[2]] && gameState[winningPosition[0]] != 2) {
// if someone has won stop the game
gameIsActive = false;
String winner = "Dot";
if (gameState[winningPosition[0]] == 0) {
winner = "Cross";
}
TextView winnerMessage = (TextView) findViewById(R.id.winnerMessage);
winnerMessage.setText(winner + " has won!");
LinearLayout layout = (LinearLayout)findViewById(R.id.playAgainLayout);
layout.setVisibility(View.VISIBLE);
}
else {
boolean gameIsOver = true;
for (int counterState : gameState) {
if (counterState == 2) gameIsOver = false;
}
if (gameIsOver) {
TextView winnerMessage = (TextView) findViewById(R.id.winnerMessage);
winnerMessage.setText("It's a draw");
LinearLayout layout = (LinearLayout)findViewById(R.id.playAgainLayout);
layout.setVisibility(View.VISIBLE);
}
}
}
}
}
public void playAgain(View view) {
gameIsActive = true;
LinearLayout layout = (LinearLayout)findViewById(R.id.playAgainLayout);
layout.setVisibility(View.INVISIBLE);
activePlayer = 0;
for (int i = 0; i < gameState.length; i++) {
gameState[i] = 2;
}
GridLayout gridLayout = (GridLayout)findViewById(R.id.gridLayout);
for (int i = 0; i< gridLayout.getChildCount(); i++) {
((ImageView) gridLayout.getChildAt(i)).setImageResource(0);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}