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 KolkoIKrzyzyk
- {
- class Program
- {
- static bool loop(string[,] fields)
- {
- Console.WriteLine($" + - - - - - +\n");
- Console.WriteLine($" | {getFillerForLoop(fields[0, 0])} | {getFillerForLoop(fields[1, 0])} | {getFillerForLoop(fields[2, 0])} |\n");
- Console.WriteLine($" | {getFillerForLoop(fields[0, 1])} | {getFillerForLoop(fields[1, 1])} | {getFillerForLoop(fields[2, 1])} |\n");
- Console.WriteLine($" | {getFillerForLoop(fields[0, 2])} | {getFillerForLoop(fields[1, 2])} | {getFillerForLoop(fields[2, 2])} |\n");
- Console.WriteLine($" + - - - - - +\n");
- if (someoneWon(fields))
- {
- return false;
- }
- return true;
- }
- static string getFillerForLoop(string field)
- {
- if(field != null)
- {
- return field;
- }
- else
- {
- return "_";
- }
- }
- static bool someoneWon(string[,] fields)
- {
- if((fields[0, 0] == "o" && fields[0, 1] == "o" && fields[0, 2] == "o") ||
- (fields[1, 0] == "o" && fields[1, 1] == "o" && fields[1, 2] == "o") ||
- (fields[2, 0] == "o" && fields[2, 1] == "o" && fields[2, 2] == "o") ||
- //pionowe warunki o
- (fields[0, 0] == "o" && fields[1, 1] == "o" && fields[2, 2] == "o") ||
- (fields[2, 0] == "o" && fields[1, 1] == "o" && fields[0, 2] == "o") ||
- //ukosy o
- (fields[0, 0] == "o" && fields[1, 0] == "o" && fields[2, 0] == "o") ||
- (fields[0, 1] == "o" && fields[1, 1] == "o" && fields[2, 1] == "o") ||
- (fields[0, 2] == "o" && fields[1, 2] == "o" && fields[2, 2] == "o") ||
- //poziome o
- (fields[0, 0] == "x" && fields[0, 1] == "x" && fields[0, 2] == "x") ||
- (fields[1, 0] == "x" && fields[1, 1] == "x" && fields[1, 2] == "x") ||
- (fields[2, 0] == "x" && fields[2, 1] == "x" && fields[2, 2] == "x") ||
- //pionowe warunki x
- (fields[0, 0] == "x" && fields[1, 1] == "x" && fields[2, 2] == "x") ||
- (fields[2, 0] == "x" && fields[1, 1] == "x" && fields[0, 2] == "x") ||
- //ukosy x
- (fields[0, 0] == "x" && fields[1, 0] == "x" && fields[2, 0] == "x") ||
- (fields[0, 1] == "x" && fields[1, 1] == "x" && fields[2, 1] == "x") ||
- (fields[0, 2] == "x" && fields[1, 2] == "x" && fields[2, 2] == "x"))
- {
- return true;
- }
- return false;
- }
- /// <summary>
- /// Metoda określenia położenia x o przyjmujac tablice aktualnych polozen
- /// </summary>
- /// <param name="fieldName"></param>
- /// <param name="playerNumber"></param>
- /// <param name="fields"></param>
- /// <returns>Zwraca tuple polozenie wzgledem aktualnej tablicy</returns>
- static int getXO(string fieldName, int playerNumber, string[,] fields)
- {
- switch (fieldName.ToLowerInvariant())
- {
- case "a1":
- if (!verifyEmptyField(fields[0, 0]))
- {
- Console.WriteLine("Wybraleś już używane pole, lub pole poza zakresem, wybierz jeszcze raz");
- return 0;
- }
- fields[0,0] = playerNumber == 1 ? "x" : "o";
- return 1;
- case "a2":
- if (!verifyEmptyField(fields[1, 0]))
- {
- Console.WriteLine("Wybraleś już używane pole, lub pole poza zakresem, wybierz jeszcze raz");
- return 0;
- }
- fields[1, 0] = playerNumber == 1 ? "x" : "o";
- return 1;
- case "a3":
- if (!verifyEmptyField(fields[2, 0]))
- {
- Console.WriteLine("Wybraleś już używane pole, lub pole poza zakresem, wybierz jeszcze raz");
- return 0;
- }
- fields[2, 0] = playerNumber == 1 ? "x" : "o";
- return 1;
- case "b1":
- if (!verifyEmptyField(fields[0, 1]))
- {
- Console.WriteLine("Wybraleś już używane pole, lub pole poza zakresem, wybierz jeszcze raz");
- return 0;
- }
- fields[0, 1] = playerNumber == 1 ? "x" : "o";
- return 1;
- case "b2":
- if (!verifyEmptyField(fields[1, 1]))
- {
- Console.WriteLine("Wybraleś już używane pole, lub pole poza zakresem, wybierz jeszcze raz");
- return 0;
- }
- fields[1, 1] = playerNumber == 1 ? "x" : "o";
- return 1;
- case "b3":
- if (!verifyEmptyField(fields[2, 1]))
- {
- Console.WriteLine("Wybraleś już używane pole, lub pole poza zakresem, wybierz jeszcze raz");
- return 0;
- }
- fields[2, 1] = playerNumber == 1 ? "x" : "o";
- return 1;
- case "c1":
- if (!verifyEmptyField(fields[0, 2]))
- {
- Console.WriteLine("Wybraleś już używane pole, lub pole poza zakresem, wybierz jeszcze raz");
- return 0;
- }
- fields[0, 2] = playerNumber == 1 ? "x" : "o";
- return 1;
- case "c2":
- if (!verifyEmptyField(fields[1, 2]))
- {
- Console.WriteLine("Wybraleś już używane pole, lub pole poza zakresem, wybierz jeszcze raz");
- return 0;
- }
- fields[1, 2] = playerNumber == 1 ? "x" : "o";
- return 1;
- case "c3":
- if (!verifyEmptyField(fields[2, 2]))
- {
- Console.WriteLine("Wybraleś już używane pole, lub pole poza zakresem, wybierz jeszcze raz");
- return 0;
- }
- fields[2, 2] = playerNumber == 1 ? "x" : "o";
- return 1;
- default:
- Console.WriteLine("Wybraleś już używane pole, lub pole poza zakresem, wybierz jeszcze raz");
- return 0;
- }
- }
- static bool verifyEmptyField(string field)
- {
- if(field != null)
- {
- return false;
- }
- return true;
- }
- static void Main(string[] args)
- {
- Console.WriteLine("Witaj w aplikacji kółko i krzyżyk\n\n");
- Console.WriteLine($" + - - - - - - -+\n");
- Console.WriteLine($" | a1 | a2 | a3 |\n");
- Console.WriteLine($" | b1 | b2 | b3 |\n");
- Console.WriteLine($" | c1 | c2 | c3 |\n");
- Console.WriteLine($" + - - - - - - -+\n");
- Console.WriteLine($"Powyżej zobaczyles instrukcje numeracji pól, \ngrę zaczyna gracz nr1 decydujac jakie pole chce zająć. \nGotowy? Zaczynamy grę!\n\n");
- string[,] fields = new string[3, 3];
- var fieldName = "";
- var playerNumber = 0;
- var i = 0;
- do
- {
- if (i % 2 == 0)
- {
- Console.WriteLine($"GRACZ 1: Wybierz pole: ");
- playerNumber = 0;
- }
- else
- {
- Console.WriteLine($"GRACZ 2: Wybierz pole: ");
- playerNumber = 1;
- }
- var previousFields = fields.Cast<string>();
- fieldName = Console.ReadLine();
- int result = getXO(fieldName, playerNumber, fields);
- if (result != 0)
- {
- i++;
- }
- } while (loop(fields));
- Console.WriteLine($"\n\n Gracz {playerNumber+1} wygrał!");
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement