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]; } }
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()); } }
public async void MovementAsync(Program.Map map) { if (!MovementTaskInProgress) { MovementTaskInProgress = true; await Task.Run(() => PlayerMovement(map)); } }
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; } }
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])); } }
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; }
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])); } }
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(); } }
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); } }
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); } }
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++; } } } }
public async void MovementAsync(Program.Map map, Food food) { await Task.Run(() => AIMovement(map, food)); }
public Game(Program.Map map, Player player, int PointsGoal = 0) { Map = map; Player = player; MaxPts = PointsGoal; }