namespace Objetos1 { internal class PuntoDeCarreras { private int x; private int y; private char id; private static Random azar = new Random(); private static int meta; // Constructor public PuntoDeCarreras(int x, int y, char id) { this.x = x; this.y = y; this.id = id; } public PuntoDeCarreras(int x, int y) : this(x, y, 'x') { } public char getId() { return id; } public static void FijarMeta(int meta) { if (meta > 0 && meta < 110) PuntoDeCarreras.meta = meta; } public static int getMeta() { return meta; } public bool Avanzar(int potencia) { if (meta > 0) if (potencia >= 1 && potencia <= 10) x += azar.Next(1, potencia + 1); return x >= meta; } // Muestra el punto con su propio caracter en la coordenada public void Mostrar() { //Console.SetCursorPosition(x, y); //Console.Write(id); Imprimir(id); } public void Ocultar() { //Console.SetCursorPosition(x, y); //Console.Write(' '); Imprimir(' '); } // Creada para no repetir el interior de la función Mostrar() y Ocultar() public void Imprimir(char ch) { Console.SetCursorPosition(x, y); Console.Write(ch); } public static void PruebaPuntoDeCarreras() { PuntoDeCarreras[] competidores = { new PuntoDeCarreras(5, 5, 'ñ'), new PuntoDeCarreras(5, 7, '*'), new PuntoDeCarreras(5, 9, 'o'), new PuntoDeCarreras(5, 11, '>') }; char pulsacion; bool fin = false; PuntoDeCarreras.FijarMeta(100); for (int i = 0; i < 10; i++) { Console.SetCursorPosition(PuntoDeCarreras.getMeta(), i); Console.Write('|'); } foreach (PuntoDeCarreras p in competidores) p.Mostrar(); pulsacion = Console.ReadKey().KeyChar; while (pulsacion != 'q' && !fin) { foreach (PuntoDeCarreras p in competidores) p.Ocultar(); fin = false; foreach (PuntoDeCarreras p in competidores) { p.Ocultar(); fin = fin || p.Avanzar(10); p.Mostrar(); } pulsacion = Console.ReadKey().KeyChar; } Console.WriteLine("Adiós"); } } }