23 de fevereiro de 2009

Projeto I

Bandeira do Brasil

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void estrela (int x, int y, int tam);

int main(void)
{
char msg[80];

/* request auto detection */
int gdriver = DETECT, gmode, errorcode;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}

cleardevice();

//RETANGULO********************
setfillstyle(SOLID_FILL, GREEN);
setcolor(GREEN);
rectangle(0,50,getmaxx(),getmaxy()-50);
floodfill(10,60,GREEN);
//*****************************

//LOSANGO**********************
setfillstyle(SOLID_FILL, YELLOW);
setcolor(YELLOW);
line(23, getmaxy()/2,getmaxx()/2, 53);
line(getmaxx()/2, 53, getmaxx()-23, getmaxy()/2);
line(getmaxx()-23, getmaxy()/2, getmaxx()/2, getmaxy()-53);
line(getmaxx()/2, getmaxy()-53, 23, getmaxy()/2);
floodfill(50,245,YELLOW);
//*****************************

//CIRCULO**********************
setfillstyle(SOLID_FILL, BLUE);
setcolor(BLUE);
circle(getmaxx()/2,getmaxy()/2,150);
floodfill(325,255,BLUE);
//*****************************

//RETANGULO2*******************
setfillstyle(SOLID_FILL, WHITE);
setcolor(WHITE);
rectangle(getmaxx()/2-150,getmaxy()/2-10,getmaxx()/2+150,getmaxy()/2+10);
floodfill(getmaxx()/2,getmaxy()/2,WHITE);
//*****************************

//TEXTO************************
setcolor(BLACK);
settextstyle(TRIPLEX_FONT, HORIZ_DIR, 2);
sprintf(msg, "ORDEM E PROGRESSO");
outtextxy(getmaxx()/2-100,getmaxy()/2-13, msg);
//*****************************

//ESTRELAS
estrela(getmaxx()/2+40,getmaxy()/2-30,2);

estrela(getmaxx()/2+30,getmaxy()/2+30,2);
estrela(getmaxx()/2+60,getmaxy()/2+40,2);
estrela(getmaxx()/2-10,getmaxy()/2+50,2);
estrela(getmaxx()/2-40,getmaxy()/2+80,2);
estrela(getmaxx()/2-30,getmaxy()/2+30,2);
estrela(getmaxx()/2+20,getmaxy()/2+70,2);
estrela(getmaxx()/2-80,getmaxy()/2+80,2);
estrela(getmaxx()/2-90,getmaxy()/2+90,2);
estrela(getmaxx()/2-90,getmaxy()/2+50,2);
estrela(getmaxx()/2+40,getmaxy()/2+80,2);
estrela(getmaxx()/2+90,getmaxy()/2+55,2);
estrela(getmaxx()/2-50,getmaxy()/2+70,2);
estrela(getmaxx()/2-10,getmaxy()/2+77,2);
estrela(getmaxx()/2-30,getmaxy()/2+45,2);
estrela(getmaxx()/2-60,getmaxy()/2+55,2);
estrela(getmaxx()/2+60,getmaxy()/2+55,2);
estrela(getmaxx()/2+80,getmaxy()/2+50,2);
estrela(getmaxx()/2+90,getmaxy()/2+30,2);
estrela(getmaxx()/2+95,getmaxy()/2+70,2);
estrela(getmaxx()/2-50,getmaxy()/2+90,2);
estrela(getmaxx()/2-30,getmaxy()/2+90,2);
estrela(getmaxx()/2-20,getmaxy()/2+95,2);
estrela(getmaxx()/2,getmaxy()/2+80,2);
estrela(getmaxx()/2+10,getmaxy()/2+80,2);
estrela(getmaxx()/2,getmaxy()/2+100,2);
estrela(getmaxx()/2,getmaxy()/2+117,2);


/* clean up */
getch();
closegraph();
return 0;
}

//FUNCAO PARA DESENHAR ESTRELA
void estrela (int x, int y, int tam)
{
int met=tam/2;
int alt=tam+3;

//ESTRELA**********************
//PARTE DE CIMA
setfillstyle(SOLID_FILL, WHITE);
setcolor(WHITE);
line(x, y,x+tam, y);
line(x+tam, y, x+met, y-alt);
line(x+met, y-alt, x, y);
floodfill(x+1,y-1,WHITE);

//PARTE DA DIREITA
line(x+tam, y, x+tam, y+tam);
line(x+tam, y+tam, x+tam+alt, y+met);
line(x+tam+alt, y+met, x+tam, y);
floodfill(x+tam+1,y+1,WHITE);

//PARTE DA ESQUERDA
line(x, y, x, y+tam);
line(x, y+tam, x-alt, y+met);
line(x-alt, y+met, x, y);
floodfill(x-1,y+1,WHITE);

//PARTE DA DIREITA BAIXO
line(x+tam, y+met, x+met, y+tam);
line(x+met, y+tam, x+tam+met, y+tam+alt);
line(x+tam+met, y+tam+alt, x+tam, y+met);
floodfill(x+tam,y+tam+1,WHITE);

//PARTE DA ESQUERDA BAIXO
line(x, y+met, x+met, y+tam);
line(x+met, y+tam, x-met, y+tam+alt);
line(x-met, y+tam+alt, x, y+met);
floodfill(x,y+tam+1,WHITE);

floodfill(x+1,y+1,WHITE);

//*****************************
}