Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: RazaMex en 2 Marzo 2019, 07:42 am



Título: Programa C# rectángulo hueco Ayudaa!!!
Publicado por: RazaMex en 2 Marzo 2019, 07:42 am
// 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
  1.  
  2.  
  3. byte x=0, y=0;
  4.  
  5. for(y=10;y<=13;y++){
  6.   for(x=10;x<=70;x++){
  7.  
  8. Console.SetCursorPosition(x,y);
  9. Console.WriteLine(" X ");
  10. x++;
  11.  
  12.       for(int w=0;w<=60000;w++){
  13.            for(int z=0;z<=100;z++){
  14.  
  15.                                             }
  16. }
  17.  }
  18.    }
  19.  
  20.  
  21.  
  22.  
  23.  
  24. Console.ReadKey(true);
  25.  
  26.  
  27.  


Título: Re: Programa C# rectángulo hueco Ayudaa!!!
Publicado por: Serapis en 2 Marzo 2019, 10:09 am
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).


Título: Re: Programa C# rectángulo hueco Ayudaa!!!
Publicado por: Eleкtro en 2 Marzo 2019, 23:27 pm
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:

  • https://foro.elhacker.net/net/libreria_de_snippets_para_vbnet_compartan_aqui_sus_snippets-t378770.0.html;msg2186824#msg2186824

( 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#. )

(https://i.imgur.com/f0r5z6K.png)

(https://i.imgur.com/aMxfrw8.png)

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):

Código:
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.