Пример #1
0
        public static void ShowCurrentPlayesTerritories()
        {
            var board  = GameBoard.GetBoard();
            var player = board.CurrentPlayer;

            Console.WriteLine("\n\tNumber Territory\t\tContinent\tOccupant\tArmies");
            Console.WriteLine("\t==========================================================================");
            foreach (var territory in board.GetEarth().Territories)
            {
                if (territory.Occupant == player.Name)
                {
                    Console.Write("\n\t");

                    Colour.PrintLand(territory.Continent, territory.TerriroryNumber.ToString());
                    Console.Write(GameEngine.BufferBuilder(territory.TerriroryNumber.ToString().Length, 7));

                    Colour.PrintLand(territory.Continent, territory.Name);
                    Console.Write(GameEngine.BufferBuilder(territory.Name.Length, 21));

                    Colour.PrintLand(territory.Continent, "\t" + territory.Continent);
                    Console.Write(GameEngine.BufferBuilder(territory.Continent.Length, 13));

                    Colour.PrintPlayer(GameEngine.GetPlayerColourIndex(territory.Occupant), "\t" + territory.Occupant);
                    Console.Write(GameEngine.BufferBuilder(territory.Occupant.Length, 15));

                    Console.Write("\t" + territory.Armies);
                    Console.Write(GameEngine.BufferBuilder(territory.Armies.ToString().Length, 8));
                }
            }
        }
Пример #2
0
        public static void ShowEntireWorld()
        {
            var board = GameBoard.GetBoard();

            Console.WriteLine("\n\tNumber Territory\t\tContinent\tOccupant\tArmies");
            Console.WriteLine("\t==========================================================================");
            foreach (var territory in board.GetEarth().Territories)
            {
                Console.Write("\t");

                Colour.PrintLand(territory.Continent, territory.TerriroryNumber.ToString());
                Console.Write(GameEngine.BufferBuilder(territory.TerriroryNumber.ToString().Length, 7));

                Colour.PrintLand(territory.Continent, territory.Name);
                Console.Write(GameEngine.BufferBuilder(territory.Name.Length, 21));

                Colour.PrintLand(territory.Continent, "\t" + territory.Continent);
                Console.Write(GameEngine.BufferBuilder(territory.Continent.Length, 13));

                if (territory.Occupant == "Empty")
                {
                    Console.Write("\t" + territory.Occupant);
                }
                else
                {
                    Colour.PrintPlayer(GameEngine.GetPlayerColourIndex(territory.Occupant), "\t" + territory.Occupant);
                }
                Console.Write(GameEngine.BufferBuilder(territory.Occupant.Length, 16));

                Console.Write(territory.Armies + "\n");
            }
            Console.WriteLine("\t==========================================================================");
        }
Пример #3
0
        public static Dictionary <int, int> ShowTerritoriesNeighbours(Territory attacker)
        {
            Console.WriteLine("\n\tAttacker\t\tContinent\tOccupant\tArmies");
            Console.WriteLine("\t==========================================================================");

            Colour.PrintLand(attacker.Continent, "\t" + attacker.Name);
            Console.Write(GameEngine.BufferBuilder(attacker.Name.Length, 21));

            Colour.PrintLand(attacker.Continent, "\t" + attacker.Continent);
            Console.Write(GameEngine.BufferBuilder(attacker.Continent.Length, 13));

            if (attacker.Occupant == "Empty")
            {
                Console.Write("\t" + attacker.Occupant);
            }
            else
            {
                Colour.PrintPlayer(GameEngine.GetPlayerColourIndex(attacker.Occupant), "\t" + attacker.Occupant);
            }
            Console.Write(GameEngine.BufferBuilder(attacker.Occupant.Length, 16));

            Console.Write(attacker.Armies);
            Console.WriteLine("\n\t==========================================================================");

            Console.WriteLine("\n\tNumber neighbours\t\tContinent\tOccupant\tArmies");
            Console.WriteLine("\t==========================================================================");
            var option    = 1;
            var numberMap = new Dictionary <int, int>();

            foreach (var neighbour in attacker.Neighbours)
            {
                Console.Write("\t");

                Colour.PrintLand(neighbour.Continent, option.ToString());
                numberMap.Add(option, neighbour.TerriroryNumber);
                option++;
                Console.Write(GameEngine.BufferBuilder(option.ToString().Length, 7));

                Colour.PrintLand(neighbour.Continent, neighbour.Name);
                Console.Write(GameEngine.BufferBuilder(neighbour.Name.Length, 21));

                Colour.PrintLand(neighbour.Continent, "\t" + neighbour.Continent);
                Console.Write(GameEngine.BufferBuilder(neighbour.Continent.Length, 13));

                if (neighbour.Occupant == "Empty")
                {
                    Console.Write("\t" + neighbour.Occupant);
                }
                else
                {
                    Colour.PrintPlayer(GameEngine.GetPlayerColourIndex(neighbour.Occupant), "\t" + neighbour.Occupant);
                }
                Console.Write(GameEngine.BufferBuilder(neighbour.Occupant.Length, 16));

                Console.Write(neighbour.Armies + "\n");
            }
            Console.WriteLine("\t==========================================================================");
            return(numberMap);
        }
