Creating basic tic tac toe android app using java
Marvel Tic Tac Toe Android Game ( Java )
In this blog I we will create basic android app. We will be coding in java.
package com.example.batvsiron;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
int active = 0;
public int[][] winningPosition= {
{0,1,2},
{3,4,5},
{6,7,8},
{0,3,6},
{1,4,7},
{2,5,8},
{0,4,8},
{2,4,6}
};
public int[] moves = {111,111,111,111,111,111,111,111,111};
public int checkWinning() {
for(int[] arr : winningPosition) {
int sum = moves[arr[0]]+moves[arr[1]]+moves[arr[2]];
if(sum == 0 || sum == 3) {
return sum;
// if sum == 0 first player wins
// if sum == 3 second player wins
}
}
return -1;
}
public void playAgainClick(View v) {
// Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
Button playAgain = (Button) findViewById(R.id.playAgain);
TextView winnerDisplay = (TextView) findViewById(R.id.winnerDisplay);
playAgain.setVisibility(View.INVISIBLE);
winnerDisplay.setVisibility(View.INVISIBLE);
androidx.gridlayout.widget.GridLayout gridLayout = findViewById(R.id.myGrid);
for(int i=0;i<gridLayout.getChildCount();i++) {
ImageView img = (ImageView) gridLayout.getChildAt(i);
// img.setImageDrawable(null);
img.animate().alpha(0).setDuration(800);
}
Arrays.fill(moves,111);
}
public boolean noMoves() {
for(int i=0;i<moves.length;i++)
{
if(moves[i] == 111) return false;
}
return true;
}
public void userClick(View view) {
int winner = checkWinning();
ImageView iv = (ImageView) view;
int tagId = Integer.parseInt(iv.getTag().toString());
if(winner == -1 && moves[tagId] == 111) {
moves[tagId] = active;
if (active == 0) {
iv.setImageResource(R.drawable.captainamerica);
active = 1;
Log.d("Clicked", "userClick: " + tagId+"\t");
} else {
active = 0;
iv.setImageResource(R.drawable.ironman);
}
iv.animate().alpha(1).setDuration(300);
}
winner = checkWinning();
if(winner != -1 || noMoves()) {
Button playAgain = (Button) findViewById(R.id.playAgain);
TextView winnerDisplay = (TextView) findViewById(R.id.winnerDisplay);
playAgain.setVisibility(View.VISIBLE);
winnerDisplay.setVisibility(View.VISIBLE);
String playerWon = (winner == 0) ? "Victory Of Captain America" :(noMoves())?"Game Draw": " Victory Of Iron Man";
if(!noMoves())
Toast.makeText(this, "Winner is " + playerWon, Toast.LENGTH_SHORT).show();
winnerDisplay.setText( playerWon);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:srcCompat="@drawable/background" />
<androidx.gridlayout.widget.GridLayout
android:id="@+id/myGrid"
android:layout_width="380dp"
android:layout_height="380dp"
android:background="@drawable/backy"
app:layout_constraintBottom_toBottomOf="@+id/imageView3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/Id11"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:alpha="0"
android:onClick="userClick"
android:tag="0"
app:layout_column="0"
app:layout_row="0"
app:srcCompat="@drawable/captainamerica" />
<ImageView
android:id="@+id/Id12"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginStart="30dp"
android:layout_marginTop="15dp"
android:alpha="0"
android:onClick="userClick"
android:tag="1"
app:layout_column="1"
app:layout_row="0"
app:srcCompat="@drawable/captainamerica" />
<ImageView
android:id="@+id/Id13"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="15dp"
android:layout_marginRight="9dp"
android:alpha="0"
android:onClick="userClick"
android:tag="2"
app:layout_column="3"
app:layout_row="0"
app:srcCompat="@drawable/captainamerica" />
<!-- -->
<ImageView
android:id="@+id/Id21"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginStart="15dp"
android:layout_marginTop="25dp"
android:alpha="0"
android:onClick="userClick"
android:tag="3"
app:layout_column="0"
app:layout_row="1"
app:srcCompat="@drawable/captainamerica" />
<ImageView
android:id="@+id/Id22"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginStart="30dp"
android:layout_marginTop="25dp"
android:alpha="0"
android:onClick="userClick"
android:tag="4"
app:layout_column="1"
app:layout_row="1"
app:srcCompat="@drawable/captainamerica" />
<ImageView
android:id="@+id/Id23"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="25dp"
android:layout_marginRight="9dp"
android:alpha="0"
android:onClick="userClick"
android:tag="5"
app:layout_column="3"
app:layout_row="1"
app:srcCompat="@drawable/captainamerica" />
<!-- -->
<ImageView
android:id="@+id/Id31"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginStart="15dp"
android:layout_marginTop="25dp"
android:alpha="0"
android:onClick="userClick"
android:tag="6"
app:layout_column="0"
app:layout_row="2"
app:srcCompat="@drawable/captainamerica" />
<ImageView
android:id="@+id/Id32"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginStart="30dp"
android:layout_marginTop="25dp"
android:alpha="0"
android:onClick="userClick"
android:tag="7"
app:layout_column="1"
app:layout_row="2"
app:srcCompat="@drawable/captainamerica" />
<ImageView
android:id="@+id/Id33"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="25dp"
android:layout_marginRight="9dp"
android:alpha="0"
android:onClick="userClick"
android:tag="8"
app:layout_column="3"
app:layout_row="2"
app:srcCompat="@drawable/captainamerica" />
</androidx.gridlayout.widget.GridLayout>
<Button
android:id="@+id/playAgain"
android:layout_width="127dp"
android:layout_height="54dp"
android:layout_marginBottom="36dp"
android:background="#FDD835"
android:onClick="playAgainClick"
android:text="Play Again"
android:visibility="invisible"
app:layout_constraintBottom_toTopOf="@+id/myGrid"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.538"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="invisible" />
<TextView
android:id="@+id/winnerDisplay"
android:layout_width="167dp"
android:layout_height="39dp"
android:gravity="center"
android:textColor="#F3F0E0"
android:textSize="14sp"
android:visibility="invisible"
app:layout_constraintBottom_toTopOf="@+id/playAgain"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.535"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/imageView3"
app:layout_constraintVertical_bias="0.695"
tools:visibility="invisible" />
</androidx.constraintlayout.widget.ConstraintLayout>

