Пример #1
0
        public void MoveMarble(WarMarble marble, int x, int y)
        {
            Tile oldTile     = _tiles[marble.Position.X, marble.Position.Y];
            var  newPosition = new TileCoordinate(marble.Position.X + x, marble.Position.Y + y);
            Tile newTile     = _tiles[newPosition.X, newPosition.Y];

            oldTile.Element = null;
            newTile.Element = marble;
            marble.Position = newPosition;
        }
Пример #2
0
        public Grid(WarTeam leftTeam, WarTeam rightTeam, RandomService randomService)
        {
            int totalContestants = leftTeam.Marbles.Count + rightTeam.Marbles.Count;

            _width  = 2 * totalContestants + 2;
            _height = 2 * totalContestants + 1;
            _tiles  = new Tile[_width, _height];

            for (int i = 0; i < _width; i++)
            {
                for (int j = 0; j < _height; j++)
                {
                    _tiles[i, j] = new Tile();
                }
            }

            for (int teamIndex = 0; teamIndex < leftTeam.Marbles.Count; teamIndex++)
            {
                WarMarble leftMarble = leftTeam.Marbles.ElementAt(teamIndex);
                leftMarble.Position = new TileCoordinate(0, 2 + teamIndex * 2);
                _tiles[leftMarble.Position.X, leftMarble.Position.Y].Element = leftMarble;

                WarMarble rightMarble = rightTeam.Marbles.ElementAt(teamIndex);
                rightMarble.Position = new TileCoordinate(_width - 1, 2 + teamIndex * 2);
                _tiles[rightMarble.Position.X, rightMarble.Position.Y].Element = rightMarble;
            }

            for (int i = 0; i < totalContestants; i++)
            {
                int row, column;
                do
                {
                    row    = randomService.Rand.Next(0, _width);
                    column = randomService.Rand.Next(0, _height);
                }while (_tiles[row, column].Element != null);

                _tiles[row, column].Element = new Rock()
                {
                    Position = new TileCoordinate(row, column)
                };
            }
        }
Пример #3
0
 public static bool IsWithinDistance(WarMarble marble1, WarMarble marble2, int distance)
 {
     return(Math.Abs(marble1.Position.X - marble2.Position.X) + Math.Abs(marble1.Position.Y - marble2.Position.Y) <= distance);
 }