Question Tic-tac toe game

FBIBARRY

New member
Joined
Nov 5, 2020
Messages
4
Programming Experience
Beginner
Hi all,
Can somebody explain to me how this code runs e.g. what does board mean? I am new to c# and am trying to understand this code so that I can appropriately annotate it.
Thanks





C#:
using System;
using System.Threading;

namespace TIC_TAC_TOE
{
    class Program
    {
        //making array and   
        //by default I am providing 0-9 where no use of zero 
        static char[] arr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        static int player = 1; //By default player 1 is set 
        static int choice; //This holds the choice at which position user want to mark   

        // The flag veriable checks who has won if it's value is 1 then some one has won the match if -1 then Match has Draw if 0 then match is still running 
        static int flag = 0;

        static void Main(string[] args)
        {
            do
            {
                Console.Clear();// whenever loop will be again start then screen will be clear 
                Console.WriteLine("Player1:X and Player2:O");
                Console.WriteLine("\n");
                if (player % 2 == 0)//checking the chance of the player 
                {
                    Console.WriteLine("Player 2 Chance");
                }
                else
                {
                    Console.WriteLine("Player 1 Chance");
                }
                Console.WriteLine("\n");
                Board();// calling the board Function 
                choice = int.Parse(Console.ReadLine());//Taking users choice   

                // checking that position where user want to run is marked (with X or O) or not 
                if (arr[choice] != 'X' && arr[choice] != 'O')
                {
                    if (player % 2 == 0) //if chance is of player 2 then mark O else mark X 
                    {
                        arr[choice] = 'O';
                        player++;
                    }
                    else
                    {
                        arr[choice] = 'X';
                        player++;
                    }
                }
                else //If there is any possition where user want to run and that is already marked then show message and load board again 
                {
                    Console.WriteLine("Sorry the row {0} is already marked with {1}", choice, arr[choice]);
                    Console.WriteLine("\n");
                    Console.WriteLine("Please wait 2 second board is loading again.....");
                    Thread.Sleep(2000);
                }
                flag = CheckWin();// calling of check win 
            } while (flag != 1 && flag != -1);// This loof will be run until all cell of the grid is not marked with X and O or some player is not win 

            Console.Clear();// clearing the console 
            Board();// getting filled board again 

            if (flag == 1)// if flag value is 1 then some one has win or means who played marked last time which has win 
            {
                Console.WriteLine("Player {0} has won", (player % 2) + 1);
            }
            else// if flag value is -1 the match will be draw and no one is winner 
            {
                Console.WriteLine("Draw");
            }
            Console.ReadLine();
        }
        // Board method which creats board 
        private static void Board()
        {
            Console.WriteLine("     |     |      ");
            Console.WriteLine("  {0}  |  {1}  |  {2}", arr[1], arr[2], arr[3]);
            Console.WriteLine("_____|_____|_____ ");
            Console.WriteLine("     |     |      ");
            Console.WriteLine("  {0}  |  {1}  |  {2}", arr[4], arr[5], arr[6]);
            Console.WriteLine("_____|_____|_____ ");
            Console.WriteLine("     |     |      ");
            Console.WriteLine("  {0}  |  {1}  |  {2}", arr[7], arr[8], arr[9]);
            Console.WriteLine("     |     |      ");
        }

        //Checking that any player has won or not 
        private static int CheckWin()
        {
            #region Horzontal Winning Condtion
            //Winning Condition For First Row   
            if (arr[1] == arr[2] && arr[2] == arr[3])
            {
                return 1;
            }
            //Winning Condition For Second Row   
            else if (arr[4] == arr[5] && arr[5] == arr[6])
            {
                return 1;
            }
            //Winning Condition For Third Row   
            else if (arr[6] == arr[7] && arr[7] == arr[8])
            {
                return 1;
            }
            #endregion

            #region vertical Winning Condtion
            //Winning Condition For First Column       
            else if (arr[1] == arr[4] && arr[4] == arr[7])
            {
                return 1;
            }
            //Winning Condition For Second Column 
            else if (arr[2] == arr[5] && arr[5] == arr[8])
            {
                return 1;
            }
            //Winning Condition For Third Column 
            else if (arr[3] == arr[6] && arr[6] == arr[9])
            {
                return 1;
            }
            #endregion

            #region Diagonal Winning Condition
            else if (arr[1] == arr[5] && arr[5] == arr[9])
            {
                return 1;
            }
            else if (arr[3] == arr[5] && arr[5] == arr[7])
            {
                return 1;
            }
            #endregion

            #region Checking For Draw
            // If all the cells or values filled with X or O then any player has won the match 
            else if (arr[1] != '1' && arr[2] != '2' && arr[3] != '3' && arr[4] != '4' && arr[5] != '5' && arr[6] != '6' && arr[7] != '7' && arr[8] != '8' && arr[9] != '9')
            {
                return -1;
            }
            #endregion

            else
            {
                return 0;
            }
        }
    }
}
 
Based on what you have posted, you have made little to no effort to help yourself and are just expecting us to do it all for you. Have you considered the logic of playing a game manually and how the code corresponds to that? Have you set a breakpoint at the top of the code and stepped through it line by line to see what course it takes and what data gets used? What parts do you understand and what specific parts do you not? You should be able to ask us questions that are much more specific than "here's a big chunk of code, explain everything to me".

As for the question about "board", that's also rather vague. Are you talking about in the code specifically or in general? I'm not sure whether English is your first language or not but have you not heard the expression "board games"? Board games are games that are played on a board. When you open a Monopoly box, for instance, you find a board, i.e. the cardboard playing surface, and the players' pieces that you will move around that board. Any reference to "board" in the code for a board game is obviously for the digital equivalent of that physical playing surface. If you're asking about the physical game part then that's not a programming question. If you're asking about how it's used in the code then that suggests that you haven't really taken the time to learn the basics.
 
Based on what you have posted, you have made little to no effort to help yourself and are just expecting us to do it all for you. Have you considered the logic of playing a game manually and how the code corresponds to that? Have you set a breakpoint at the top of the code and stepped through it line by line to see what course it takes and what data gets used? What parts do you understand and what specific parts do you not? You should be able to ask us questions that are much more specific than "here's a big chunk of code, explain everything to me".

As for the question about "board", that's also rather vague. Are you talking about in the code specifically or in general? I'm not sure whether English is your first language or not but have you not heard the expression "board games"? Board games are games that are played on a board. When you open a Monopoly box, for instance, you find a board, i.e. the cardboard playing surface, and the players' pieces that you will move around that board. Any reference to "board" in the code for a board game is obviously for the digital equivalent of that physical playing surface. If you're asking about the physical game part then that's not a programming question. If you're asking about how it's used in the code then that suggests that you haven't really taken the time to learn the basics.
Hi thanks for replying. Yes you're right in that I haven't tried to help myself. I have been on yt and have gone through videos on the code and now understand it a lot better. Thank you for your help !
 
I agree with everything @jmcilhinney said. Also, youtube is a terrible way to learn how to code as well as how to programme and that modus operandi should be avoided. If I had a penny for every youtube video I've corrected over the years, I'd be rich today. :)
 
Back
Top Bottom