/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

menu y triangulo a colores?

 
      Índice del Foro elrincondelc.com -> Gráficos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
kristho



Registrado: 02 Dic 2005
Mensajes: 20

MensajePublicado: 04/12/2005 11:25 pm
Título: menu y triangulo a colores?

Hola...Mis felicitaciones por el foro, esta de lujo, ojala puedan ayudarme con unos ejercicios en turbo c que se me han hecho dificiles:
-Cree un programa que permita dibujar un triangulo y por medio de un menu dar la posibilidad de colorear sus lineas de 4 colores diferentes.

Gracias por su ayuda..
Volver arriba
pitukilloloco



Registrado: 11 May 2005
Mensajes: 442

MensajePublicado: 04/12/2005 11:53 pm
Título:

Si usas Turbo C me imagino que vas a usar las funciones declaradas en el encabezado <graphics.h> ¿cierto?, entonces, si el objetivo del programa es que cambies el color de las líneas del triángulo y no tanto la interface, puedes implementarlo fácilmente haciendo un menú sencillo de texto y que el usuario digite las opciones, y cuando escoja alguna de ellas cambiar al modo gráfico, colorear el triángulo y depués volver al menú en modo texto. Si lo que quieres es hacer un menú en modo gráfico, entonces eso es, no tanto más difícil, sino más laborioso.
Volver arriba
kristho



Registrado: 02 Dic 2005
Mensajes: 20

MensajePublicado: 05/12/2005 12:04 am
Título:

Disculpa no puse el compilador, efectivamente es el turbo c, lo que debe salir es un menu para elegir el color, y despues aparecer el triangulo de ese color, ojala de la manera mas simple. La verdad es que necesito el codigo por que mis conocimientos son menos que basicos. Gracias.
Volver arriba
pitukilloloco



Registrado: 11 May 2005
Mensajes: 442

MensajePublicado: 05/12/2005 12:13 am
Título:

Bueno, ¿pero el menú puede estar en modo texto o debe estar en modo gráfico? y ¿que significa que sólo tienes conocimientos básicos? para hacer este programa necesitas haber visto las instrucciones de decisión, conocer y saber usar las funciones, saber las instrucciones de iteración y ciclos y haber visto las funciones principales de la librería cuyo encabezado es <graphics.h> ¿tienes alguna idea de cómo hacer el programa?
Volver arriba
kristho



Registrado: 02 Dic 2005
Mensajes: 20

MensajePublicado: 05/12/2005 12:24 am
Título:

El menu puede estar en modo texto(entiendo que de esta manera es mas simple), digo menos que basicos, por que acabo de empezar con este ramo hace como un mes en este momento vemos funciones, pero aun no las manejo, esta es una tarea que se me dio y luego tengo que explicar como opera al curso(disertarla), cada alumno recibio ejercicios distintos de materia que aun no pasamos, por lo cual no tengo idea de como hacerlo. Gracias.
Volver arriba
pitukilloloco



Registrado: 11 May 2005
Mensajes: 442

MensajePublicado: 05/12/2005 12:56 am
Título:

Bien, para la parte del menu primero tienes que ver qué opciones va a elegir el usuario. Si dices que el triángulo va a dibujarse con cuatro colores entonces se podría poner en el menú que el usuario digite del 1 al 5, donde 1, 2, 3 y 4 significa que se va a dibujar el triángulo de un color distinto y 5 es la opción para salir del programa. También vas a necesitar definir una función que dado un número te pinte un triángulo de un cierto color. Digamos que esta función se llama ColoreaVerticesTriangulo y acepta un número entero como parámetro, entonces tu menú podría quedar así
Código:

printf ("Dar una opción:\n");
printf ("\t(1) Triángulo Negro\n");
printf ("\t(2) Triángulo Azul\n");
printf ("\t(3) Triángulo Rojo\n");
printf ("\t(4) Triángulo Amarillo\n");   
printf ("\t(5) Salir\n");

