Esempio n. 1
0
 public void AIMovement(Program.Map map, Food food)
 {
     if (Paused)
     {
         return;
     }
     if (food.X != LastFoodX || food.Y != LastFoodY) //Recalculating path
     {
         LastFoodX = food.X;
         LastFoodY = food.Y;
         ValueMap  = new string[map.Height][];
         for (int row = 0; row < map.Height; row++)
         {
             ValueMap[row] = new string[map.Width];
             for (int col = 0; col < map.Width; col++)
             {
                 ValueMap[row][col] = map.OrigMapArray[row][col].ToString();
             }
         }
         CurrPath.Clear();
         MapEvaluator();
         PathBuilder(LastFoodX, LastFoodY);
     }
     if (CurrPath.Count != 0 && (Watch.IsRunning == false || Watch.ElapsedMilliseconds > MovementTime)) //The less the number, the faster an AI is
     {
         Watch.Restart();
         int[] Coords = CurrPath.Pop();
         X = Coords[0];
         Y = Coords[1];
     }
 }
Esempio n. 2
0
 public static void MultiplayerShowPoints(Program.Map map, List <Player> players)
 {
     for (int i = 0; i < players.Count; i++)
     {
         Console.SetCursorPosition(0, map.Height + i * 2 + 1);
         Console.Write(" |{0}|'s Points: {1}   ", players[i].Character, players[i].Points.ToString());
     }
 }
Esempio n. 3
0
 public async void MovementAsync(Program.Map map)
 {
     if (!MovementTaskInProgress)
     {
         MovementTaskInProgress = true;
         await Task.Run(() => PlayerMovement(map));
     }
 }
Esempio n. 4
0
        public void Start(int NumOfPlayers, Program.Map Map)
        {
            IPEndPoint ipPoint      = new IPEndPoint(IPAddress.Parse(HostIP), Port);
            Socket     ListenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            string Title = $"Waiting for Players to connect - {NumOfPlayers - 1 - ConnectedPlayers.Count}";

            string[] NullArray = new string[0];
            Interface.AnswerInterface(Title, NullArray);
            Console.CursorTop += 2;
            int OrigTop = Console.CursorTop;

            ListenSocket.Bind(ipPoint);
            ListenSocket.Listen(NumOfPlayers - 1);
            while (ConnectedPlayers.Count < NumOfPlayers - 1)
            {
                Socket newPlayer = ListenSocket.Accept();
                ConnectedPlayers.Add(newPlayer, ReceiveData(newPlayer) as Player);

                SendLobbyInfo(NumOfPlayers, Map);

                Title = $"Waiting for Players to connect - {NumOfPlayers - 1 - ConnectedPlayers.Count}";
                Interface.AnswerInterfaceTitleChange(Title);

                Console.SetCursorPosition(6, OrigTop + 2 * ConnectedPlayers.Count - 1);
                Console.Write("\x4 {0} - {1} is connected.", (char)ConnectedPlayers.Count, ConnectedPlayers.Last().Key.AddressFamily.ToString());
            }
            Console.Clear();
            PlayerInitializing();

            List <Player> Players = ConnectedPlayers.Values.ToList();

            Players.Add(HostPlayer);

            Game         = new Multiplayer.MultiplayerGame();
            Game.Map     = Map;
            Game.Players = Players;

            Game.StartAsync();
            while (Game.State == false)
            {
            }
            while (true)
            {
                SendGameInfo();
                HostPlayer.MovementAsync(Map);//Host player movement
                for (int i = 0; i < ConnectedPlayers.Count; i++)
                {
                    PlayerMovement(ConnectedPlayers.Keys.ToArray()[i]);
                }
                Players = ConnectedPlayers.Values.ToList();
                Players.Add(HostPlayer);
                Game.Players = Players;
            }
        }
Esempio n. 5
0
 public static void MapDraw(Program.Map map, Player player, Food food, AI computer)
 {
     map.CurrMapArray = map.OrigMapArray.Select(a => (char[])a.Clone()).ToArray();
     map.CurrMapArray[computer.Y][computer.X] = computer.Character;
     map.CurrMapArray[player.Y][player.X]     = player.Character;
     map.CurrMapArray[food.Y][food.X]         = food.Character;
     Console.CursorVisible = false;
     for (int i = 0; i < map.Height; i++)
     {
         Console.SetCursorPosition(0, i);
         Console.Write("\r{0}    ", string.Join(" ", map.CurrMapArray[i]));
     }
 }