Пример #4
0
        private static void AssignStartingPlayer()
        {
            var starter = GameEngine.HighestRoll(GameBoard.GetBoard().GetPlayerList());

            GameEngine.Timer();
            Colour.PrintPlayer(starter.Colour, "\r\t" + starter.Name);
            Console.Write(" won the roll and will play first.\n");
            Console.WriteLine("\tPress any key to continue.");
            Console.ReadKey();
            GameBoard.GetBoard().SetPlayerTurnQueue(GameEngine.CreateTurnQueue(starter));
        }
Пример #5
0
        public override void AssignStartingPlayer()
        {
            var board   = GameBoard.GetBoard();
            var starter = GameEngine.HighestRoll(board.GetPlayerList());

            GameEngine.Timer("Rolling dice");
            Colour.PrintPlayer(starter.Colour, "\r\t" + starter.Name);
            Console.Write(" won the roll and will play first.\n");
            Console.WriteLine("\tPress any key to continue.");
            Console.ReadKey();
            board.SetPlayerTurnQueue(GameEngine.CreateTurnQueue(starter));
            board.SetCurrentPlayer();
        }
Пример #6
0
        private static Territory ChooseAttacker()
        {
            var territory = new Territory();
            var confirmed = false;

            while (confirmed == false)
            {
                var player = GameBoard.GetBoard().CurrentPlayer;
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t====================================");
                Console.Write("\tCurrently ");
                Colour.PrintPlayer(player.Colour, player.Name + "'s");
                Console.Write(" turn.");
                Console.Write("\n\tPlease select the territory you want to  ");
                Colour.SouthAmericaRed("attack with.\n");

                MapBuilder.ShowEntireWorld();
                Console.WriteLine("\n\tEnter 43 to return to menu.");
                var option = GameEngine.UserInputTest("\t(1-43)>", "\tInvalid input, please try again!", 1, 43);

                if (option != 43)
                {
                    territory = BoardPopulator.FindTerritory(option);
                    if (territory.Occupant != player.Name)
                    {
                        Console.WriteLine("\tTerritory is occupied by another player.");
                        Console.WriteLine("\tPress any key to retry....");
                        Console.ReadKey();
                    }
                    else if (territory.Armies < 2)
                    {
                        Console.WriteLine("\tTerritory must have at least 2 armies to attack with.");
                        Console.WriteLine("\tPress any key to retry....");
                        Console.ReadKey();
                    }
                    else
                    {
                        confirmed = true;
                    }
                }
                else
                {
                    confirmed = true;
                }
            }
            return(territory);
        }
Пример #7
0
        private static void ArrangeBattle(Attack attack)
        {
            Console.Clear();
            Colour.SouthAmericaRed("\t     **** Risk! ****\n");
            Console.WriteLine("\t==========================");
            Console.WriteLine("\t       Battle Options");
            Colour.PrintLand(attack.AttackingTerritory.Continent, "\n\t" + attack.AttackingTerritory.Name);
            Console.Write(", Occupied by ");
            Colour.PrintPlayer(attack.Attacker.Colour, attack.Attacker.Name);
            Console.Write(" is Attacking with ");
            Colour.SouthAmericaRed(attack.AttackingTerritory.Armies.ToString());
            Console.Write(" armies.");

            Colour.PrintLand(attack.DefendingTerritory.Continent, "\n\t" + attack.DefendingTerritory.Name);
            Console.Write(", Occupied by ");
            Colour.PrintPlayer(attack.Defender.Colour, attack.Defender.Name);
            Console.Write(" is Defending with ");
            Colour.SouthAmericaRed(attack.DefendingTerritory.Armies.ToString());
            Console.Write(" armies.\n");

            var first = false;

            while (first == false)
            {
                Colour.PrintPlayer(attack.Attacker.Colour, "\n\t" + attack.Attacker.Name);
                var attackDie = GameEngine.UserInputTest("\n\tHow many Dice would you like to attack with (1-3) : ",
                                                         "\tInvalid input, please try again!", 1, 3);
                if (CheckDieOption(attackDie, "attacker", attack.AttackingTerritory))
                {
                    attack.AttackDiceCount = attackDie;
                    first = true;
                }
            }

            var second = false;

            while (second == false)
            {
                Colour.PrintPlayer(attack.Defender.Colour, "\n\t" + attack.Defender.Name);
                var defendDie = GameEngine.UserInputTest("\n\tHow many Dice would you like to to defend with (1-2) : ",
                                                         "\tInvalid input, please try again!", 1, 2);
                if (CheckDieOption(defendDie, "defender", attack.DefendingTerritory))
                {
                    attack.DefendDiceCount = defendDie;
                    second = true;
                }
            }
        }
Пример #8
0
        private static Territory ChooseDefender(Territory attacker)
        {
            var territory = new Territory();
            var confirmed = false;

            while (confirmed == false)
            {
                Console.Clear();
                var player = GameBoard.GetBoard().CurrentPlayer;
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t====================================");
                Console.Write("\tCurrently ");
                Colour.PrintPlayer(player.Colour, player.Name + "'s");
                Console.Write(" turn.");
                Console.Write("\n\tPlease select the territory you want to  ");
                Colour.SouthAmericaRed("Attack.\n");

                var numberMap = MapBuilder.ShowTerritoriesNeighbours(attacker);
                var highest   = numberMap.Count + 1;
                Console.WriteLine("\tTo return to the main menu, enter " + highest);

                var prompt = "\n\t(1-" + highest + ")>";
                var option = GameEngine.UserInputTest(prompt, "\tInvalid input, please try again!", 1, highest);

                if (option == highest)
                {
                    confirmed = true;
                }
                else
                {
                    int result;
                    numberMap.TryGetValue(option, out result);
                    territory = BoardPopulator.FindTerritory(result);
                    if (territory != null && territory.Occupant != player.Name)
                    {
                        confirmed = true;
                    }
                    else
                    {
                        Console.WriteLine("\tCannot attack a territory which you occupy!");
                        Console.WriteLine("\tPress any key to continue....");
                        Console.ReadKey();
                    }
                }
            }
            return(territory);
        }
Пример #9
0
        public static void PlayerTurnMenu()
        {
            var player = GameBoard.GetBoard().CurrentPlayer;
            var temp   = false;

            while (temp == false)
            {
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t==========================");
                Console.WriteLine("\t       Game Menu");
                Console.Write("\tCurrently ");
                Colour.PrintPlayer(player.Colour, player.Name + "'s");
                Console.Write(" turn.\n");
                Console.WriteLine("\t1. Return to game");
                Console.WriteLine("\t2. Save Game");
                Console.WriteLine("\t3. Quit Game");
                Console.WriteLine("\t==========================");
                var option = GameEngine.UserInputTest("\t(1-4)>", "\tInvalid input, please try again!", 1, 4);

                switch (option)
                {
                case 1:
                    temp = true;
                    break;

                case 2:
                    var slot = SaveGameMenu("save");
                    if (slot != 7)
                    {
                        GameSaver.SaveGame(slot);
                    }
                    break;

                case 3:
                    Console.WriteLine("\tThank you and goodbye!\n\tPress any key to exit.......");
                    Console.ReadKey();
                    Environment.Exit(0);
                    break;

                default:
                    Console.WriteLine("Error");
                    break;
                }
            }
        }
Пример #10
0
        private void OnGameCompleted(Object sender, EventArgs e)
        {
            var player = GameBoard.GetBoard().CurrentPlayer;

            Console.Clear();
            Colour.SouthAmericaRed("\t     **** Risk! ****\n");
            Console.WriteLine("\t==========================");
            Console.WriteLine("\t    !!!!!Victory!!!!!");
            Colour.PrintPlayer(player.Colour, "\n\t" + player.Name);
            Console.Write(", You have destroyed your enemies and conquered the world!");
            Console.WriteLine("\n\tCongratulations, you are the Winner!!!");
            Console.WriteLine("\tThank you for playing");
            Console.WriteLine("\tPress any key to continue....");
            Console.ReadKey();

            Environment.Exit(0);
        }
Пример #11
0
        public void BattleMenu()
        {
            var complete = false;

            while (complete == false)
            {
                var player = GameBoard.GetBoard().CurrentPlayer;
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t==========================");
                Console.WriteLine("\t       Battle Menu");
                Console.Write("\tCurrently ");
                Colour.PrintPlayer(player.Colour, player.Name + "'s");
                Console.Write(" turn.\n");
                Console.WriteLine("\t1. Select territory to attack");
                Console.WriteLine("\t2. Game Menu");
                Console.WriteLine("\t3. Finish Fighting");
                Console.WriteLine("\t==========================");
                var option = GameEngine.UserInputTest("\t(1-3)>", "\tInvalid input, please try again!", 1, 3);

                switch (option)
                {
                case 1:
                    var attack = BuildBattle();
                    if (attack.AttackingTerritory != null)
                    {
                        var unused = new WorldConquered(this);
                        BeginBattle(attack);
                    }
                    break;

                case 2:
                    GamePlayMenus.PlayerTurnMenu();
                    break;

                case 3:
                    complete = true;
                    break;

                default:
                    Console.WriteLine("Error");
                    break;
                }
            }
        }
Пример #12
0
        public static void DeployArmies()
        {
            var board    = GameBoard.GetBoard();
            var finished = 0;

            while (finished < board.GetPlayerList().Count)
            {
                var player = board.CurrentPlayer;
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t====================================");
                Colour.PrintPlayer(player.Colour, "\t" + player.Name);
                Console.WriteLine(" , add one army unit to a territory you occupy");
                Console.Write("\tYou have ");
                Colour.PrintPlayer(player.Colour, player.Armies.ToString());
                Console.Write(" armies left to deploy");

                MapBuilder.ShowEntireWorld();

                var isPlayersTerritory = false;
                while (isPlayersTerritory == false)
                {
                    var selection = GameEngine.UserInputTest("\n\tEnter territory number (1-42)>", "\tInvalid selection!", 1, 42);
                    var country   = FindTerritory(selection);
                    if (country.Occupant == player.Name)
                    {
                        country.Armies    += 1;
                        player.Armies     -= 1;
                        isPlayersTerritory = true;
                    }
                    else
                    {
                        Console.WriteLine("\tYou have selected a territory that is occupied by another player!\n");
                    }
                }

                if (player.Armies == 0)
                {
                    finished++;
                }
                board.SetCurrentPlayer();
            }
        }
Пример #13
0
        private static void MovementOrders(Territory supplier, Territory receiver)
        {
            Console.Clear();
            var player = GameBoard.GetBoard().CurrentPlayer;

            Colour.SouthAmericaRed("\t     **** Risk! ****\n");
            Console.WriteLine("\t====================================");
            Console.Write("\tCurrently ");
            Colour.PrintPlayer(player.Colour, player.Name + "'s");
            Console.Write(" turn.");
            Console.WriteLine("\n\tSelect the number of armies you wish to move from {0}, to fortify {1}?.",
                              supplier.Name, receiver.Name);
            var armies = supplier.Armies - 1;
            var prompt = "\t(1-" + armies + ")>";
            var option = GameEngine.UserInputTest(prompt, "\tInvalid input, please try again!", 1, armies);

            supplier.Armies -= option;
            receiver.Armies += option;
        }
Пример #14
0
        public static int ReinforcmentsCalculator(Earth earth, Player player)
        {
            var territory = ArmiesForTerritoriesOccupied(earth, player);
            var continent = ArmiesForContinentsOccupied(earth, player);
            var trades    = TradeCards(player);
            var armies    = territory + continent + trades;

            Console.Clear();
            Colour.SouthAmericaRed("\t\t  **** Risk! ****\n");
            Console.WriteLine("\t=======================================");
            Colour.PrintPlayer(player.Colour, "\t\t" + player.Name + "'s ");
            Console.WriteLine("Reinforcements");
            Console.WriteLine("\t{0} Territories occupied = {1} armies", _territoryCount, territory);
            Console.WriteLine("\t{0} continents controlled = {1} armies", _continentCount, continent);
            Console.WriteLine("\tArmies earned from playing cards = {0}", trades);
            Console.WriteLine("\t=======================================");
            Console.WriteLine("\tTotal reinforcements this turn = {0}", armies);
            Console.WriteLine("\n\tPress any key to begin troop deployment....");
            Console.ReadKey();
            return(armies);
        }
Пример #15
0
        public static void FortificationMenu()
        {
            var complete = false;

            while (complete == false)
            {
                var player = GameBoard.GetBoard().CurrentPlayer;
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t==========================");
                Console.WriteLine("\t    Fortification Menu");
                Console.Write("\tCurrently ");
                Colour.PrintPlayer(player.Colour, player.Name + "'s");
                Console.Write(" turn.\n");
                Console.WriteLine("\t1. Move Troops");
                Console.WriteLine("\t2. Game Menu");
                Console.WriteLine("\t3. End Turn");
                Console.WriteLine("\t==========================");
                var option = GameEngine.UserInputTest("\t(1-3)>", "\tInvalid input, please try again!", 1, 3);

                switch (option)
                {
                case 1:
                    MoveTroops();
                    break;

                case 2:
                    GamePlayMenus.PlayerTurnMenu();
                    break;

                case 3:
                    complete = true;
                    break;

                default:
                    Console.WriteLine("Error");
                    break;
                }
            }
        }
Пример #16
0
        private static Territory PickSupplerTerritory()
        {
            var territory = new Territory();
            var confirmed = false;

            while (confirmed == false)
            {
                var player = GameBoard.GetBoard().CurrentPlayer;
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t====================================");
                Console.Write("\tCurrently ");
                Colour.PrintPlayer(player.Colour, player.Name + "'s");
                Console.Write(" turn.");
                Console.Write("\n\tPlease select the territory you want to  ");
                Colour.SouthAmericaRed("Move Troops From.\n");

                MapBuilder.ShowEntireWorld();
                var option = GameEngine.UserInputTest("\n\t(1-42)>", "\tInvalid input, please try again!", 1, 42);

                territory = BoardPopulator.FindTerritory(option);
                if (territory.Occupant != player.Name)
                {
                    Console.WriteLine("\tTerritory is occupied by another player.");
                    Console.WriteLine("\tPress any key to retry....");
                    Console.ReadKey();
                }
                else if (territory.Armies == 1)
                {
                    Console.WriteLine("\tTerritory must have more than 1 army.");
                    Console.WriteLine("\tPress any key to retry....");
                    Console.ReadKey();
                }
                else
                {
                    confirmed = true;
                }
            }
            return(territory);
        }
