/// <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; } }
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); } }
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); }
/// <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; }
/// <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; }
/// <summary> /// Инициализирует объект результата выстрела /// </summary> /// <param name="state">Состояние клетки</param> public ShotResult(CellStatе state) { State = state; }
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); }