Пример #1
0
 private void postProcessMap()
 {
     for (int iX = m_gameBoard.MinX; iX < m_gameBoard.MaxX; ++iX)
     {
         for (int iY = m_gameBoard.MinY; iY < m_gameBoard.MaxY; ++iY)
         {
             BombermanBasics.Field field = m_gameBoard.getField(iX, iY);
             if (field != null)
             {
                 field.IsExploding = false;
             }
         }
     }
 }
Пример #2
0
        void processExplodedFields(int teamIdx, Team team, ExplosionFieldCollector explodedFields)
        {
            int exceptionCntr = 0;

            while (!explodedFields.isEmpty())
            {
                ++exceptionCntr;
                if (exceptionCntr > 1000)
                {
                    throw new Exception("GameController.processExplodedFields(): counter error");
                }
                List <ExplosionFieldCollector.OrderedFields> fieldsOrderedByDistance = explodedFields.popTheLeastTimeFactor();
                ExplosionFieldCollector.OrderedFields[]      fieldsOrderedByDist     = fieldsOrderedByDistance.ToArray();
                int distance          = (fieldsOrderedByDistance.Count > 0) ? (fieldsOrderedByDist[0].DistanceFactor) : 0;
                int distancePointCntr = 0;
                for (int i = 0; i < fieldsOrderedByDist.Length; ++i)
                {
                    BombermanBasics.Field currentField = fieldsOrderedByDist[i].FieldP;
                    if (currentField != null)
                    {
                        List <BombermanBasics.Team> killedTeams;
                        currentField.killTeamsOnField(out killedTeams);
                        currentField.clearBombs();  //these bombs are now exploded

                        foreach (Team killedTeam in killedTeams)
                        {
                            int oldPoints = killedTeam.Points;
                            killedTeam.Points = oldPoints + distancePointCntr;    //the survived teams got their points
                        }
                        foreach (Team survivedTeam in m_teams)
                        {
                            int oldPoints = survivedTeam.Points;
                            survivedTeam.Points = oldPoints + GetNumberOfTeamsDead();    //the survived teams got their points
                        }
                    }
                    if (fieldsOrderedByDist[i].DistanceFactor > distance)
                    {
                        distance = fieldsOrderedByDist[i].DistanceFactor;
                        distancePointCntr++;
                    }
                }
            }
        }