Пример #17
0
        private void TerritoryConquered(Attack attack)
        {
            Console.Clear();
            Colour.SouthAmericaRed("\t     **** Risk! ****\n");
            Console.WriteLine("\t==========================");
            Console.WriteLine("\t       Victory!");
            Colour.PrintPlayer(attack.Attacker.Colour, "\t" + attack.Attacker.Name);
            Console.Write(", you have defeated all of the armies in ");
            Colour.PrintLand(attack.DefendingTerritory.Continent, attack.DefendingTerritory.Name);

            attack.DefendingTerritory.Occupant = attack.Attacker.Name;
            var landCount = CountPlayersTerritories(attack.Attacker);

            if (landCount == 42)
            {
                OnGameCompleted();
            }

            if (attack.AttackingTerritory.Armies == 2)
            {
                Console.WriteLine("\n\tOne army has been moved to {0}.", attack.Defender.Name);
                attack.AttackingTerritory.Armies -= 1;
                attack.DefendingTerritory.Armies += 1;
            }
            else
            {
                Console.WriteLine("\n\tSelect the number of armies you wish to move from {0}, to occupy {1} with.",
                                  attack.AttackingTerritory.Name, attack.DefendingTerritory.Name);
                var armies = attack.AttackingTerritory.Armies - 1;
                var prompt = "\t(1-" + armies + ")>";
                var option = GameEngine.UserInputTest(prompt, "\tInvalid input, please try again!", 1, armies);
                attack.AttackingTerritory.Armies -= option;
                attack.DefendingTerritory.Armies += option;
            }
            GameBoard.GetBoard().CurrentPlayer.ConqueredDuringTurn += 1;
            Console.WriteLine("\tPress any key to continue....");
            Console.ReadKey();

            CheckUserHasTerritories(attack.Defender, attack.Attacker);
        }
Пример #18
0
        public static void DeployTroops(Player player)
        {
            while (player.Armies > 0)
            {
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t====================================");
                Colour.PrintPlayer(player.Colour, "\t" + player.Name);
                Console.WriteLine(" , add one or more army units to a territory you occupy");
                Console.Write("\tYou have ");
                Colour.PrintPlayer(player.Colour, player.Armies.ToString());
                Console.Write(" armies left to deploy");

                MapBuilder.ShowEntireWorld();

                var isPlayersTerritory = false;
                while (isPlayersTerritory == false)
                {
                    var selection = GameEngine.UserInputTest("\n\tEnter territory number (1-42)>",
                                                             "\tInvalid selection!", 1, 42);
                    var country = BoardPopulator.FindTerritory(selection);
                    if (country.Occupant == player.Name)
                    {
                        var troops = GameEngine.UserInputTest("\n\tEnter number of units you wish to send (1-" + player.Armies + ")>",
                                                              "\tInvalid selection!", 1, player.Armies);

                        country.Armies    += troops;
                        player.Armies     -= troops;
                        isPlayersTerritory = true;
                    }
                    else
                    {
                        Console.WriteLine("\tYou have selected a territory that is occupied by another player!\n");
                    }
                }
            }
        }
Пример #19
0
        private static Territory PickReceiverTerritory(Territory supplier)
        {
            var territory = new Territory();
            var confirmed = false;

            while (confirmed == false)
            {
                Console.Clear();
                var player = GameBoard.GetBoard().CurrentPlayer;
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t====================================");
                Console.Write("\tCurrently ");
                Colour.PrintPlayer(player.Colour, player.Name + "'s");
                Console.Write(" turn.");
                Console.Write("\n\tPlease select the territory you want to  ");
                Colour.SouthAmericaRed("Fortify.\n");

                var numberMap = MapBuilder.ShowTerritoriesNeighbours(supplier);
                var option    = GameEngine.UserInputTest("\n\t(Territory number)>", "\tInvalid input, please try again!", 1,
                                                         numberMap.Count);
                int result;
                numberMap.TryGetValue(option, out result);

                territory = BoardPopulator.FindTerritory(result);
                if (territory != null && territory.Occupant == player.Name)
                {
                    confirmed = true;
                }
                else
                {
                    Console.WriteLine("\tCannot move troops into enemy territory!");
                    Console.WriteLine("\tPress any key to continue....");
                    Console.ReadKey();
                }
            }
            return(territory);
        }
Пример #20
0
        public static void SelectTerritories()
        {
            var board    = GameBoard.GetBoard();
            var selected = false;

            while (selected == false)
            {
                var player = board.CurrentPlayer;
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t====================================");
                Colour.PrintPlayer(player.Colour, "\t" + player.Name);
                Console.WriteLine(" please select a territory you wish to occupy");

                MapBuilder.ShowEntireWorld();

                var selection = GameEngine.UserInputTest("\n\tEnter territory number (1-42)>", "\tInvalid selection!", 1, 42);
                var result    = FindTerritory(selection);
                if (CheckIfOccupied(result, player) == false)
                {
                    board.SetCurrentPlayer();
                }

                if (CheckMapIsFull(board))
                {
                    selected = true;
                }
            }

            Console.Clear();
            Colour.SouthAmericaRed("\t     **** Risk! ****\n");
            Console.WriteLine("\t===========================================");
            Console.WriteLine("\tAll territories are now occupied.");
            Console.WriteLine("\tDeploy remaining armies to your territories.");
            Console.WriteLine("\tPress any key to continue....");
            Console.ReadKey();
        }
