Professional Documents
Culture Documents
ASSIGNMENT REPORT
ON
“Tic-Tac-Toe”
Submitted in the partial fulfillment of the requirements for the award of the degree of
BACHELOR OF ENGINEERING
IN
COMPUTER SCIENCE AND ENGINEERING
For the Academic Year 2019-2020
Submitted by
SIDDHANT SINGH 1JS17CS100
SHUBHAM SAHU 1JS17CS099
YASH GUPTA 1JS17CS122
2019-2020
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
JSS ACADEMY OF TECHNICAL EDUCATION
ABSTRACT
1. INTRODUCTION
2. SYSTEM ANALYSIS
EXISTING SYSTEM
PROPOSED SYSTEM
3. SYSTEM DESIGN
4. IMPLEMENTATION
5. SCREENSHOTS
6. CONCLUSION
ABSTRACT
Overview
1. This report discusses the main components and the ways used to play tic tac toe game
2. This application is built on java platform using Android Studio.
Objective
Our project name is Tic-tac-Toe game. This game is very popular and is
fairly simple by itself. It is actually a two player game. In this game, there is
a board with n x n squares. In our game, it is 3 x 3 squares.
SYSTEM ANALYSIS
Tic-Tac-Toe (or Noughts and crosses, Xs and Os) is a pencil-and-paper game for two
players, O and X, who take turns marking the spaces in a 3 x 3 grid. The player who
succeeds in placing three respective marks in a horizontal, vertical or diagonal row wins
the game.
The computer implementation of the game TicTac-Toe has many features as compared to the
traditional way of playing it with paper and pencil. The various features are:
The game has been made user friendly with proper use of android system.
The user can play as many games without any interruption
The user can choose any symbol he/she wants to
The game has been made as a thorough expert system
The player can win the game, draw the game or will loose the game.
SYSTEM DESIGN
Classes used:
Note: here, classes are mentioned as activities since they are associated with xml pages
for designing.
UI Designing:
XML which is extended markup language which comes built in with android studio has
been used for designing everything in this app.
IMPLEMENTATION
The implementation of TIC-TAC-TOE project includes various java
and xml file, Source codes of which are given:
SOURCE CODE:
Content_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text_view_p1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:freezesText="true"
android:text="Player 1: 0"
android:textSize="30sp" />
<TextView
android:id="@+id/text_view_p2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/text_view_p1"
android:freezesText="true"
android:text="Player 2: 0"
android:textSize="30sp" />
<Button
android:id="@+id/button_reset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginEnd="30dp"
android:layout_marginRight="30dp"
android:text="reset" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/button_00"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:freezesText="true"
android:onClick="onClick"
android:textSize="60sp" />
<Button
android:id="@+id/button_01"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:freezesText="true"
android:onClick="onClick"
android:textSize="60sp" />
<Button
android:id="@+id/button_02"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:freezesText="true"
android:onClick="onClick"
android:textSize="60sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/button_10"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:freezesText="true"
android:onClick="onClick"
android:textSize="60sp" />
<Button
android:id="@+id/button_11"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:freezesText="true"
android:onClick="onClick"
android:textSize="60sp" />
<Button
android:id="@+id/button_12"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:freezesText="true"
android:onClick="onClick"
android:textSize="60sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/button_20"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:freezesText="true"
android:onClick="onClick"
android:textSize="60sp" />
<Button
android:id="@+id/button_21"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:freezesText="true"
android:onClick="onClick"
android:textSize="60sp" />
<Button
android:id="@+id/button_22"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:freezesText="true"
android:onClick="onClick"
android:textSize="60sp" />
</LinearLayout></LinearLayout>
MainActivity.java:
package com.example.tictaktoe;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewPlayer1 = findViewById(R.id.text_view_p1);
textViewPlayer2 = findViewById(R.id.text_view_p2);
@Override
public void onClick(View v) {
if (!((Button) v).getText().toString().equals("")) {
return;
}
if (player1Turn) {
((Button) v).setText("X");
} else {
((Button) v).setText("O");
}
roundCount++;
if (checkForWin()) {
if (player1Turn) {
player1Wins();
} else {
player2Wins();
}
} else if (roundCount == 9) {
draw();
} else {
player1Turn = !player1Turn;
}
if (field[0][0].equals(field[1][1])
&& field[0][0].equals(field[2][2])
&& !field[0][0].equals("")) {
return true;
}
if (field[0][2].equals(field[1][1])
&& field[0][2].equals(field[2][0])
&& !field[0][2].equals("")) {
return true;
}
return false;
}
roundCount = 0;
player1Turn = true;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("roundCount", roundCount);
outState.putInt("player1Points", player1Points);
outState.putInt("player2Points", player2Points);
outState.putBoolean("player1Turn", player1Turn);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
roundCount = savedInstanceState.getInt("roundCount");
player1Points = savedInstanceState.getInt("player1Points");
player2Points = savedInstanceState.getInt("player2Points");
player1Turn = savedInstanceState.getBoolean("player1Turn");
}
}
SCREENSHOTS:
CONCLUSION
The 'Tie Tac Toe game is most familiar among all the age groups. Intelligence can be a
proper or Any purpose-driven decision maker. This basic idea has been suggested many
times. An algorithm of playing Tie 1ac Toe has been presented and tested that works in
efficient way. Overall the system works without any bugs