Guest User

X - O

a guest
Jun 6th, 2012
912
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.95 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Tictactoe
  7. {
  8.     class Program
  9.     {
  10.         static void Main()
  11.         {
  12.             int[] lines = new int[8];
  13.             for (int i = 0; i < lines.GetLength(0); i++) lines[i] = 0;
  14.             bool myTore = true;
  15.             string[,] theGame = new string[3, 3];
  16.             for (int i = 0; i < theGame.GetLength(0); i++)
  17.             {
  18.                 for (int p = 0; p < theGame.GetLength(1); p++)
  19.                 {
  20.                     if (p == 0) theGame[i, p] = "| |";
  21.                     else theGame[i, p] = " |";
  22.                 }
  23.             }
  24.             showthegame(theGame);
  25.             while (GetTheEmptyColumns(theGame) > 0)
  26.             {
  27.                 System.ConsoleKeyInfo pKey = Console.ReadKey(true);
  28.                 for (int i = 1; i <= 9; i++)
  29.                 {
  30.                     if (pKey.Key.ToString() == "NumPad" + i && myTore)
  31.                     {
  32.                         int row = (i == 1 || i == 2 || i == 3) ? (2) : ((i == 4 || i == 5 || i == 6) ? (1) : (0));
  33.                         int column = (row == 0) ? (i - 7) : ((row == 1) ? (i - 4) : (i - 1));
  34.                         if ((theGame[row, column] == "| |" || theGame[row, column] == " |") && myTore)
  35.                         {
  36.                             theGame[row, column] = (column == 0) ? ("|X|") : ("X|");
  37.                             changeLines(lines, row, column);
  38.                             myTore = false;
  39.                             showthegame(theGame);
  40.                             if (getWinner(theGame) == 1) Console.WriteLine("the winner is USER!");
  41.                             else
  42.                             {
  43.                                 System.Threading.Thread.Sleep(2000);
  44.                                 PCchoose(theGame,lines);
  45.                                 myTore = true;
  46.                             }
  47.                         }
  48.                     }
  49.                 }
  50.             }
  51.         }
  52.         public static void showthegame(string[,] var)
  53.         {
  54.             Console.Clear();
  55.             for (int i = 0; i < var.GetLength(0); i++)
  56.             {
  57.                 for (int p = 0; p < var.GetLength(1); p++)
  58.                 {
  59.                     Console.Write(var[i, p]);
  60.                 }
  61.                 Console.WriteLine("");
  62.                 Console.WriteLine("");
  63.             }
  64.         }
  65.         public static int GetTheEmptyColumns(string[,] var)
  66.         {
  67.             int empty = 0;
  68.             for (int i = 0; i < var.GetLength(0); i++)
  69.             {
  70.                 for (int p = 0; p < var.GetLength(1); p++)
  71.                 {
  72.                     if (var[i, p] == "| |" || var[i, p] == " |") empty++;
  73.                 }
  74.             }
  75.             return empty;
  76.         }
  77.         public static int getWinner(string[,] var)
  78.         {
  79.             int winner = 0;
  80.             if ((var[0, 0] == "|X|" || var[0, 0] == "X|") && (var[1, 0] == "|X|" || var[1, 0] == "X|") && (var[2, 0] == "|X|" || var[2, 0] == "X|")) winner = 1;
  81.             else if ((var[0, 1] == "|X|" || var[0, 1] == "X|") && (var[1, 1] == "|X|" || var[1, 1] == "X|") && (var[2, 1] == "|X|" || var[2, 1] == "X|")) winner = 1;
  82.             else if ((var[0, 2] == "|X|" || var[0, 2] == "X|") && (var[1, 2] == "|X|" || var[1, 2] == "X|") && (var[2, 2] == "|X|" || var[2, 2] == "X|")) winner = 1;
  83.             else if ((var[0, 0] == "|X|" || var[0, 0] == "X|") && (var[0, 1] == "|X|" || var[0, 1] == "X|") && (var[0, 2] == "|X|" || var[0, 2] == "X|")) winner = 1;
  84.             else if ((var[1, 0] == "|X|" || var[1, 0] == "X|") && (var[1, 1] == "|X|" || var[1, 1] == "X|") && (var[1, 2] == "|X|" || var[1, 2] == "X|")) winner = 1;
  85.             else if ((var[2, 0] == "|X|" || var[2, 0] == "X|") && (var[2, 1] == "|X|" || var[2, 1] == "X|") && (var[2, 2] == "|X|" || var[2, 2] == "X|")) winner = 1;
  86.             else if ((var[0, 2] == "|X|" || var[0, 2] == "X|") && (var[1, 1] == "|X|" || var[1, 1] == "X|") && (var[2, 0] == "|X|" || var[2, 0] == "X|")) winner = 1;
  87.             else if ((var[0, 0] == "|X|" || var[0, 0] == "X|") && (var[1, 1] == "|X|" || var[1, 1] == "X|") && (var[2, 2] == "|X|" || var[2, 2] == "X|")) winner = 1;
  88.             else if ((var[0, 0] == "|O|" || var[0, 0] == "O|") && (var[1, 0] == "|O|" || var[1, 0] == "O|") && (var[2, 0] == "|O|" || var[2, 0] == "O|")) winner = 2;
  89.             else if ((var[0, 1] == "|O|" || var[0, 1] == "O|") && (var[1, 1] == "|O|" || var[1, 1] == "O|") && (var[2, 1] == "|O|" || var[2, 1] == "O|")) winner = 2;
  90.             else if ((var[0, 2] == "|O|" || var[0, 2] == "O|") && (var[1, 2] == "|O|" || var[1, 2] == "O|") && (var[2, 2] == "|O|" || var[2, 2] == "O|")) winner = 2;
  91.             else if ((var[0, 0] == "|O|" || var[0, 0] == "O|") && (var[0, 1] == "|O|" || var[0, 1] == "O|") && (var[0, 2] == "|O|" || var[0, 2] == "O|")) winner = 2;
  92.             else if ((var[1, 0] == "|O|" || var[1, 0] == "O|") && (var[1, 1] == "|O|" || var[1, 1] == "O|") && (var[1, 2] == "|O|" || var[1, 2] == "O|")) winner = 2;
  93.             else if ((var[2, 0] == "|O|" || var[2, 0] == "O|") && (var[2, 1] == "|O|" || var[2, 1] == "O|") && (var[2, 2] == "|O|" || var[2, 2] == "O|")) winner = 2;
  94.             else if ((var[0, 2] == "|O|" || var[0, 2] == "O|") && (var[1, 1] == "|O|" || var[1, 1] == "O|") && (var[2, 0] == "|O|" || var[2, 0] == "O|")) winner = 2;
  95.             else if ((var[0, 0] == "|O|" || var[0, 0] == "O|") && (var[1, 1] == "|O|" || var[1, 1] == "O|") && (var[2, 2] == "|O|" || var[2, 2] == "O|")) winner = 2;
  96.             return winner;
  97.         }
  98.         public static void PCchoose(string[,] var,int[] lines)
  99.         {
  100.             int column = 0;
  101.             int row = 0;
  102.             bool finded = false;
  103.             for (int i = 0; i < lines.GetLength(0); i++)
  104.             {
  105.                 if (lines[i] == -2 && !finded)
  106.                 {
  107.                     if (i == 0)
  108.                     {
  109.                         row = (var[0, 0] == "| |" || var[0, 0] == " |") ? (0) : ((var[1, 0] == "| |" || var[1, 0] == " |") ? (1) : (2));
  110.                         column = 0;
  111.                     }
  112.                     if (i == 1)
  113.                     {
  114.                         row = (var[0, 1] == "| |" || var[0, 1] == " |") ? (0) : ((var[1, 1] == "| |" || var[1, 1] == " |") ? (1) : (2));
  115.                         column = 1;
  116.                     }
  117.                     if (i == 2)
  118.                     {
  119.                         row = (var[0, 2] == "| |" || var[0, 2] == " |") ? (0) : ((var[1, 2] == "| |" || var[1, 2] == " |") ? (1) : (2));
  120.                         column = 2;
  121.                     }
  122.                     if (i == 3)
  123.                     {
  124.                         row = 0;
  125.                         column = (var[0, 0] == "| |" || var[0, 0] == " |") ? (0) : ((var[0, 1] == "| |" || var[0, 1] == " |") ? (1) : (2));
  126.                     }
  127.                     if (i == 4)
  128.                     {
  129.                         row = 1;
  130.                         column = (var[1, 0] == "| |" || var[1, 0] == " |") ? (0) : ((var[1, 1] == "| |" || var[1, 1] == " |") ? (1) : (2));
  131.                     }
  132.                     if (i == 5)
  133.                     {
  134.                         row = 2;
  135.                         column = (var[2, 0] == "| |" || var[2, 0] == " |") ? (0) : ((var[2, 1] == "| |" || var[2, 1] == " |") ? (1) : (2));
  136.                     }
  137.                     if (i == 6)
  138.                     {
  139.                         row = (var[0, 0] == "| |" || var[0, 0] == " |") ? (0) : ((var[1, 1] == "| |" || var[1, 1] == " |") ? (1) : (2));
  140.                         column = row;
  141.                     }
  142.                     if (i == 7)
  143.                     {
  144.                         row = (var[0, 2] == "| |" || var[0, 2] == " |") ? (0) : ((var[1, 1] == "| |" || var[1, 1] == " |") ? (1) : (2));
  145.                         column = (row == 0) ? (2) : ((row == 1) ? (1) : (2));
  146.                     }
  147.                     finded = true;
  148.                 }
  149.             }
  150.             if (!finded)
  151.             {
  152.                 for(int i = 0; i < lines.GetLength(0); i++)
  153.                 {
  154.                     if (lines[i] == 2 && !finded)
  155.                     {
  156.                         if (i == 0)
  157.                         {
  158.                             row = (var[0, 0] == "| |" || var[0, 0] == " |") ? (0) : ((var[1, 0] == "| |" || var[1, 0] == " |") ? (1) : (2));
  159.                             column = 0;
  160.                         }
  161.                         if (i == 1)
  162.                         {
  163.                             row = (var[0, 1] == "| |" || var[0, 1] == " |") ? (0) : ((var[1, 1] == "| |" || var[1, 1] == " |") ? (1) : (2));
  164.                             column = 1;
  165.                         }
  166.                         if (i == 2)
  167.                         {
  168.                             row = (var[0, 2] == "| |" || var[0, 2] == " |") ? (0) : ((var[1, 2] == "| |" || var[1, 2] == " |") ? (1) : (2));
  169.                             column = 2;
  170.                         }
  171.                         if (i == 3)
  172.                         {
  173.                             row = 0;
  174.                             column = (var[0, 0] == "| |" || var[0, 0] == " |") ? (0) : ((var[0, 1] == "| |" || var[0, 1] == " |") ? (1) : (2));
  175.                         }
  176.                         if (i == 4)
  177.                         {
  178.                             row = 1;
  179.                             column = (var[1, 0] == "| |" || var[1, 0] == " |") ? (0) : ((var[1, 1] == "| |" || var[1, 1] == " |") ? (1) : (2));
  180.                         }
  181.                         if (i == 5)
  182.                         {
  183.                             row = 2;
  184.                             column = (var[2, 0] == "| |" || var[2, 0] == " |") ? (0) : ((var[2, 1] == "| |" || var[2, 1] == " |") ? (1) : (2));
  185.                         }
  186.                         if (i == 6)
  187.                         {
  188.                             row = (var[0, 0] == "| |" || var[0, 0] == " |") ? (0) : ((var[1, 1] == "| |" || var[1, 1] == " |") ? (1) : (2));
  189.                             column = row;
  190.                         }
  191.                         if (i == 7)
  192.                         {
  193.                             row = (var[0, 2] == "| |" || var[0, 2] == " |") ? (0) : ((var[1, 1] == "| |" || var[1, 1] == " |") ? (1) : (2));
  194.                             column = (row == 0) ? (2) : ((row == 1) ? (1) : (2));
  195.                         }
  196.                         finded = true;
  197.                     }
  198.                 }
  199.                 if (!finded)
  200.                 {
  201.                     do
  202.                     {
  203.                         Random rand = new Random();
  204.                         column = rand.Next(0, 3);
  205.                         row = rand.Next(0, 3);
  206.                     }
  207.                     while (var[row, column] != "| |" && var[row, column] != " |");
  208.                 }
  209.             }
  210.             var[row, column] = (column == 0) ? ("|O|") : ("O|");
  211.             showthegame(var);
  212.             if (getWinner(var) == 2) Console.WriteLine("the PC is the winner!");
  213.             else PCchangeLines(lines, row, column);
  214.         }
  215.         public static void changeLines(int[] var, int row, int column)
  216.         {
  217.             if ((row == 0 && column == 0) || (row == 1 && column == 0) || (row == 2 && column == 0)) var[0]++;
  218.             if ((row == 0 && column == 1) || (row == 1 && column == 1) || (row == 2 && column == 1)) var[1]++;
  219.             if ((row == 0 && column == 2) || (row == 1 && column == 2) || (row == 2 && column == 2)) var[2]++;
  220.             if ((row == 0 && column == 0) || (row == 0 && column == 1) || (row == 0 && column == 2)) var[3]++;
  221.             if ((row == 1 && column == 0) || (row == 1 && column == 1) || (row == 1 && column == 2)) var[4]++;
  222.             if ((row == 2 && column == 0) || (row == 2 && column == 1) || (row == 2 && column == 2)) var[5]++;
  223.             if ((row == 0 && column == 0) || (row == 1 && column == 1) || (row == 2 && column == 2)) var[6]++;
  224.             if ((row == 0 && column == 2) || (row == 1 && column == 1) || (row == 2 && column == 0)) var[7]++;
  225.         }
  226.         public static void PCchangeLines(int[] var, int row, int column)
  227.         {
  228.             if ((row == 0 && column == 0) || (row == 1 && column == 0) || (row == 2 && column == 0)) var[0]--;
  229.             if ((row == 0 && column == 1) || (row == 1 && column == 1) || (row == 2 && column == 1)) var[1]--;
  230.             if ((row == 0 && column == 2) || (row == 1 && column == 2) || (row == 2 && column == 2)) var[2]--;
  231.             if ((row == 0 && column == 0) || (row == 0 && column == 1) || (row == 0 && column == 2)) var[3]--;
  232.             if ((row == 1 && column == 0) || (row == 1 && column == 1) || (row == 1 && column == 2)) var[4]--;
  233.             if ((row == 2 && column == 0) || (row == 2 && column == 1) || (row == 2 && column == 2)) var[5]--;
  234.             if ((row == 0 && column == 0) || (row == 1 && column == 1) || (row == 2 && column == 2)) var[6]--;
  235.             if ((row == 0 && column == 2) || (row == 1 && column == 1) || (row == 2 && column == 0)) var[7]--;
  236.         }
  237.     }
  238. }
Advertisement
Add Comment
Please, Sign In to add comment