using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static bool GvolOk(int r, int c)
{
return r < 3 && c < 3;
}
static void Print(char[,] m)
{
Console.WriteLine(" 0 1 2 ");
for (int i = 0; i < m.GetLength(0); i++)
{
Console.WriteLine();
Console.Write(i);
for (int k = 0; k < m.GetLength(1); k++)
{
Console.ForegroundColor = ConsoleColor.White;
if (k != m.GetLength(1) - 1)
Console.Write(" " + m[i, k] + " |");
else
Console.Write(" " + m[i, k] + " ");
}
Console.WriteLine();
Console.WriteLine(" -------|--------|--------");
Console.WriteLine();
}
Console.ResetColor();
}
static bool Full(char[,] m)
{
for (int i = 0; i < m.GetLength(0); i++)
{
for (int k = 0; k < m.GetLength(1); k++)
{
if (!(m[i, k] == 'X' || m[i, k] == 'O'))
return false;
}
}
return true;
}
static bool Amodot(char[,] m)
{
if (m[0, 0] == m[1, 0] && m[0, 0] == m[2, 0] && m[0, 0] != ' ')
return true;
if (m[0, 1] == m[1, 1] && m[0, 1] == m[2, 1] && m[0, 1] != ' ')
return true;
if (m[0, 2] == m[1, 2] && m[0, 2] == m[2, 2] && m[0, 2] != ' ')
return true;
return false;
}
static bool Shorot(char[,] m)
{
if (m[0, 0] == m[0, 1] && m[0, 0] == m[0, 2] && m[0, 0] != ' ')
return true;
if (m[1, 0] == m[1, 1] && m[1, 0] == m[1, 2] && m[1, 0] != ' ')
return true;
if (m[2, 0] == m[2, 1] && m[2, 0] == m[2, 2] && m[2, 0] != ' ')
return true;
return false;
}
static bool Alahson1(char[,] m)
{
if (m[0, 0] == m[1, 1] && m[0, 0] == m[2, 2] && m[0, 0] != ' ')
return true;
return false;
}
static bool Alahson2(char[,] m)
{
if (m[0, 2] == m[1, 1] && m[0, 2] == m[2, 0] && m[0, 2] != ' ')
return true;
return false;
}
static bool Win(char[,] m)
{
return Amodot(m) || Shorot(m) || Alahson1(m) || Alahson2(m);
}
static bool Tafos(char[,] m, int a, int b)
{
return m[a, b] == ' ';
}
static void Player1(char[,] m, string str)
{
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("- " + str + "'s turn (X) -");
Console.Write("Enter Row: ");
int r = int.Parse(Console.ReadLine());
Console.Write("Enter Colom: ");
int c = int.Parse(Console.ReadLine());
while (!GvolOk(r, c))
{
Console.Write("Enter Row: ");
r = int.Parse(Console.ReadLine());
Console.Write("Enter Colom: ");
c = int.Parse(Console.ReadLine());
}
while (!Tafos(m, r, c))
{
Console.Write("Enter Row: ");
r = int.Parse(Console.ReadLine());
Console.Write("Enter Colom: ");
c = int.Parse(Console.ReadLine());
}
m[r, c] = 'X';
}
static void Player2(char[,] m, string str)
{
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("- " + str + "'s turn (O) -");
Console.Write("Enter Row: ");
int r = int.Parse(Console.ReadLine());
Console.Write("Enter Colom: ");
int c = int.Parse(Console.ReadLine());
while (!GvolOk(r, c))
{
Console.Write("Enter Row: ");
r = int.Parse(Console.ReadLine());
Console.Write("Enter Colom: ");
c = int.Parse(Console.ReadLine());
}
while (!Tafos(m, r, c))
{
Console.Write("Enter Row: ");
r = int.Parse(Console.ReadLine());
Console.Write("Enter Colom: ");
c = int.Parse(Console.ReadLine());
}
m[r, c] = 'O';
}
static void LoadingGame(char[,] m)
{
System.Threading.Thread.Sleep(250);
for (int i = 0; i <= 10; i++)
{
Console.Write("Loading Game...../ ");
System.Threading.Thread.Sleep(50);
Console.Clear();
Console.Write("Loading Game.....- ");
System.Threading.Thread.Sleep(50);
Console.Clear();
Console.Write("Loading Game.....\\ ");
System.Threading.Thread.Sleep(50);
Console.Clear();
Console.Write("Loading Game.....| ");
System.Threading.Thread.Sleep(50);
Console.Clear();
}
}
static void Initalizing(char[,] m)
{
System.Threading.Thread.Sleep(250);
for (int i = 0; i <= 10; i++)
{
Console.Write("Initalizing Data...../ ");
System.Threading.Thread.Sleep(50);
Console.Clear();
Console.Write("Initalizing Data.....-");
System.Threading.Thread.Sleep(50);
Console.Clear();
Console.Write("Initalizing Data.....\\ ");
System.Threading.Thread.Sleep(50);
Console.Clear();
Console.Write("Initalizing Data.....| ");
System.Threading.Thread.Sleep(50);
Console.Clear();
}
}
static void IposXO(char[,] m)
{
for (int i = 0; i < m.GetLength(0); i++)
for (int k = 0; k < m.GetLength(1); k++)
m[i, k] = ' ';
}
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.White;
char[,] xo = new char[3, 3];
IposXO(xo);
bool player = true;
LoadingGame(xo);
Console.Write("Player #1 Enter your name: ");
string name1 = Console.ReadLine();
Console.Write("Player #2 Enter your name: ");
string name2 = Console.ReadLine();
string answer;
bool again = true;
bool x1 = Full(xo);
bool x2 = Win(xo);
Initalizing(xo);
while (!x1 && !x2 && again)
{
Print(xo);
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine();
Console.WriteLine("*********************************");
Console.WriteLine();
player = !player;
if (!player)
Player1(xo, name1);
else
Player2(xo, name2);
if (Win(xo) && !player)
{
Console.Clear();
Print(xo);
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("GAME OVER! " + name1 + " won the game.");
Console.WriteLine("want to play again? yes/no");
answer = Console.ReadLine();
if (answer == "no" || answer == "NO")
again = false;
else
if (answer == "yes" || answer == "YES")
{
IposXO(xo);
x1 = false;
x2 = false;
player = true;
Console.Clear();
LoadingGame(xo);
Console.Write("Player #1 Enter your name: ");
name1 = Console.ReadLine();
Console.Write("Player #2 Enter your name: ");
name2 = Console.ReadLine();
Initalizing(xo);
}
else
{
Console.Clear();
Console.ReadKey();
}
}
else
if (Win(xo) && player)
{
Console.Clear();
Print(xo);
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("GAME OVER! " + name2 + " won the game.");
Console.WriteLine("want to play again? yes/no");
answer = Console.ReadLine();
if (answer == "no" || answer == "NO")
again = false;
else
if (answer == "yes" || answer == "YES")
{
IposXO(xo);
x1 = false;
x2 = false;
player = true;
LoadingGame(xo);
Console.Write("Player #1 Enter your name: ");
name1 = Console.ReadLine();
Console.Write("Player #2 Enter your name: ");
name2 = Console.ReadLine();
Initalizing(xo);
}
else
{
Console.Clear();
Console.ReadKey();
}
}
else
if (Full(xo))
{
Console.Clear();
Print(xo);
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("GAME OVER! nobody won the game");
Console.WriteLine("want to play again? yes/no");
answer = Console.ReadLine();
if (answer == "no" || answer == "NO")
again = false;
else
if (answer == "yes" || answer == "YES")
{
IposXO(xo);
x1 = false;
x2 = false;
player = true;
LoadingGame(xo);
Console.Write("Player #1 Enter your name: ");
name1 = Console.ReadLine();
Console.Write("Player #2 Enter your name: ");
name2 = Console.ReadLine();
Initalizing(xo);
}
else
{
Console.Clear();
Console.Read();
}
}
Console.Clear();
}
}
}
}