public static void Imprimir(string url) { bool[,] b = LectorArchivo.TableroInicial(url); int width = b.GetLength(0); //variabe que representa el ancho del tablero int height = b.GetLength(1); //variabe que representa altura del tablero while (true) { Console.Clear(); StringBuilder s = new StringBuilder(); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { if (b[x, y]) { s.Append("|X|"); } else { s.Append("___"); } } s.Append("\n"); } Console.WriteLine(s.ToString()); //================================================= b = Reglas.Logica(b); //Invocar método para calcular siguiente generación //================================================= Thread.Sleep(300); } }
public static Logica() { bool[,] gameBoard = LectorArchivo.TableroInicial(); int boardWidth = gameBoard.GetLength(0); int boardHeight = gameBoard.GetLength(1); bool[,] cloneboard = new bool[boardWidth, boardHeight]; for (int x = 0; x < boardWidth; x++) { for (int y = 0; y < boardHeight; y++) { int aliveNeighbors = 0; for (int i = x - 1; i <= x + 1; i++) { for (int j = y - 1; j <= y + 1; j++) { if (i >= 0 && i < boardWidth && j >= 0 && j < boardHeight && gameBoard[i, j]) { aliveNeighbors++; } } } if (gameBoard[x, y]) { aliveNeighbors--; } if (gameBoard[x, y] && aliveNeighbors < 2) { //Celula muere por baja población cloneboard[x, y] = false; } else if (gameBoard[x, y] && aliveNeighbors > 3) { //Celula muere por sobrepoblación cloneboard[x, y] = false; } else if (!gameBoard[x, y] && aliveNeighbors == 3) { //Celula nace por reproducción cloneboard[x, y] = true; } else { //Celula mantiene el estado que tenía cloneboard[x, y] = gameBoard[x, y]; } } } gameBoard = c; gameBoard = cloneboard; cloneboard = new bool[boardWidth, boardHeight]; return(c); }
static void Main(string[] args) { Reglas.Logica(LectorArchivo.TableroInicial("..\\glider.txt")); Printer.Imprimir("..\\glider.txt"); }