pero esto sólo muestra el menú. Ahora hay que obtener el número que presionó el usuario. Para esto podemos usar la función getch() , definida en <conio.h> que espera hasta que el usuario presione una tecla sin hacer "eco" en la pantalla y después, ya obtenida esta tecla, hay que verificar que la tecla presionada está entre los números 1 y 5, y en caso de que se encuentre entre 1 y 4 llamar a la función que colorea el triángulo y si es 5 salirse del programa. Aquí está el código
Código:

char ch;

ch = getch ();
if (ch == '5')
   return;
else if (ch >= '1' && ch <= '4)
   ColoreaVerticesTriangulo (ch);

Ahora falta hacer la función, pero esto se puede hacer después. Por lo pronto con esto ya puedes intentar hacer el programa.
Volver arriba
kristho



Registrado: 02 Dic 2005
Mensajes: 20

MensajePublicado: 05/12/2005 7:49 pm
Título:

La idea seria hacer algo asi
Cita:
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void main()
{
int op;
clrscr();
printf("\n\n\tMENU PRINCIPAL\n");
printf("\t==============\n\n");
printf("\t1) Azul\n");
printf("\t2) Verde\n");
printf("\t3) Rojo\n");
printf("\t4) Amarillo\n");
printf("\t5) Salir\n");
printf("\nSeleccione color del triangulo(1-5): ");
scanf("%d",&op);

switch(op)
{
case 1:
break;

case 2:
break;

case 3:
break;

case 4:
break;

case 5:
break;

default:
printf("\nOpcion incorrecta");
}
getch();
}


y en cada case poner el triangulo del color correspondiente,pero aun no se como. Gracias.
Volver arriba
pitukilloloco



Registrado: 11 May 2005
Mensajes: 442

MensajePublicado: 06/12/2005 11:14 am
Título:

En el compilador de Turbo C v2.0 viene un ejemplo del uso de las funciones declaradas en <graphics.h>, el cual se llama BGIDEMO.C
Si usas otro compilador de de C o C++ de la compañía Borland que use esta librería gráfica entonces probablemente venga este programa o alguno parecido. Te paso una parte de este programa donde sólo se muestran triángulos dibujados al azar de distintos tamaños y colores. Revisa cómo se dibujan los triángulo y junto con el programa del menú que hiciste puedes terminar lo que quieres.
Código:

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>

#define ESC          0x1b        /* Define the escape key */

struct PTS {
  int x, y;
};  /* Structure to hold vertex points */

int    GraphDriver;        /* The Graphics device driver           */
int    GraphMode;          /* The Graphics mode value              */
int    ErrorCode;          /* Reports any graphics errors          */
struct palettetype palette;/* Used to read palette info            */
double AspectRatio;        /* Aspect ratio of a pixel on the screen*/
int    MaxX, MaxY;         /* The maximum resolution of the screen */
int    MaxColors;          /* The maximum # of colors available    */

/*                           */
/*   Function prototypes                  */
/*                           */

void Initialize(void);
void PolyDemo(void);
void Pause(void);
void StatusLine( char *msg );
void changetextstyle(int font, int direction, int charsize);

/*                           */
/*   Begin main function                  */
/*                           */

int main()
{
   printf ("\n\tPresione una tecla para cambiar a modo gr fico\n");
   printf ("y comenzar a dibujar los tri ngulos. Para regresar\n");
   printf ("al modo texto presiones cualquier tecla.");
   getch();

  Initialize();       /* Set system into Graphics mode   */

  PolyDemo();

  closegraph();       /* Return the system to text mode   */
  printf ("De vuelta al modo texto\n");
  printf ("Presione cualquier tecla para salir...\n");
  getch();
  return(0);
}

/*                           */
/*   INITIALIZE: Initializes the graphics system and reports    */
/*   any errors which occured.               */
/*                           */

void Initialize(void)
{
  int xasp, yasp;         /* Used to read the aspect ratio*/

  GraphDriver = DETECT;       /* Request auto-detection   */
  initgraph( &GraphDriver, &GraphMode, "" );
  ErrorCode = graphresult();      /* Read result of initialization*/
  if( ErrorCode != grOk ){      /* Error occured during init   */
    printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) );
    exit( 1 );
  }

  getpalette( &palette );      /* Read the palette from board   */
  MaxColors = getmaxcolor() + 1;   /* Read maximum number of colors*/

  MaxX = getmaxx();
  MaxY = getmaxy();         /* Read size of screen      */

  getaspectratio( &xasp, &yasp );   /* read the hardware aspect   */
  AspectRatio = (double)xasp / (double)yasp; /* Get correction factor   */

}

