Ejemplo n.º 1
0
 /// <summary>
 /// Plants new bomb on map
 /// </summary>
 /// <param name="bomb"></param>
 public void Plant(Bomb bomb)
 {
     if (Bombs.FirstOrDefault(x => x.Position.X == bomb.Position.X && x.Position.Y == bomb.Position.Y) == null)
     {
         Fields[bomb.Position.X, bomb.Position.Y].Bomb = bomb;
         Bombs.Add(bomb);
     }
 }
Ejemplo n.º 2
0
 private void WindowKeyPressed(object sender, KeyEventArgs e)
 {
     if (e.Code == Keyboard.Key.F3)
     {
         DisplayDebug = !DisplayDebug;
     }
     if (e.Code == Keyboard.Key.Space && PlayerOne.CanDropBomb)
     {
         Bombs.Add(PlayerOne.DropBomb(GameTime.TotalTimeElapsed));
     }
     PlayerOne.KeyUpControls(e);
 }
Ejemplo n.º 3
0
 public void AddBomb(Side side, int src, int dst, int remaining)
 {
     if (side == Side.MyOwn)
     {
         Bombs.Add(new Bomb
         {
             Side      = side,
             Dst       = dst,
             Remaining = remaining,
             Src       = src
         });
     }
 }
Ejemplo n.º 4
0
 private void BombShoot()
 {
     lock (Lasers)
     {
         BombSound.Play();
         BombCounter++;
         var bomb = new Bomb {
             Shape = { Position = Center }
         };
         bomb.CurrentVelocity = AimDirectionNormal * bomb.MaxVelocity;
         Bombs.Add(bomb);
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Placing bombs on the map
 /// </summary>
 public void PlaceBomb(Map Map)
 {
     if (NumberOfBombs > Bombs.Count)
     {
         if (!Map.Tiles[Key].ContainsBomb)
         {
             Map.Tiles[Key].ContainsBomb = true;
             Map.Tiles[Key].WhoPlaced    = this;
             Bomb nova = new Bomb(Map.Tiles[Key].Rectangle.Location, ExplosionRadius);
             Bombs.Add(Key, nova);
             Map.placedBombs.Add(Key, nova);
         }
     }
 }
        private void CreateBoard()
        {
            var rnd = new Random();

            for (var i = 0; i < 20; i++)
            {
                for (var j = 0; j < 20; j++)
                {
                    var    rand = rnd.Next(25) + 1;
                    string text;
                    switch (rand)
                    {
                    case 1:
                        text = "1";
                        break;

                    case 2:
                        text = "2";
                        break;

                    case 3:
                        text = "3";
                        break;

                    case 4:
                        text = "4";
                        break;

                    case 5:
                        text = "5";
                        break;

                    default:
                        text = "";
                        break;
                    }
                    var x = rnd.Next(Width - 80);
                    var y = rnd.Next(Height - 50);
                    Bombs.Add(new Bomb
                    {
                        BombId         = text,
                        BombCanvasLeft = x,
                        BombCanvasTop  = y,
                    });
                }
            }
        }
        public int SetBombs()
        {
            int checker = 0;

            for (int i = 0; i < MyWindow.mapa.Grid.Count; i++)
            {
                for (int j = 0; j < MyWindow.mapa.Grid[i].Count; j++)
                {
                    if (MyWindow.mapa.Grid[i][j].WybranaBomba == true)
                    {
                        Bombs.Add(MyWindow.mapa.Grid[i][j]);//agregacja
                        MyWindow.mapa.Grid[i][j].WybranaBomba = false;
                        checker += 1;
                    }
                }
            }
            return(checker);
        }
Ejemplo n.º 8
0
 public void Start(Texture2D bomb_texture, GameTime gametime, SpriteBatch spritebatch)
 {
     if (Teachers.Count != 0)
     {
         int randx = random.Next(832, 4928);
         spawn += (float)gametime.ElapsedGameTime.TotalSeconds;
         if (spawn >= 1)
         {
             spawn = 0;
             if (Bombs.Count() < 30)
             {
                 Bombs.Add(new BombQuestion(bomb_texture, new Vector2(randx, 0), spritebatch));
             }
         }
     }
     else
     {
         Bombs.Clear();
     }
 }
Ejemplo n.º 9
0
 public void AddBomb(Bomb bomb)
 {
     Bombs.Add(bomb);
     CellDict[bomb.pos].Bomb = bomb;
 }
Ejemplo n.º 10
0
        public void GenerateBombs()
        {
            foreach (Bomb bomb in Bombs)
            {
                if (!(GameMap.MapUnits[bomb.UnitPosition.Row, bomb.UnitPosition.Column] is Snake))
                {
                    GameMap.RemoveUnit(bomb.UnitPosition);
                }
            }
            Bombs.Clear();

            Random random = new Random();
            int    aux    = random.Next(100);

            if (aux < 60) // place one Bomb
            {
                bool canPut = false;
                while (!canPut)
                {
                    Random rdRow     = new Random();
                    Random rdColumn  = new Random();
                    int    auxRow    = rdRow.Next(GameMap.NumberOfRows);
                    int    auxColumn = rdColumn.Next(GameMap.NumberOfColumns);
                    if (GameMap.MapUnits[auxRow, auxColumn] == null &&
                        (((auxRow - SnakeParts[0].UnitPosition.Row) < -2) || ((auxRow - SnakeParts[0].UnitPosition.Row) > 2) ||
                         ((auxColumn - SnakeParts[0].UnitPosition.Column) < -2) || ((auxColumn - SnakeParts[0].UnitPosition.Column) > 2)))
                    {
                        GameMap.AddUnit(new Bomb(new Position(auxRow, auxColumn)));
                        Bombs.Add(new Bomb(new Position(auxRow, auxColumn)));
                        canPut = true;
                    }
                }
            }
            else // place two bombs
            {
                bool canPut = false;
                while (!canPut)
                {
                    Random rdRow1     = new Random();
                    Random rdColumn1  = new Random();
                    Random rdRow2     = new Random();
                    Random rdColumn2  = new Random();
                    int    auxRow1    = rdRow1.Next(GameMap.NumberOfRows);
                    int    auxColumn1 = rdColumn1.Next(GameMap.NumberOfColumns);
                    int    auxRow2    = rdRow2.Next(GameMap.NumberOfRows);
                    int    auxColumn2 = rdColumn2.Next(GameMap.NumberOfColumns);
                    if ((auxRow1 != auxRow2 || auxColumn1 != auxColumn2) &&
                        GameMap.MapUnits[auxRow1, auxColumn1] == null && GameMap.MapUnits[auxRow2, auxColumn2] == null &&
                        (((auxRow1 - SnakeParts[0].UnitPosition.Row) < -2) || ((auxRow1 - SnakeParts[0].UnitPosition.Row) > 2) ||
                         ((auxColumn1 - SnakeParts[0].UnitPosition.Column) < -2) || ((auxColumn1 - SnakeParts[0].UnitPosition.Column) > 2)) &&
                        (((auxRow2 - SnakeParts[0].UnitPosition.Row) < -2) || ((auxRow2 - SnakeParts[0].UnitPosition.Row) > 2) ||
                         ((auxColumn2 - SnakeParts[0].UnitPosition.Column) < -2) || ((auxColumn2 - SnakeParts[0].UnitPosition.Column) > 2)))
                    {
                        GameMap.AddUnit(new Bomb(new Position(auxRow1, auxColumn1)));
                        Bombs.Add(new Bomb(new Position(auxRow1, auxColumn1)));
                        GameMap.AddUnit(new Bomb(new Position(auxRow2, auxColumn2)));
                        Bombs.Add(new Bomb(new Position(auxRow2, auxColumn2)));
                        canPut = true;
                    }
                }
            }
        }
Ejemplo n.º 11
0
    private void Run()
    {
        string[] inputs;
        inputs = Console.ReadLine().Split(' ');
        int width  = int.Parse(inputs[0]);
        int height = int.Parse(inputs[1]);

        MyID = int.Parse(inputs[2]);

        var   boxes   = new List <Coordinate>();
        Robot myRobot = new Robot();
        var   myBombs = new List <Bomb>();

        char[,] board = new char[HEIGHT, WIDTH];

        // game loop
        while (true)
        {
            boxes.Clear();
            myBombs.Clear();
            Bombs.Clear();

            Log("Board:");
            for (int i = 0; i < height; i++)
            {
                string row = Console.ReadLine();
                Log(row);
                for (int j = 0; j < width; j++)
                {
                    board[i, j] = row[j];
                    if (row[j].Equals(EMPTY_BOX) || row[j].Equals(RANGE_BOX) || row[j].Equals(BOMB_BOX))
                    {
                        boxes.Add(new Coordinate(j, i));
                    }
                }
            }

            Log("");
            int entities = int.Parse(Console.ReadLine());
            Log($"Entities: {entities}");
            Log("entityType owner x y param1 param2");
            for (int i = 0; i < entities; i++)
            {
                inputs = Console.ReadLine().Split(' ');
                int entityType = int.Parse(inputs[0]);                 // player: 0, bomb: 1
                int owner      = int.Parse(inputs[1]);
                int x          = int.Parse(inputs[2]);
                int y          = int.Parse(inputs[3]);
                int param1     = int.Parse(inputs[4]);              // num. of bombs, num. of rounds
                int param2     = int.Parse(inputs[5]);              // explosion range
                Log($"{entityType} {owner} {x} {y} {param1} {param2}");

                switch (entityType)
                {
                case 0:                         // player
                    if (owner == MyID)
                    {
                        // owner, x, y, num. of bombs, explosion range
                        myRobot.X = x;
                        myRobot.Y = y;
                        myRobot.AvailableBombs = param1;
                        myRobot.BombRange      = param2;
                    }
                    break;

                case 1:                         // bomb
                    var bomb = new Bomb(x, y, param1, param2);
                    if (owner == MyID)
                    {
                        // owner, x, y, num. of rounds to explode, explosion range
                        myBombs.Add(bomb);
                    }
                    Bombs.Add(bomb);
                    break;
                }
            }

            int[,] scoreBoard = GetScoreBoard(board, myRobot.BombRange);
            PrintScoreBoard(scoreBoard);

            Dictionary <int, List <Coordinate> > scoredDict = GetScoreDictionary(scoreBoard);

            int               closestDist = 0;
            Coordinate        closestBox  = null;
            List <Coordinate> places;
            for (int score = 4; score > 0; score--)
            {
                if (!scoredDict.TryGetValue(score, out places))
                {
                    continue;
                }

                foreach (Coordinate place in places)
                {
                    int tempDist = place.GetDistance(myRobot);
                    if (closestBox == null || closestDist > tempDist)
                    {
                        closestDist = tempDist;
                        closestBox  = place;
                    }
                }

                if (closestBox != null)
                {
                    break;
                }
            }

            Log($"Closest: {closestBox.X}, {closestBox.Y}");
            if (closestBox == null)
            {
                Console.WriteLine($"MOVE {myRobot.X} {myRobot.Y}");
            }
            else if (closestDist == 0 && myRobot.AvailableBombs > 0)
            {
                Console.WriteLine($"BOMB {closestBox.X} {closestBox.Y}");
            }
            else
            {
                Console.WriteLine($"MOVE {closestBox.X} {closestBox.Y}");
            }
        }
    }
Ejemplo n.º 12
0
 public void AddBomb(Bomb bomb)
 {
     Bombs.Add(bomb);
 }