Ejemplo n.º 1
0
 /// <summary>
 /// Устанавливает состояние клеток по точкам
 /// </summary>
 /// <param name="state">Состояние клетки</param>
 /// <param name="cells">Перечисление точек</param>
 private void SetCellState(CellStatе state, params Vector[] cells)
 {
     foreach (Vector с in cells)
     {
         _arragment[(int)с.X, (int)с.Y] = state;
     }
 }
Ejemplo n.º 2
0
 public void SetShotResult(CellStatе state, int x, int y)
 {
     if (PlayerRole == PlayerRole.Server)
     {
         Game.ClientShipArrangement.SetCellState(state, x, y);
     }
     else
     {
         EnemyArrangement.SetCellState(state, x, y);
     }
 }
Ejemplo n.º 3
0
        public CellStatе CheckShot(Vector coords)
        {
            CellStatе newState = CellStatе.Water;

            if (PlayerRole == PlayerRole.Server)
            {
                switch (Game.ServerShipArrangement.GetCellState(coords))
                {
                case CellStatе.Water:
                    newState = CellStatе.WoundedWater;
                    Game.ServerShipArrangement.SetCellState(newState, (int)coords.X, (int)coords.Y);
                    break;

                case CellStatе.Ship:
                    newState = CellStatе.WoundedShip;
                    Game.ServerShipArrangement.SetCellState(newState, (int)coords.X, (int)coords.Y);
                    break;
                }
            }
            else
            {
                switch (MyArrangement.GetCellState(coords))
                {
                case CellStatе.Water:
                    newState = CellStatе.WoundedWater;
                    MyArrangement.SetCellState(newState, (int)coords.X, (int)coords.Y);
                    break;

                case CellStatе.Ship:
                    newState = CellStatе.WoundedShip;
                    MyArrangement.SetCellState(newState, (int)coords.X, (int)coords.Y);
                    break;
                }
            }
            Connect.SendOperation(PlayerRole, OpearationTypes.ShotResult, new ShotResult(newState));
            return(newState);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Устанавливает состояние клетки по точке
 /// </summary>
 /// <param name="state">Состояние клетки</param>
 /// <param name="vector">Точка на игровом поле</param>
 private void SetCellState(CellStatе state, Vector vector)
 {
     _arragment[(int)vector.X, (int)vector.Y] = state;
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Устанавливает состояние клетки по 2 координатам
 /// </summary>
 /// <param name="state">Состояние клетки</param>
 /// <param name="vertical">Координаты по вертикали</param>
 /// <param name="horizontal">Координаты по горизонтали</param>
 public void SetCellState(CellStatе state, int vertical, int horizontal)
 {
     _arragment[vertical, horizontal] = state;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Инициализирует объект результата выстрела
 /// </summary>
 /// <param name="state">Состояние клетки</param>
 public ShotResult(CellStatе state)
 {
     State = state;
 }
Ejemplo n.º 7
0
        public static ShipArrangement ByteToArrangement(string str)
        {
            byte[] input = new byte[25];
            for (int i = 0; i < 25; i++)
            {
                input[i] = HexToByte(str[2 * i].ToString() + str[2 * i + 1]);
            }
            ShipArrangement result = new ShipArrangement();

            CellStatе[] map = new CellStatе[100];
            for (int i = 0; i < 25; i++)
            {
                bool[] tmp = CryptSystem.ByteToBool(input[i]);
                if (tmp[0])
                {
                    if (tmp[1])
                    {
                        map[4 * i] = CellStatе.WoundedShip;
                    }
                    else
                    {
                        map[4 * i] = CellStatе.Ship;
                    }
                }
                else
                {
                    if (tmp[1])
                    {
                        map[4 * i] = CellStatе.WoundedWater;
                    }
                    else
                    {
                        map[4 * i] = CellStatе.Water;
                    }
                }
                if (tmp[2])
                {
                    if (tmp[3])
                    {
                        map[4 * i + 1] = CellStatе.WoundedShip;
                    }
                    else
                    {
                        map[4 * i + 1] = CellStatе.Ship;
                    }
                }
                else
                {
                    if (tmp[3])
                    {
                        map[4 * i + 1] = CellStatе.WoundedWater;
                    }
                    else
                    {
                        map[4 * i + 1] = CellStatе.Water;
                    }
                }
                if (tmp[4])
                {
                    if (tmp[5])
                    {
                        map[4 * i + 2] = CellStatе.WoundedShip;
                    }
                    else
                    {
                        map[4 * i + 2] = CellStatе.Ship;
                    }
                }
                else
                {
                    if (tmp[5])
                    {
                        map[4 * i + 2] = CellStatе.WoundedWater;
                    }
                    else
                    {
                        map[4 * i + 2] = CellStatе.Water;
                    }
                }
                if (tmp[6])
                {
                    if (tmp[7])
                    {
                        map[4 * i + 3] = CellStatе.WoundedShip;
                    }
                    else
                    {
                        map[4 * i + 3] = CellStatе.Ship;
                    }
                }
                else
                {
                    if (tmp[7])
                    {
                        map[4 * i + 3] = CellStatе.WoundedWater;
                    }
                    else
                    {
                        map[4 * i + 3] = CellStatе.Water;
                    }
                }
            }
            CellStatе[,] a = Bending <CellStatе>(map, 10, 10);
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    result.SetCellState(a[i, j], i, j);
                }
            }
            return(result);
        }