private int CompareHeight(MapCoordonates a, MapCoordonates b) { return(b.Y - a.Y); }
private void FindCaves() { if (map != null) { for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { if (map[i, j] == 0 && CheckIfInList(i, j, coordonatesAlreadyChecked) == false) { List <MapCoordonates> currentCaveAreaList = new List <MapCoordonates>(); List <MapCoordonates> coordonatesToCheckList = new List <MapCoordonates>(); MapCoordonates coord = new MapCoordonates(i, j); coord.Origin = new MapCoordonates(0, 0); coordonatesToCheckList.Add(coord); while (coordonatesToCheckList.Count > 0) { MapCoordonates testCoord = coordonatesToCheckList[0]; //Test au dessus if (map[testCoord.X, testCoord.Y - 1] == 0 && CheckIfInList(testCoord.X, testCoord.Y - 1, currentCaveAreaList) == false && CheckIfInList(testCoord.X, testCoord.Y - 1, coordonatesToCheckList) == false) { MapCoordonates newCoord = new MapCoordonates(testCoord.X, testCoord.Y - 1); newCoord.Origin = testCoord; coordonatesToCheckList.Add(newCoord); } //Test à droite if (map[testCoord.X + 1, testCoord.Y] == 0 && CheckIfInList(testCoord.X + 1, testCoord.Y, currentCaveAreaList) == false && CheckIfInList(testCoord.X + 1, testCoord.Y, coordonatesToCheckList) == false) { MapCoordonates newCoord = new MapCoordonates(testCoord.X + 1, testCoord.Y); newCoord.Origin = testCoord; coordonatesToCheckList.Add(newCoord); } //Test en bas if (map[testCoord.X, testCoord.Y + 1] == 0 && CheckIfInList(testCoord.X, testCoord.Y + 1, currentCaveAreaList) == false && CheckIfInList(testCoord.X, testCoord.Y + 1, coordonatesToCheckList) == false) { MapCoordonates newCoord = new MapCoordonates(testCoord.X, testCoord.Y + 1); newCoord.Origin = testCoord; coordonatesToCheckList.Add(newCoord); } //Test à gauche if (map[testCoord.X - 1, testCoord.Y] == 0 && CheckIfInList(testCoord.X - 1, testCoord.Y, currentCaveAreaList) == false && CheckIfInList(testCoord.X - 1, testCoord.Y, coordonatesToCheckList) == false) { MapCoordonates newCoord = new MapCoordonates(testCoord.X - 1, testCoord.Y); newCoord.Origin = testCoord; coordonatesToCheckList.Add(newCoord); } coordonatesToCheckList.Remove(testCoord); currentCaveAreaList.Add(testCoord); coordonatesAlreadyChecked.Add(testCoord); } print(currentCaveAreaList.Count); Cave cave = new Cave(this, currentCaveAreaList); cavesList.Add(cave); } } } } print(cavesList.Count); }