static void Main(string[] args) { MineSweeper juego = new MineSweeper(10); MineSweeperGUI g = new MineSweeperGUI(juego); Jugar(g); }
static void MineSweeperGUI_Dibujar(MineSweeperGUI gui) { MineSweeperGUI_DibujarTablero(gui); Console.WriteLine($"Banderas Restantes {gui.Juego.CantBanderasRestantes:D3}"); Console.WriteLine($"Movimiento = Flechas"); Console.WriteLine($"Colocar Bandera = Espacio"); Console.WriteLine($"Descubrir = Enter"); }
static void MineSweeperGUI_Actualizar(MineSweeperGUI gui) { MineSweeperGUI_ActualizarInput(gui); if (gui.Input.DescubrirCelda) { MineSweeper_DescubrirCelda(gui.Juego, gui.Input.CurPosFil, gui.Input.CurPosCol); } if (gui.Input.PonerBandera) { MineSweeper_UbicarBandera(gui.Juego, gui.Input.CurPosFil, gui.Input.CurPosCol); } }
static void Jugar(MineSweeperGUI gui) { MineSweeper_ColocarMinas(gui.Juego); MineSweeperGUI_Dibujar(gui); while (!MineSweeper_EsFinDelJuego(gui.Juego)) { MineSweeperGUI_Actualizar(gui); MineSweeper_ValidarTablero(gui.Juego); if (gui.Input.Cambio) { MineSweeperGUI_Dibujar(gui); } Thread.Sleep(16); } Console.WriteLine(gui.Juego.EsVictoria ? "Victoria!" : "Derrota!"); Console.ReadLine(); }
static void MineSweeperGUI_DibujarTablero(MineSweeperGUI gui) { Console.SetCursorPosition(0, 0); for (int fila = 0; fila < gui.Juego.Celdas.GetLength(0); fila++) { for (int columna = 0; columna < gui.Juego.Celdas.GetLength(1); columna++) { if (fila == gui.Input.CurPosFil && columna == gui.Input.CurPosCol) { Console.BackgroundColor = ConsoleColor.DarkCyan; Console.ForegroundColor = ConsoleColor.Black; } MineSweeperGUI_DibujarCelda(gui.Juego.Celdas[fila, columna]); Console.ResetColor(); } Console.WriteLine(); } }
//---------------------------------------------------------------------------------- //MineSweeperGUI //---------------------------------------------------------------------------------- static void MineSweeperGUI_ActualizarInput(MineSweeperGUI gui) { Input_Reset(gui.Input); if (Console.KeyAvailable) { gui.Input.Cambio = true; switch (Console.ReadKey(true).Key) { case ConsoleKey.UpArrow: gui.Input.CurPosFil--; break; case ConsoleKey.DownArrow: gui.Input.CurPosFil++; break; case ConsoleKey.LeftArrow: gui.Input.CurPosCol--; break; case ConsoleKey.RightArrow: gui.Input.CurPosCol++; break; case ConsoleKey.Spacebar: gui.Input.PonerBandera = true; break; case ConsoleKey.Enter: gui.Input.DescubrirCelda = true; break; } gui.Input.CurPosFil = Math.Clamp(gui.Input.CurPosFil, 0, gui.Juego.Celdas.GetLength(0) - 1); gui.Input.CurPosCol = Math.Clamp(gui.Input.CurPosCol, 0, gui.Juego.Celdas.GetLength(1) - 1); } }