예제 #1
0
        static void Game(ConnectClient connectClient)
        {
            char        x; int y;
            VirtualArea MyArea    = new VirtualArea();
            VirtualArea EnemyArea = new VirtualArea();

            //WebSetShips(MyArea, connectClient);
            RandomWebArea(MyArea, connectClient);
            bool GameIsPlaying = true;

            connectClient.WaitStartGame();
            while (GameIsPlaying)
            {
                bool ImActive = connectClient.GetState();
                connectClient.GetData(MyArea, EnemyArea);
                PrintGame(MyArea, EnemyArea);
                if (ImActive)
                {
                    Console.WriteLine("Wait turn...");
                    Console.Write("x = ");
                    x = Console.ReadKey().KeyChar;
                    Console.Write("\ny = ");
                    y = int.Parse(Console.ReadLine());
                    connectClient.Fire(x - 'a', y - 1);
                }
                else
                {
                    connectClient.WaitData();
                }
            }
        }
예제 #2
0
        public static void WebSetShips(VirtualArea area, ConnectClient connectClient)
        {
            char x;
            int  y, rotation, size;

            Ship[] ships = new Ship[10];
            for (int i = 0; i < 10; i++)
            {
                size = GetSize(i);
                PrintStartWebGame(area);
                Console.WriteLine($"Розмір корабля: {size}");
                Console.WriteLine("Встановлення нового корабля");
                Console.Write("Напишіть координати корабля (маленька літера та координата)\nx = ");
                x = Console.ReadKey().KeyChar;
                Console.Write("\ny = ");
                if (!int.TryParse(Console.ReadLine(), out y))
                {
                    continue;
                }
                Console.Write("Вкажіть поворот корабля (0 - горизонтально, 1 - вертикально):");
                rotation = int.Parse(Console.ReadLine());
                ships[i] = new Ship(x - 'a', y - 1, rotation, size);
                if (area.SetShip(ships[i]))
                {
                    i--;
                }
            }
            PrintStartWebGame(area);
            connectClient.SendArea(ships);
        }
예제 #3
0
 static void RandomWebArea(VirtualArea area, ConnectClient connectClient)
 {
     Ship[] ships = new Ship[10];
     for (int i = 0; i < 10; i++)
     {
         ships[i] = new Ship(Random.Next(0, 10), Random.Next(0, 10), Random.Next(0, 2), GetSize(i));
         while (area.SetShip(ships[i]))
         {
             ships[i].X        = Random.Next(0, 10);
             ships[i].Y        = Random.Next(0, 10);
             ships[i].Rotation = Random.Next(0, 2);
         }
     }
     PrintStartWebGame(area);
     connectClient.SendArea(ships);
 }
예제 #4
0
 public static void Connect(ConnectClient connectClient)
 {
     Console.WriteLine("Your ID: {0}", MyId);
     Console.WriteLine("Оберіть режим роботи: 1 - пошук, 2 - очікування");
     if (Console.ReadLine() == "1")
     {
         int  number;
         bool res = true;
         do
         {
             Console.Write(connectClient.GetWaiters());
             Console.WriteLine("Очікується номер...");
             number = int.Parse(Console.ReadLine());
             if (number == -1)
             {
                 res = true;
                 continue;
             }
             res = connectClient.CreateConnection(number, out IdGame);
         } while (!res);
         connectID = number;
     }
     else
     {
         while (true)
         {
             string   res   = connectClient.WaitData();
             string[] wants = res.Split(' ');
             if (wants[0] == "CI")
             {
                 connectID = int.Parse(wants[1]);
                 break;
             }
         }
         IdGame = connectClient.GetGameId(connectID);
     }
     Console.WriteLine("Connection successful!{0} {1}", MyId, connectID);
     Game(connectClient);
 }