Programa C# rectángulo hueco Ayudaa!!!

Iniciado por RazaMex, 2 Marzo 2019, 07:42 AM

0 Miembros y 1 Visitante están viendo este tema.

RazaMex

// Tengo que hacer que mi programa haga un rectángulo hueco que tenga esta forma, lo único que he conseguido es que salga completo, ademas de que las X tienen que ir saliendo como hace mi programa, alguna idea de que puedo hace? D:
       
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        XX                                                                  XX
        XX                                                                  XX
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Código (csharp) [Seleccionar]



byte x=0, y=0;

for(y=10;y<=13;y++){
   for(x=10;x<=70;x++){

Console.SetCursorPosition(x,y);
Console.WriteLine(" X ");
x++;

       for(int w=0;w<=60000;w++){
            for(int z=0;z<=100;z++){
       
                                             }
}
  }
    }





Console.ReadKey(true);



Serapis

Considera un poco que es eso de 'rectángulo hueco'... 1,2,3...ya.
Son espacios, luego, hablamos de caracteres... si sabes poner 'x', supongo que también sabrás poner espacios ' ', luego es simplemente una cuestión aritmética de contar 'ovejitas' y 'cabras'...

Resuélvelo con lápiz y papel, luego codifica... intentado ceñirte a como lo has resuelto con lápiz y papel (seguir los pasos).

Eleкtro

#2
Tu duda me ha inspirado a llevar a cabo un tipo reutilizable que sirve para representar un rectángulo (dibujable)  en una aplicación de consola:


( puedes coger el código y usar cualquier conversor online a C#, o compilarlo en un archivo .dll y usarlo en tu proyecto de C#. )





Decisiones (o limitaciones) de diseño:

  • Las propiedades son de solo lectura (para quitarme de lios). Es decir, para hacer cambios en el tamaño o posición del rectángulo, hay que crear una nueva instancia. - ya no lo son
  • No permite la asignación de coordenadas negativas (puesto que tampoco lo permite el método Console.SetCursorPos()), ni un tamaño (anchura ni altura) igual a cero, aunque esto último no se tiene en cuenta si se usa el constructor por defecto.

Modo de empleo (con el que tomé la primera imagen):

Point rc1Pos = new Point(2, Console.CursorTop + 2);
ConsoleRectangle rc1 = new ConsoleRectangle(rc1Pos, new Size(32, 4), '▌', '▀', '▐', '▄');
rc1.Write();

Point rc2Pos = new Point(2, Console.CursorTop + 2);
ConsoleRectangle rc2 = new ConsoleRectangle(rc2Pos, new Size(32, 4), 'X', 'X', 'X', 'X');
rc2.Write();

Point rc3Pos = new Point(2, Console.CursorTop + 2);
ConsoleRectangle rc3 = new ConsoleRectangle(rc3Pos, new Size(11, 5), '▌', '▀', '▐', '▄');
rc3.Write();

Point rc4Pos = new Point(rc3Pos.X + (rc3.Width / 2), rc3Pos.Y + +(rc3.Height / 2));
ConsoleRectangle rc4 = new ConsoleRectangle(rc4Pos, rc3.Size, 'X', 'X', 'X', 'X');
rc4.Write();

Console.SetCursorPosition(rc1.X + 9, rc1.Y);
Console.Write(" Hello World ");
Console.SetCursorPosition(rc1.X + 6, rc1.Y + 2);
Console.Write(" By ElektroStudios ");

Console.CursorVisible = false;
Console.ReadKey(intercept:true);


Saludos.