示例#1
0
        private bool GetCoordinatesFromConsole(GameFieldPlayer player)
        {
            if (player == GameFieldPlayer.Blue)
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.Write("Add meg a koordinánát, ahova lépni szeretnél. (0 és 6 között) (Elvárt formátum: 4,6): ");
                string input = Console.ReadLine();

                Console.ForegroundColor = ConsoleColor.White;

                int i = int.Parse(input.Split(',')[0]);
                int j = int.Parse(input.Split(',')[1]);

                if (!GameTable.IsFree(i, j))
                {
                    return(false);
                }

                GameTable.SetPlayer(player, i, j);

                return(true);
            }

            return(false);
        }
示例#2
0
        public void MoveCPU(GameFieldPlayer player)
        {
            bool done = false;

            while (!done)
            {
                int i = rnd.Next(0, Fields.GetLength(0));
                int j = rnd.Next(0, Fields.GetLength(1));

                while (Fields[i, j].Player != player)
                {
                    i = rnd.Next(0, Fields.GetLength(0));
                    j = rnd.Next(0, Fields.GetLength(1));
                }

                Direction direction;
                int       attemptions = 0;

                do
                {
                    direction = (Direction)attemptions++;
                } while (!MovePlayer(player, i, j, direction) && attemptions < 5);

                if (attemptions < 5)
                {
                    done = true;
                }
            }
        }
示例#3
0
        private bool GetCoordinatesToRemoveTheOpponentFromConsole(GameFieldPlayer player)
        {
            if (player == GameFieldPlayer.Blue)
            {
                Console.ForegroundColor = ConsoleColor.Blue;

                Console.WriteLine("MALOM!");
                Console.Write("Add meg a koordinánát, ahonnan az ellenfél bábuját el szeretnéd venni (0 és 6 között) (Elvárt formátum: 4,6) (exit: mentés és kilépés): ");
                string input = Console.ReadLine();

                if (input == "exit")
                {
                    Save();
                    isRunning = false;

                    return(true);
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.White;

                    int i = int.Parse(input.Split(',')[0]);
                    int j = int.Parse(input.Split(',')[1]);

                    return(GameTable.RemoveOpponent(player, i, j));
                }
            }

            return(false);
        }
示例#4
0
        private void SetCoordinatesByCPU(GameFieldPlayer player = GameFieldPlayer.Red)
        {
            int i, j;

            do
            {
                i = rnd.Next(0, 7);
                j = rnd.Next(0, 7);
            } while (!GameTable.IsFree(i, j));

            GameTable.SetPlayer(player, i, j);
        }
示例#5
0
        public bool MovePlayer(GameFieldPlayer player, int iFrom, int jFrom, int iTo, int jTo)
        {
            if (IsFree(iTo, jTo))
            {
                Fields[iFrom, jFrom].Player = GameFieldPlayer.None;
                Fields[iTo, jTo].Player     = player;

                return(true);
            }

            return(false);
        }
示例#6
0
        private bool GetCoordinatesToMoveFromConsole(GameFieldPlayer player)
        {
            if (player == GameFieldPlayer.Blue)
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.Write("Add meg a koordinánát, amelyik bábuval lépni szeretnél. (0 és 6 között) (Elvárt formátum: 4,6) (exit: mentés és kilépés): ");
                string input = Console.ReadLine();

                if (input == "exit")
                {
                    Save();
                    isRunning = false;

                    return(true);
                }
                else
                {
                    int iFrom = int.Parse(input.Split(',')[0]);
                    int jFrom = int.Parse(input.Split(',')[1]);

                    Console.Write("A nyilak segítségével add meg, hogy melyik irányba szeretnél tovább haladni.");

                    ConsoleKey keyPressed;

                    do
                    {
                        keyPressed = Console.ReadKey(false).Key;
                    } while (keyPressed != ConsoleKey.UpArrow && keyPressed != ConsoleKey.DownArrow && keyPressed != ConsoleKey.LeftArrow && keyPressed != ConsoleKey.RightArrow);

                    Console.ForegroundColor = ConsoleColor.White;

                    switch (keyPressed)
                    {
                    case ConsoleKey.UpArrow:
                        return(GameTable.MovePlayer(player, iFrom, jFrom, Direction.Up));

                    case ConsoleKey.DownArrow:
                        return(GameTable.MovePlayer(player, iFrom, jFrom, Direction.Down));

                    case ConsoleKey.LeftArrow:
                        return(GameTable.MovePlayer(player, iFrom, jFrom, Direction.Left));

                    case ConsoleKey.RightArrow:
                        return(GameTable.MovePlayer(player, iFrom, jFrom, Direction.Right));
                    }
                }
            }

            return(false);
        }
示例#7
0
        public bool HasMill(GameFieldPlayer player)
        {
            foreach (PossibleMill possibleMill in possibleMills)
            {
                if (Fields[possibleMill.Points[0].X, possibleMill.Points[0].Y].Player == player &&
                    Fields[possibleMill.Points[1].X, possibleMill.Points[1].Y].Player == player &&
                    Fields[possibleMill.Points[2].X, possibleMill.Points[2].Y].Player == player)
                {
                    return(true);
                }
            }

            return(false);
        }
