Introducción a C#
Por Nacho Cabanes, versión 0.93 de 16-abr-2010


(Nota: Estás viendo una versión del curso antigua, creada en 2009. Es recomendable que sigas la versión 2015, mucho más actualizada, con contenidos más detallados, más ejemplos y más ejercicios propuestos)

10.1. Más posibilidades de la "consola"

En "Console" hay mucho más que ReadLine y WriteLine, aunque quizá no todas las posibilidades estén contempladas en implementaciones "alternativas", como las primeras versiones de Mono. Vamos a ver algunas de las posibilidades que nos pueden resultar más útiles:

/*---------------------------*/
/*  Ejemplo en C#            */
/*  consola.cs               */
/*                           */
/*  Más posibilidades de     */
/*     "System.Console"      */
/*                           */
/*  Introduccion a C#,       */
/*    Nacho Cabanes          */
/*---------------------------*/
 
using System;
 
public class consola
{
  public static void Main()
  {
    int posX, posY;
 
    Console.Title = "Ejemplo de consola";
    Console.BackgroundColor = ConsoleColor.Green;
    Console.ForegroundColor = ConsoleColor.Black;
    Console.Clear();
 
    posY = 10;  // En la fila 10
    Random r = new Random(DateTime.Now.Millisecond);
    posX = r.Next(20, 40); // Columna al azar entre 20 y 40
    Console.SetCursorPosition(posX, posY);
    Console.WriteLine("Bienvenido");
 
    Console.ForegroundColor = ConsoleColor.Blue;
    Console.SetCursorPosition(10, 15);
    Console.Write("Pulsa 1 o 2: ");
    ConsoleKeyInfo tecla;
    do 
    {
      tecla = Console.ReadKey(false);
    } 
    while ((tecla.KeyChar != '1') && (tecla.KeyChar != '2'));
 
    int maxY = Console.WindowHeight;
    int maxX = Console.WindowWidth;
    Console.SetCursorPosition(maxX-50, maxY-1);
    Console.ForegroundColor = ConsoleColor.Red;
    Console.Write("Pulsa una tecla para terminar... ");    
    Console.ReadKey(true);
 
  }
}
 
 

(Nota: si se prueba este fuente desde Mono, habrá que compilar con "gmcs" en vez de con "mcs", para compilar usando la versión 2.x de la plataforma .Net, no la 1.x, que no tenía estas posibilidades).

Para comprobar el valor de una tecla, como se ve en el ejemplo anterior, tenemos que usar una variable de tipo "ConsoleKeyInfo" (información de tecla de consola). Un ConsoleKeyInfo tiene campos como:

Los colores que tenemos disponibles (y que se deben escribir precedidos con "ConsoleColor") son: Black (negro), DarkBlue (azul marino), DarkGreen (verde oscuro) DarkCyan (verde azulado oscuro), DarkRed (rojo oscuro), DarkMagenta (fucsia oscuro o púrpura), DarkYellow (amarillo oscuro u ocre), Gray (gris), DarkGray (gris oscuro), Blue (azul), Green (verde), Cyan (aguamarina o verde azulado claro), Red (rojo), Magenta (fucsia), Yellow (amarillo), White (blanco).

if ((tecla.Modifiers & ConsoleModifiers.Alt) != 0)  
  Console.Write("Has pulsado Alt");