Skip to content
Snippets Groups Projects
Select Git revision
  • ffefdb0118c947aed8fd2acaf980eb8d3a0b6948
  • main default protected
  • correction_video
  • going_further
  • ImprovedMouseInteraction
  • final2023
  • template
  • ModifGUI
8 results

ConstantCellInitializer.java

Blame
  • Forked from YAGOUBI Rim / Game of life Template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    MountainGenerator.java 1.98 KiB
    package model.Obstacle;
    
    import model.ElementGenerator;
    import util.Position;
    
    import java.util.Random;
    
    import static model.Board.BoardFireFighterBehavior.getTerrainMap;
    
    public class MountainGenerator implements ElementGenerator {
        @Override
        public void generateElement(int rowCount, int columnCount) {
            Random random = new Random();
            int maxMountains = 5; // Par exemple, générer 5 blocs de montagnes
            int blockSize = 4; // Taille du bloc de montagnes (4 cases)
    
            for (int i = 0; i < maxMountains; i++) {
                // Générer un coin aléatoire pour chaque bloc de montagne (en s'assurant que les blocs ne dépassent pas la grille)
                int startRow = random.nextInt(rowCount - 1);  // -1 pour éviter le débordement
                int startCol = random.nextInt(columnCount - 1);
    
                // Vérifier si les cases sont libres avant d'y placer une montagne
                if (canPlaceMountainBlock(startRow, startCol)) {
                    // Placer les montagnes sur la grille
                    placeMountainBlock(startRow, startCol);
                }
            }
    
        }
        private boolean canPlaceMountainBlock(int startRow, int startCol) {
            // Vérifier si les 4 cases sont libres
            for (int row = startRow; row < startRow + 2; row++) {
                for (int col = startCol; col < startCol + 2; col++) {
                    Position pos = new Position(row, col);
                    if (getTerrainMap().containsKey(pos)) {
                        return false; // Une case est déjà occupée
                    }
                }
            }
            return true; // Toutes les cases sont libres
        }
    
        private void placeMountainBlock(int startRow, int startCol) {
            // Placer les 4 cases de montagne
            for (int row = startRow; row < startRow + 2; row++) {
                for (int col = startCol; col < startCol + 2; col++) {
                    Position pos = new Position(row, col);
                    getTerrainMap().put(pos, new Mountain(pos));
                }
            }
        }
    }