示例#8
0
        public bool AllInMill(GameFieldPlayer player)
        {
            for (int i = 0; i < Fields.GetLength(0); i++)
            {
                for (int j = 0; j < Fields.GetLength(1); j++)
                {
                    if (!IsInMill(player, i, j))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
示例#9
0
        public void RemoveOpponentCPU()
        {
            GameFieldPlayer cpu      = GameFieldPlayer.Red;
            GameFieldPlayer opponent = GameFieldPlayer.Blue;

            int i = rnd.Next(0, Fields.GetLength(0));
            int j = rnd.Next(0, Fields.GetLength(1));

            while (Fields[i, j].Player != opponent && (!IsInMill(opponent, i, j) || AllInMill(opponent)))
            {
                i = rnd.Next(0, Fields.GetLength(0));
                j = rnd.Next(0, Fields.GetLength(1));
            }

            RemoveOpponent(cpu, i, j);
        }
示例#10
0
        public int GetNumberOfFields(GameFieldPlayer player)
        {
            int num = 0;

            for (int i = 0; i < Fields.GetLength(0); i++)
            {
                for (int j = 0; j < Fields.GetLength(1); j++)
                {
                    if (Fields[i, j].Player == player)
                    {
                        num++;
                    }
                }
            }

            return(num);
        }
示例#11
0
        public bool IsInMill(GameFieldPlayer player, int i, int j)
        {
            foreach (PossibleMill possibleMill in possibleMills)
            {
                if (Fields[possibleMill.Points[0].X, possibleMill.Points[0].Y].Player == player &&
                    Fields[possibleMill.Points[1].X, possibleMill.Points[1].Y].Player == player &&
                    Fields[possibleMill.Points[2].X, possibleMill.Points[2].Y].Player == player &&
                    ((possibleMill.Points[0].X == i && possibleMill.Points[0].Y == j) ||
                     (possibleMill.Points[1].X == i && possibleMill.Points[1].Y == j) ||
                     (possibleMill.Points[2].X == i && possibleMill.Points[2].Y == j)
                    ))
                {
                    return(true);
                }
            }

            return(false);
        }
示例#12
0
        internal bool RemoveOpponent(GameFieldPlayer player, int i, int j)
        {
            GameFieldPlayer opponent = GameFieldPlayer.Red;

            if (player == GameFieldPlayer.Red)
            {
                opponent = GameFieldPlayer.Blue;
            }

            if (IsUseable(i, j) && Fields[i, j].Player == opponent && (AllInMill(player) || !IsInMill(opponent, i, j)))
            {
                Fields[i, j].Player = GameFieldPlayer.None;

                return(true);
            }

            return(false);
        }
示例#13
0
        private bool GetCoordinatesToMoveFromConsoleEndGame(GameFieldPlayer player)
        {
            if (player == GameFieldPlayer.Blue)
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.Write("Add meg a koordinánát, amelyik bábuval lépni szeretnél. (0 és 6 között) (Elvárt formátum: 4,6) (exit: mentés és kilépés): ");
                string input = Console.ReadLine();

                if (input == "exit")
                {
                    Save();
                    isRunning = false;

                    return(true);
                }
                else
                {
                    int iFrom = int.Parse(input.Split(',')[0]);
                    int jFrom = int.Parse(input.Split(',')[1]);

                    Console.Write("Add meg a koordinánát, ahova lépni szeretnél. (0 és 6 között) (Elvárt formátum: 4,6): ");
                    input = Console.ReadLine();

                    Console.ForegroundColor = ConsoleColor.White;

                    int iTo = int.Parse(input.Split(',')[0]);
                    int jTo = int.Parse(input.Split(',')[1]);

                    if (!GameTable.IsFree(iTo, jTo))
                    {
                        return(false);
                    }

                    return(GameTable.MovePlayer(player, iFrom, jFrom, iTo, jTo));
                }
            }

            return(false);
        }
示例#14
0
 internal bool SteppedToMill(GameFieldPlayer blue)
 {
     return(steppedToMill);
 }
示例#15
0
        public bool MovePlayer(GameFieldPlayer player, int i, int j, Direction direction)
        {
            int newCoordinate;

            if (direction == Direction.Up)
            {
                newCoordinate = i;

                while (newCoordinate >= 0 && !IsFree(newCoordinate, j))
                {
                    newCoordinate--;
                }
            }
            else if (direction == Direction.Down)
            {
                newCoordinate = i;

                while (newCoordinate < Fields.GetLength(0) && !IsFree(newCoordinate, j))
                {
                    newCoordinate++;
                }
            }
            else if (direction == Direction.Right)
            {
                newCoordinate = j;

                while (newCoordinate < Fields.GetLength(1) && !IsFree(i, newCoordinate))
                {
                    newCoordinate++;
                }
            }
            else //if (direction == Direction.Left)
            {
                newCoordinate = j;

                while (newCoordinate >= 0 && !IsFree(i, newCoordinate))
                {
                    newCoordinate--;
                }
            }

            if (0 <= newCoordinate && newCoordinate < Fields.GetLength(0))
            {
                if ((direction == Direction.Down || direction == Direction.Up) && IsFree(newCoordinate, j))
                {
                    Fields[i, j].Player             = GameFieldPlayer.None;
                    Fields[newCoordinate, j].Player = player;

                    steppedToMill = IsInMill(player, newCoordinate, j);
                }
                else
                {
                    Fields[i, j].Player             = GameFieldPlayer.None;
                    Fields[i, newCoordinate].Player = player;

                    steppedToMill = IsInMill(player, i, newCoordinate);
                }

                return(true);
            }

            return(false);
        }
示例#16
0
 public void SetPlayer(GameFieldPlayer player, int i, int j)
 {
     Fields[i, j].Player = player;
     steppedToMill       = IsInMill(player, i, j);
 }