/*                           */
/*   POLYDEMO: Display a random pattern of polygons on the screen   */
/*   until the user says enough.               */
/*                           */

#define MaxPts      6      /* Maximum # of pts in polygon   */

void PolyDemo(void)
{
  struct PTS poly[ MaxPts ];      /* Space to hold datapoints   */
  int color;            /* Current drawing color   */
  int i;

  while( !kbhit() ){         /* Repeat until a key is hit   */

    color = 1 + random( MaxColors-1 );   /* Get a random color # (no blk)*/
    setfillstyle( random(10), color );   /* Set a random line style   */
    setcolor( color );         /* Set the desired color   */

    for( i=0 ; i<(MaxPts-1) ; i++ ){   /* Determine a random polygon   */
      poly[i].x = random( MaxX );   /* Set the x coord of point   */
      poly[i].y = random( MaxY );   /* Set the y coord of point   */
    }

    poly[i].x = poly[0].x;      /* last point = first point   */
    poly[i].y = poly[1].y;

    fillpoly( MaxPts, (int far *)poly );    /* Draw the actual polygon       */
  }               /* End of WHILE not KBHIT   */

  Pause();            /* Wait for user's response     */

}

/*                           */
/*   PAUSE: Pause until the user enters a keystroke. If the      */
/*   key is an ESC, then exit program, else simply return.      */
/*                           */

void Pause(void)
{
  static char msg[] = "Esc aborts or press a key...";
  int c;

  StatusLine( msg );         /* Put msg at bottom of screen   */

  c = getch();            /* Read a character from kbd   */

  if( ESC == c ){         /* Does user wish to leave?   */
    closegraph();         /* Change to text mode      */
    exit( 1 );            /* Return to OS       */
  }

  if( 0 == c ){          /* Did use hit a non-ASCII key? */
    c = getch();         /* Read scan code for keyboard   */
  }

  cleardevice();         /* Clear the screen      */

}

/*                           */
/*   STATUSLINE: Display a status line at the bottom of the screen.   */
/*                           */

void StatusLine( char *msg )
{
  int height;

  setviewport( 0, 0, MaxX, MaxY, 1 );   /* Open port to full screen   */
  setcolor( MaxColors - 1 );      /* Set current color to white   */

  changetextstyle( DEFAULT_FONT, HORIZ_DIR, 1 );
  settextjustify( CENTER_TEXT, TOP_TEXT );
  setlinestyle( SOLID_LINE, 0, NORM_WIDTH );
  setfillstyle( EMPTY_FILL, 0 );

  height = textheight( "H" );           /* Detemine current height      */
  bar( 0, MaxY-(height+4), MaxX, MaxY );
  rectangle( 0, MaxY-(height+4), MaxX, MaxY );
  outtextxy( MaxX/2, MaxY-(height+2), msg );
  setviewport( 1, height+5, MaxX-1, MaxY-(height+5), 1 );

}

/*                           */
/*   CHANGETEXTSTYLE: similar to settextstyle, but checks for   */
/*   errors that might occur whil loading the font file.      */
/*                           */

void changetextstyle(int font, int direction, int charsize)
{
  int ErrorCode;

  graphresult();         /* clear error code      */
  settextstyle(font, direction, charsize);
  ErrorCode = graphresult();      /* check result       */
  if( ErrorCode != grOk ){      /* if error occured      */
    closegraph();
    printf(" Graphics System Error: %s\n", grapherrormsg( ErrorCode ) );
    exit( 1 );
  }
}
Volver arriba
kristho



Registrado: 02 Dic 2005
Mensajes: 20

MensajePublicado: 07/12/2005 12:43 am
Título:

Muchas gracias, ahora si todo ok y justo a tiempo para entregarlo, se los agradezco mucho. gracias.
Volver arriba
      Índice del Foro elrincondelc.com -> Gráficos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com