Пример #21
0
        public static int TradeMenu()
        {
            var player = GameBoard.GetBoard().CurrentPlayer;

            _cards = new PlayersCards(player.Cards);

            var doneTrading = false;

            while (doneTrading == false)
            {
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t==========================");
                Console.WriteLine("\t       Card trade menu");
                Console.Write("\tCurrently ");
                Colour.PrintPlayer(player.Colour, player.Name + "'s");
                Console.Write(" turn.\n");
                if (player.Cards.Count > 6)
                {
                    Colour.SouthAmericaRed("\tYou must trade at least one set of cards!\n");
                }

                int infantryCount, cavalryCount, artillaryCount, wildCount;
                if (_cards.Infantry == null)
                {
                    infantryCount = 0;
                }
                else
                {
                    infantryCount = _cards.Infantry.Count;
                }

                if (_cards.Cavalry == null)
                {
                    cavalryCount = 0;
                }
                else
                {
                    cavalryCount = _cards.Cavalry.Count;
                }

                if (_cards.Artillary == null)
                {
                    artillaryCount = 0;
                }
                else
                {
                    artillaryCount = _cards.Artillary.Count;
                }

                if (_cards.Wild == null)
                {
                    wildCount = 0;
                }
                else
                {
                    wildCount = _cards.Wild.Count;
                }

                Console.WriteLine("\tInfantry cards = " + infantryCount);
                Console.WriteLine("\tCavalry cards = " + cavalryCount);
                Console.WriteLine("\tArtillary cards = " + artillaryCount);
                Console.WriteLine("\tWild cards = " + wildCount);

                Console.WriteLine("\n\t1. Play three of a kind");
                Console.WriteLine("\t2. Play one of each");
                Console.WriteLine("\t3. Play a wild card");
                Console.WriteLine("\t4. Game Menu");
                Console.WriteLine("\t5. Commence deployment of reinforcements");
                Console.WriteLine("\t==========================");
                var option = GameEngine.UserInputTest("\t(1-5)>", "\tInvalid input, please try again!", 1, 5);

                switch (option)
                {
                case 1:
                    PlayThreeOfAKind(infantryCount, cavalryCount, artillaryCount, wildCount);
                    break;

                case 2:
                    PlayOneOfEach(infantryCount, cavalryCount, artillaryCount, wildCount);
                    break;

                case 3:
                    PlayWildCard(infantryCount, cavalryCount, artillaryCount, wildCount);
                    break;

                case 4:
                    GamePlayMenus.PlayerTurnMenu();
                    break;

                case 5:
                    if (player.Cards.Count <= 6)
                    {
                        doneTrading = true;
                    }
                    else
                    {
                        Console.WriteLine("\tYou have more than 6 cards, You must trade some!");
                    }
                    break;

                default:
                    Console.WriteLine("\tError");
                    break;
                }
            }
            return(_armies);
        }
Пример #22
0
        private static void CheckUserHasTerritories(Player loser, Player winner)
        {
            var board = GameBoard.GetBoard();
            var count = CountPlayersTerritories(loser);

            if (count == 0)
            {
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t==========================\n");
                Colour.PrintPlayer(loser.Colour, "\t" + loser.Name);
                Console.Write(", You have no remaining territories.");
                Console.Write("\n\tYou have been annihilated, ");
                Colour.SouthAmericaRed("your game is over!!!!");
                Console.Write("\n\tPress any key to continue....");
                Console.ReadKey();

                if (loser.Cards != null && loser.Cards.Count > 0)
                {
                    foreach (var card in loser.Cards)
                    {
                        if (winner.Cards == null)
                        {
                            winner.Cards = new List <Card>();
                            winner.Cards.Add(card);
                        }
                        else
                        {
                            winner.Cards.Add(card);
                        }
                    }

                    Console.Clear();
                    Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                    Console.WriteLine("\t==========================\n");
                    Colour.PrintPlayer(winner.Colour, "\t" + winner.Name);
                    Console.Write(", You have received all of ");
                    Colour.PrintPlayer(loser.Colour, loser.Name + "'s ");
                    Console.Write("game cards.");

                    if (winner.Cards.Count > 6)
                    {
                        board.CurrentPlayer = winner;
                        Console.Write("\n\tYou now have more than 6 game cards.");
                        Console.WriteLine("\tYou must trade cards now.");
                        Console.WriteLine("\tPress any key to continue....");
                        Console.ReadKey();
                        CardTradeingEngine.TradeMenu();
                    }
                    else
                    {
                        Console.WriteLine("\tPress any key to continue....");
                        Console.ReadKey();
                    }
                }

                var playerList = board.GetPlayerList();
                var index      = GameEngine.GetPlayerIndex(loser.Name);
                playerList.RemoveAt(index);

                board.SetPlayerTurnQueue(GameEngine.CreateTurnQueue(board.CurrentPlayer));
            }
        }
Пример #23
0
        private static void PlayWildCard(int infantry, int cavalry, int artillery, int wild)
        {
            var done = false;

            while (done == false)
            {
                var usedCards = new List <Card>();
                var player    = GameBoard.GetBoard().CurrentPlayer;

                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t==========================");
                Console.WriteLine("\tTrade a wild card menu");
                Console.Write("\tCurrently ");
                Colour.PrintPlayer(player.Colour, player.Name + "'s");
                Console.Write(" turn.\n");
                if (player.Cards.Count > 6)
                {
                    Colour.SouthAmericaRed("\tYou must trade at least one set of cards!\n");
                }

                Console.WriteLine("\tInfantry cards = " + infantry);
                Console.WriteLine("\tCavalry cards = " + cavalry);
                Console.WriteLine("\tArtillary cards = " + artillery);
                Console.WriteLine("\tWild cards = " + wild);

                Console.WriteLine("\n\t1. Play a wild card with two infantry cards");
                Console.WriteLine("\t2. Play a wild card with two cavalry cards");
                Console.WriteLine("\t3. Play a wild card with two artillery cards");
                Console.WriteLine("\t4. Play a wild card with an infantry and cavalry card");
                Console.WriteLine("\t5. Play a wild card with an infantry and artillary card");
                Console.WriteLine("\t6. Play a wild card with a cavalry and artillery card");
                Console.WriteLine("\t7. return to previous menu");
                Console.WriteLine("\t==========================");
                var option = GameEngine.UserInputTest("\t(1-7)>", "\tInvalid input, please try again!", 1, 7);

                switch (option)
                {
                case 1:
                    if (infantry >= 2)
                    {
                        usedCards.Add(_cards.Wild[0]);
                        _cards.Wild.RemoveAt(0);
                        for (var index = 0; index <= 1; index++)
                        {
                            usedCards.Add(_cards.Infantry[0]);
                            _cards.Infantry.RemoveAt(0);
                        }
                        wild     -= 1;
                        infantry -= 2;
                        GameBoard.GetBoard().AddToUsedCardPile(usedCards);
                        TradedCardValue();
                        Console.WriteLine("\tCards traded, Press any key to continue....");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("\tYou do not have enough of that type of card!");
                        Console.WriteLine("\tPress any key to continue....");
                        Console.ReadKey();
                    }
                    break;

                case 2:
                    if (cavalry >= 3)
                    {
                        usedCards.Add(_cards.Wild[0]);
                        _cards.Wild.RemoveAt(0);
                        for (var index = 0; index <= 1; index++)
                        {
                            usedCards.Add(_cards.Cavalry[0]);
                            _cards.Cavalry.RemoveAt(0);
                        }
                        wild    -= 1;
                        cavalry -= 2;
                        GameBoard.GetBoard().AddToUsedCardPile(usedCards);
                        TradedCardValue();
                        Console.WriteLine("\tCards traded, Press any key to continue....");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("\tYou do not have enough of that type of card!");
                        Console.WriteLine("\tPress any key to continue....");
                        Console.ReadKey();
                    }
                    break;

                case 3:
                    if (artillery >= 3)
                    {
                        usedCards.Add(_cards.Wild[0]);
                        _cards.Wild.RemoveAt(0);
                        for (var index = 0; index <= 1; index++)
                        {
                            usedCards.Add(_cards.Artillary[0]);
                            _cards.Artillary.RemoveAt(0);
                        }
                        wild      -= 1;
                        artillery -= 2;
                        GameBoard.GetBoard().AddToUsedCardPile(usedCards);
                        TradedCardValue();
                        Console.WriteLine("\tCards traded, Press any key to continue....");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("\tYou do not have enough of that type of card!");
                        Console.WriteLine("\tPress any key to continue....");
                        Console.ReadKey();
                    }
                    break;

                case 4:
                    if (infantry >= 1 && cavalry >= 1)
                    {
                        usedCards.Add(_cards.Wild[0]);
                        _cards.Wild.RemoveAt(0);
                        usedCards.Add(_cards.Infantry[0]);
                        _cards.Infantry.RemoveAt(0);
                        usedCards.Add(_cards.Cavalry[0]);
                        _cards.Cavalry.RemoveAt(0);

                        wild     -= 1;
                        infantry -= 1;
                        cavalry  -= 1;
                        GameBoard.GetBoard().AddToUsedCardPile(usedCards);
                        TradedCardValue();
                        Console.WriteLine("\tCards traded, Press any key to continue....");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("\tYou do not have enough of those types of card!");
                        Console.WriteLine("\tPress any key to continue....");
                        Console.ReadKey();
                    }
                    break;

                case 5:
                    if (infantry >= 1 && artillery >= 1)
                    {
                        usedCards.Add(_cards.Wild[0]);
                        _cards.Wild.RemoveAt(0);
                        usedCards.Add(_cards.Infantry[0]);
                        _cards.Infantry.RemoveAt(0);
                        usedCards.Add(_cards.Artillary[0]);
                        _cards.Artillary.RemoveAt(0);

                        wild      -= 1;
                        infantry  -= 1;
                        artillery -= 1;
                        GameBoard.GetBoard().AddToUsedCardPile(usedCards);
                        TradedCardValue();
                        Console.WriteLine("\tCards traded, Press any key to continue....");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("\tYou do not have enough of those types of card!");
                        Console.WriteLine("\tPress any key to continue....");
                        Console.ReadKey();
                    }
                    break;

                case 6:
                    if (cavalry >= 1 && artillery >= 1)
                    {
                        usedCards.Add(_cards.Wild[0]);
                        _cards.Wild.RemoveAt(0);
                        usedCards.Add(_cards.Cavalry[0]);
                        _cards.Cavalry.RemoveAt(0);
                        usedCards.Add(_cards.Artillary[0]);
                        _cards.Artillary.RemoveAt(0);

                        wild      -= 1;
                        cavalry   -= 1;
                        artillery -= 1;
                        GameBoard.GetBoard().AddToUsedCardPile(usedCards);
                        TradedCardValue();
                        Console.WriteLine("\tCards traded, Press any key to continue....");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("\tYou do not have enough of those types of card!");
                        Console.WriteLine("\tPress any key to continue....");
                        Console.ReadKey();
                    }
                    break;

                case 7:
                    done = true;
                    break;

                default:
                    Console.WriteLine("\tError");
                    break;
                }
            }
        }
Пример #24
0
        private static void PlayOneOfEach(int infantry, int cavalry, int artillery, int wild)
        {
            var done = false;

            while (done == false)
            {
                var usedCards = new List <Card>();
                var player    = GameBoard.GetBoard().CurrentPlayer;

                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t==========================");
                Console.WriteLine("\t  Trade one of each menu");
                Console.Write("\tCurrently ");
                Colour.PrintPlayer(player.Colour, player.Name + "'s");
                Console.Write(" turn.\n");
                if (player.Cards.Count > 6)
                {
                    Colour.SouthAmericaRed("\tYou must trade at least one set of cards!\n");
                }

                Console.WriteLine("\tInfantry cards = " + infantry);
                Console.WriteLine("\tCavalry cards = " + cavalry);
                Console.WriteLine("\tArtillary cards = " + artillery);
                Console.WriteLine("\tWild cards = " + wild);

                Console.WriteLine("\n\t1. Play one of each card");
                Console.WriteLine("\t2. return to previous menu");
                Console.WriteLine("\t==========================");
                var option = GameEngine.UserInputTest("\t(1-2)>", "\tInvalid input, please try again!", 1, 2);

                switch (option)
                {
                case 1:
                    if (infantry >= 1 && cavalry >= 1 && artillery >= 1)
                    {
                        usedCards.Add(_cards.Infantry[0]);
                        _cards.Infantry.RemoveAt(0);
                        usedCards.Add(_cards.Cavalry[0]);
                        _cards.Cavalry.RemoveAt(0);
                        usedCards.Add(_cards.Artillary[0]);
                        _cards.Artillary.RemoveAt(0);
                        artillery -= 1;
                        cavalry   -= 1;
                        artillery -= 1;
                        GameBoard.GetBoard().AddToUsedCardPile(usedCards);
                        TradedCardValue();
                        Console.WriteLine("\tCards traded, Press any key to continue....");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("\tYou do not have enough of that type of card!");
                        Console.WriteLine("\tPress any key to continue....");
                        Console.ReadKey();
                    }
                    break;

                case 2:
                    done = true;
                    break;

                default:
                    Console.WriteLine("\tError");
                    break;
                }
            }
        }
Пример #25
0
        public static void BattleResolve(Attack attack, string round)
        {
            int attacker   = attack.AttackDice1;
            int attackDice = 1;
            int defender   = attack.DefendDice1;
            int defendDice = 1;

            if (attack.AttackDice2 > attacker)
            {
                attacker   = attack.AttackDice2;
                attackDice = 2;
            }
            else if (attack.AttackDice3 > attacker)
            {
                attacker   = attack.AttackDice3;
                attackDice = 3;
            }

            if (attack.DefendDice2 > defender)
            {
                defender   = attack.DefendDice2;
                defendDice = 2;
            }

            if (attacker > defender)
            {
                attack.DefendingTerritory.Armies -= 1;
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t==========================");
                Console.WriteLine("\t       Battle outcome");
                Console.WriteLine("\t       {0}\n", round);
                Colour.PrintPlayer(attack.Attacker.Colour, "\t" + attack.Attacker.Name + "'s");
                Console.Write(", Highest attacking roll was {0}.\n\t", attacker);
                Colour.PrintPlayer(attack.Defender.Colour, attack.Defender.Name + "'s");
                Console.Write(", Highest defending roll was {0}.\n", defender);
                Colour.PrintPlayer(attack.Defender.Colour, "\n\t" + attack.Defender.Name);
                Console.WriteLine(", was defeated and has lost 1 army.");
                Console.WriteLine("\tPress any key to continue....");
                Console.ReadKey();
            }
            else
            {
                attack.AttackingTerritory.Armies -= 1;
                Console.Clear();
                Colour.SouthAmericaRed("\t     **** Risk! ****\n");
                Console.WriteLine("\t==========================");
                Console.WriteLine("\t       Battle outcome");
                Console.WriteLine("\t       {0}\n", round);
                Colour.PrintPlayer(attack.Attacker.Colour, "\t" + attack.Attacker.Name + "'s");
                Console.Write(", Highest attacking roll was {0}.\n\t", attacker);
                Colour.PrintPlayer(attack.Defender.Colour, attack.Defender.Name + "'s");
                Console.Write(", Highest defending roll was {0}.\n", defender);
                Colour.PrintPlayer(attack.Attacker.Colour, "\n\t" + attack.Attacker.Name);
                Console.WriteLine(", was defeated and has lost 1 army.");
                Console.WriteLine("\tPress any key to continue....");
                Console.ReadKey();
            }

            if (attackDice == 1)
            {
                attack.AttackDice1 = 0;
            }
            else if (attackDice == 2)
            {
                attack.AttackDice2 = 0;
            }
            else if (attackDice == 3)
            {
                attack.AttackDice3 = 0;
            }

            if (defendDice == 1)
            {
                attack.DefendDice1 = 0;
            }
            else if (defendDice == 2)
            {
                attack.DefendDice2 = 0;
            }
        }