Esempio n. 6
0
        public void FoodTeleport(Program.Map map)
        {
            Random randomizer = new Random();
            int    newX       = randomizer.Next(0, map.Width);
            int    newY       = randomizer.Next(0, map.Height);

            while (map.OrigMapArray[newY][newX] != '*')
            {
                newX = randomizer.Next(0, map.Width);
                newY = randomizer.Next(0, map.Height);
            }
            X = newX;
            Y = newY;
        }
Esempio n. 7
0
 public static void MultiplayerMapDraw(Program.Map map, List <Player> players, Food food)
 {
     map.CurrMapArray = map.OrigMapArray.Select(a => (char[])a.Clone()).ToArray();
     foreach (Player player in players)
     {
         map.CurrMapArray[player.Y][player.X] = player.Character;
     }
     map.CurrMapArray[food.Y][food.X] = food.Character;
     Console.CursorVisible            = false;
     for (int i = 0; i < map.Height; i++)
     {
         Console.SetCursorPosition(0, i);
         Console.Write("\r{0}    ", string.Join(" ", map.CurrMapArray[i]));
     }
 }
Esempio n. 8
0
 public static void PauseTextToggle(Program.Map map, bool state = true)
 {
     if (state)
     {
         string Text         = "THE GAME IS PAUSED. PRESS 'ESC' OR 'P' TO UNPAUSE";
         int    MidTextStart = Console.WindowWidth / 2 - Text.Length / 2;
         Console.CursorLeft = MidTextStart;
         Console.SetCursorPosition(MidTextStart, map.Height + 7);
         Console.Write(Text);
     }
     else
     {
         Console.CursorTop = map.Height + 7;
         ClearLine();
     }
 }
Esempio n. 9
0
 public static void PointsShow(Program.Map map, Player player, AI ai, int MaxPoints = 0)
 {
     if (MaxPoints == 0)
     {
         Console.SetCursorPosition(0, map.Height + 3);
         Console.Write("Player's Points: {0}   ", player.Points.ToString());
         Console.SetCursorPosition(0, map.Height + 5);
         Console.Write("AI's     Points: {0}   ", ai.Points.ToString());
     }
     else
     {
         Console.SetCursorPosition(0, map.Height + 3);
         Console.Write("Player's Points: {0}/{1}   ", player.Points.ToString(), MaxPoints);
         Console.SetCursorPosition(0, map.Height + 5);
         Console.Write("AI's     Points: {0}/{1}  ", ai.Points.ToString(), MaxPoints);
     }
 }
Esempio n. 10
0
        private void SendLobbyInfo(int NumOfPlayers, Program.Map map)
        {
            Message   message = new Message();
            LobbyInfo Info    = new LobbyInfo
            {
                NumberOfPlayers  = NumOfPlayers,
                ConnectedPlayers = ConnectedPlayers.Values.ToList(),
                MapName          = map.Name
            };

            message.PacketWrapper(Foo.Serialize(Info).Data);

            for (int i = 0; i < ConnectedPlayers.Count; i++)
            {
                ConnectedPlayers.Keys.ToArray()[i].Send(message.Data);
            }
        }
Esempio n. 11
0
        private void PlayerMovement(Program.Map map)
        {
            string key = Console.ReadKey(true).Key.ToString();

            MovementTaskInProgress = false;
            if (key == "P" || key == "Escape")
            {
                Pause?.Invoke();
                return;
            }
            if (ControlsEnabled)
            {
                if (key == "W" || key == "UpArrow")
                {
                    if (map.OrigMapArray[Y - 1][X] != '#')
                    {
                        Y--;
                    }
                }
                else if (key == "S" || key == "DownArrow")
                {
                    if (map.OrigMapArray[Y + 1][X] != '#')
                    {
                        Y++;
                    }
                }
                else if (key == "A" || key == "LeftArrow")
                {
                    if (map.OrigMapArray[Y][X - 1] != '#')
                    {
                        X--;
                    }
                }
                else if (key == "D" || key == "RightArrow")
                {
                    if (map.OrigMapArray[Y][X + 1] != '#')
                    {
                        X++;
                    }
                }
            }
        }
Esempio n. 12
0
 public async void MovementAsync(Program.Map map, Food food)
 {
     await Task.Run(() => AIMovement(map, food));
 }
Esempio n. 13
0
 public Game(Program.Map map, Player player, int PointsGoal = 0)
 {
     Map    = map;
     Player = player;
     MaxPts = PointsGoal;
 }