He estado tratando de crear un sistema de enrutamiento fluvial con una cuadrícula para simplificar todo. Lo que necesito hacer es encontrar todas las rutas posibles que sigan el río durante x celdas. En este momento, he seguido tutoriales para crear un sistema de búsqueda de rutas que encuentra todos los ríos que se conectan con el punto de partida. Además, mis ríos son pequeños ruidos sordos, no líneas.
Mi código en este momento verifica todos sus vecinos y los colorea de amarillo, luego ejecuta la función nuevamente en la celda coloreada. Esto se repite hasta que se enruta la pieza de río completa. Lo que quiero que haga es encontrar todos los vecinos de la celda inicial en forma de cuadrado. Luego quiero que vuelva a encontrar todos los vecinos de los vecinos que son ríos a la manera de un cuadrado.
Básicamente, quiero que el enrutamiento encuentre todas las celdas de río en cuadrados perfectos. Entonces crea un cuadrado alrededor de la celda inicial para encontrar celdas de río. Luego crea un cuadrado alrededor para encontrar más cuadrados y así sucesivamente. También la ruta final creada debe estar conectada. Lo que expliqué tiene sentido matemático, pero es difícil de explicar.
Esto funciona. Además, .bee es básicamente .river, el tutorial que estaba siguiendo tenía bee como variable, así que seguí la corriente. y hay 2 marcas. 1 para que sea rojo cuando haga clic en la celda de inicio. Y segundo hacer que el camino encontrado sea amarillo.
Aquí está mi código ahora mismo:
Cell.prototype.mark = function(x,y){ this.marked = true; if (this.bee) { this.floodFill(); } } var done = 0; Cell.prototype.floodFill = function() { for (var xoff = -1; xoff <= 1; xoff++) { for (var yoff = -1; yoff <= 1; yoff++) { var i = this.i + xoff; var j = this.j + yoff; if (i > -1 && i < cols && j > -1 && j < rows) { var neighbour = grid[i][j]; if (neighbour.bee && !neighbour.marked2) { neighbour.marked2 = true; neighbour.floodFill(); } } } } done++ console.log("D"+done); }