Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace TicTacToe
- {
- class Program
- {
- static void Main(string[] args)
- {
- bool validSelection = false;
- char userType = '.';
- bool userIsX = true;
- int scoreX = 0;
- int scoreO = 0;
- int ties = 0;
- int gameNum = 1;
- char[,] board = new char[3, 3]; //הגדרת מערך לוח
- while (true)
- {
- SetBoard(board); //קריאה לפונקציית אתחול לוח
- if (gameNum == 1)
- {
- UpdateResult(board, isWinner(board, userType), userType, isTie(board), ref scoreX, ref scoreO, ref gameNum, ref ties); // מעדכן תוצאה
- Console.WriteLine("\n GAME " + gameNum + ":\n Player X: " + scoreX + " | Player O: " + scoreO + " | Ties: " + ties + "\n"); //מעדכן תוצאה
- Console.WriteLine(" BOARD");
- PrintBoard(board); //קריאה לפונקציה מדפיסת לוח
- Console.WriteLine("\n\n Welcome to Tic Tac Toe v0.7!\n\nThe rules are simple: Two players decide which is X and which is O, please note that X always goes first. In order to win, one must have three in a row, \nhorizontally, vertically or diagonally. If all nine spots are filled, then it \nis a tie, and you will be given the opportunity to play again. Let's begin!"); //הסברת המשחק
- }
- else
- {
- Console.WriteLine(" BOARD");
- PrintBoard(board); //קריאה לפונקציה מדפיסת לוח
- }
- while (!isWinner(board, userType) && !isTie(board))
- {
- Console.WriteLine();
- if (userIsX) //מגדיר שחקן X
- {
- Console.BackgroundColor = ConsoleColor.White;
- Console.ForegroundColor = ConsoleColor.Blue;
- Console.WriteLine("Player: X");
- userType = 'X';
- }
- else //מגדיר שחקן O
- {
- Console.BackgroundColor = ConsoleColor.Blue;
- Console.ForegroundColor = ConsoleColor.White;
- Console.WriteLine("Player: O");
- userType = 'O';
- }
- validSelection = false;
- while (!validSelection) //כל עוד לא התבצעה בחירה חוקית
- {
- Console.WriteLine("Select row, then press 'enter' (return), then select column."); //הסבר על בחירת מיקום
- int row = int.Parse(Console.ReadLine()); //משתמש בוחר מיקום
- int column = int.Parse(Console.ReadLine());
- if (row > 3 || row < 1 || column > 3 || column < 1) //בודק שהמספר בטווח
- {
- Console.WriteLine("Invalid row/column! There are only 3 rows and 3 columns on the board!\nPlease choose again.\n");
- }
- else if (board[column - 1, row - 1] == 'X' || board[column - 1, row - 1] == 'O') //בודק אם הבחירה חוקית
- {
- Console.WriteLine("You cannot overwrite you/your friend! Please choose again.");
- }
- else //מתקיים אם הבחירה תקינה
- {
- board[column - 1, row - 1] = userType;
- validSelection = true;
- }
- }
- userIsX = !userIsX;
- Console.BackgroundColor = ConsoleColor.Black;
- Console.ForegroundColor = ConsoleColor.Gray;
- PrintBoard(board);
- if (isWinner(board, userType)) //בודק אם הפונקציה שבודקת אם יש מנצח מחזירה true או false
- {
- Console.WriteLine("Congratulations! The winner is " + userType + "\n");
- }
- if (isTie(board)) //קריאה לפונקציה בודקת תיקו
- {
- Console.WriteLine("What a though game! The game resulted in a TIE!\n");
- }
- }
- Console.WriteLine("Would you like to play again?\nPress 'enter' to play again, type 'n' then enter to quit."); //מאפשר יציאה מהתוכנית
- string restart = Console.ReadLine();
- if (restart == "n" || restart == "N")
- {
- break;
- }
- UpdateResult(board, isWinner(board, userType), userType, isTie(board), ref scoreX, ref scoreO, ref gameNum, ref ties); //מעדכן תוצאה
- Console.WriteLine("\n GAME " + gameNum + ":\n Player X: " + scoreX + " | Player O: " + scoreO + " | Ties: " + ties + "\n"); //מדפיס תוצאה
- }
- }
- static void SetBoard(char[,] board) //מאתחל לוח
- {
- string strBoard;
- int intBoard;
- for (int i = 0; i < board.GetLength(0); i++)
- {
- for (int z = 0; z < board.GetLength(1); z++)
- {
- intBoard = z + 1;
- strBoard = Convert.ToString(intBoard);
- board[z, i] = Convert.ToChar(strBoard);
- //Console.WriteLine(board[z, i]); בדיקת איתחול
- }
- }
- }
- static void PrintBoard(char[,] board)//מדפיס לוח
- {
- for (int i = 0; i < board.GetLength(0); i++)
- {
- Console.Write("\n ");
- for (int k = 0; k < board.GetLength(1); k++)
- {
- Console.Write("{0} ", board[k, i]);
- }
- }
- Console.WriteLine();
- }
- static bool isWinner(char[,] board, char userType) //בודק אם יש מנצח
- {
- if (board[0, 0] == userType && board[1, 0] == userType && board[2, 0] == userType)
- {
- return true;
- }
- else if (board[0, 1] == userType && board[1, 1] == userType && board[2, 1] == userType)
- {
- return true;
- }
- else if (board[0, 2] == userType && board[1, 2] == userType && board[2, 2] == userType)
- {
- return true;
- }
- else if (board[0, 0] == userType && board[1, 1] == userType && board[2, 2] == userType)
- {
- return true;
- }
- else if (board[0, 2] == userType && board[1, 1] == userType && board[2, 0] == userType)
- {
- return true;
- }
- else if (board[0, 0] == userType && board[0, 1] == userType && board[0, 2] == userType)
- {
- return true;
- }
- else if (board[1, 0] == userType && board[1, 1] == userType && board[1, 2] == userType)
- {
- return true;
- }
- else if (board[2, 0] == userType && board[2, 1] == userType && board[2, 2] == userType)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- static bool isTie(char[,] board) //בודק אם המשחק הגיע למצב של תיקו
- {
- foreach (char currentChar in board)
- {
- if (currentChar != 'X' && currentChar != 'O')
- {
- return false;
- }
- }
- return true;
- }
- static void UpdateResult(char[,] board, bool isWinner, char userType, bool isTie, ref int scoreX, ref int scoreO, ref int gameNum, ref int ties) //מעדכן תוצאה
- {
- if (isWinner)
- {
- if (userType == 'X')
- {
- scoreX++;
- }
- if (userType == 'O')
- {
- scoreO++;
- }
- gameNum++;
- }
- if (isTie)
- {
- ties++;
- gameNum++;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement