Ebbene si, il vostro albero di Natale apparirà sul desktop esattamente come lo vedete in figura animazioni comprese.
Se volete compilare il codice dell’albero di Natale animato con dev-cpp dovete prima installare la libreria graphics seguendo la guida che trovate qui.
Codice del programma Albero di Natale animato
Ecco di seguito il codice suddiviso per funzioni.
#include <stdlib.h> #include <iostream> #include <graphics.h> using namespace std; void albero(); void palline(); void neve(int xy[]); void finestra(); void camino(); void legno(); void fuoco(int xy[]); void pavimento(); int main() { int gd=DETECT,gm; initwindow(600,600); srand(time(NULL)); int xy[2]; //xy[0] x neve --- xy[1] y neve int f[2]; //f[0] x fuoco ---- f[2] y fuoco while(1) { if(kbhit()==0) { cleardevice(); pavimento(); albero(); finestra(); camino(); legno(); fuoco(f); neve(xy); palline(); delay(300); } else break; } getch(); closegraph(); } void palline() { //PALLINE setcolor(WHITE); line(200,300,200,305); //1 circle(200,315,10); line(400,300,400,305); //6 circle(400,315,10); line(180,350,180,355); //2 circle(180,365,10); line(420,350,420,355); //7 circle(420,365,10); line(160,400,160,405); //3 circle(160,415,10); line(440,400,440,405); //8 circle(440,415,10); line(160,450,160,455); //4 circle(160,465,10); line(440,450,440,455); //9 circle(440,465,10); line(350,450,350,455); //5 circle(350,465,10); line(250,450,250,455); //10 circle(250,465,10); //COLORE setfillstyle(1,(rand()%16)); floodfill(200,315,WHITE); //1 floodfill(250,465,WHITE); //10 setfillstyle(1,(rand()%16)); floodfill(400,315,WHITE); //6 floodfill(350,465,WHITE); //5 setfillstyle(1,(rand()%16)); floodfill(180,365,WHITE); //2 floodfill(440,465,WHITE); //9 setfillstyle(1,(rand()%16)); floodfill(420,365,WHITE); //7 floodfill(160,465,WHITE); //4 setfillstyle(1,(rand()%16)); floodfill(160,415,WHITE); //3 floodfill(440,415,WHITE); //8 return; } void albero() { setcolor(BROWN); moveto(300,175); //Stella lineto(285,185); lineto(292,170); lineto(280,165); lineto(292,165); lineto(300,150); lineto(308,165); lineto(320,165); lineto(308,170); lineto(315,185); lineto(300,175); arc(355,270,75,115,125); //scia arc(365,292,75,115,125); moveto(385,150); lineto(370,155); lineto(395,170); setfillstyle(1,YELLOW); //Colora stella floodfill(300,165,BROWN); floodfill(375,165,BROWN); //Colora scia setcolor(LIGHTGREEN); line(300,176,300,449);//Linea divisione moveto(300,175); //Parte sinistra lineto(200,300); lineto(250,280); lineto(180,350); lineto(250,310); lineto(160,400); lineto(250,360); lineto(160,450); lineto(440,450); moveto(300,175); //Parte destra lineto(400,300); lineto(350,280); lineto(420,350); lineto(350,310); lineto(440,400); lineto(350,360); lineto(440,450); setcolor(BROWN); moveto(280,510); //TRONCO lineto(280,451); lineto(320,451); lineto(320,510); arc(300,510,180,0,20); setfillstyle(3,LIGHTGREEN); //Colora parte sinistra floodfill(290,400,LIGHTGREEN); setfillstyle(6,LIGHTGREEN); //colora parte destra floodfill(310,400,LIGHTGREEN); setfillstyle(9,BROWN); //Colora tronco floodfill(290,460,BROWN); return; } void camino() { setcolor(WHITE); rectangle(20,420,130,505); //Telaio interno rectangle(15,415,135,505); //Telaio esterno line(20,505,30,495); //Bordo interno sinistro line(30,495,30,420); line(130,505,120,495); //Bordo interno destro line(120,495,120,420); line(30,495,120,495); //Linea bordo interno superiore line(20,504,130,504); //Linea bordo interno superiore rectangle(10,505,140,509); //Marmo setfillstyle(6,LIGHTGRAY); //Colora bordo interno sinistro floodfill(22,422,WHITE); setfillstyle(3,LIGHTGRAY); //Colora bordo interno destro floodfill(122,422,WHITE); setfillstyle(2,LIGHTGRAY); //Colora bordo interno centrale floodfill(50,500,WHITE); setfillstyle(9,LIGHTGRAY); //Colora telaio floodfill(17,425,WHITE); setfillstyle(9,LIGHTGRAY); //Colora marmo floodfill(12,507,WHITE); return; } void legno() { setcolor(BROWN); circle(47,495,7); arc(103,495,260,90,7); line(47,501,103,501); line(47,488,103,488); setfillstyle(9,BROWN); //Colora tronco floodfill(47,495,BROWN); floodfill(70,495,BROWN); return; } void fuoco(int xy[]) { //movimento if(xy[0]==0) //Laterale xy[0]=xy[0]+4; else xy[0]=0; if(xy[1]==0) //verticale xy[1]=xy[1]+6; else xy[1]=0; setcolor(RED); moveto(50,488); //FUOCO ESTERNO lineto(60+xy[0],460-xy[1]); lineto(65+xy[0],475-xy[1]); lineto(75+xy[0],450-xy[1]); lineto(85+xy[0],475-xy[1]); lineto(90+xy[0],460-xy[1]); lineto(100,488); lineto(50,488); moveto(55,488); //FUOCO INTERNO lineto(60+xy[0],470-xy[1]); lineto(65+xy[0],485-xy[1]); lineto(75+xy[0],460-xy[1]); lineto(85+xy[0],485-xy[1]); lineto(90+xy[0],470-xy[1]); lineto(95,488); lineto(50,488); setfillstyle(1,LIGHTRED); //Colora fuoco esterno floodfill(52,487,RED); setfillstyle(1,YELLOW); //Colora fuoco interno floodfill(57,487,RED); return; } void finestra() { setcolor(BROWN); rectangle(450,170,550,300); //Telaio interno rectangle(445,165,555,305); //Telaio esterno rectangle(498,170,502,300); //Divisione finestra setcolor(WHITE); rectangle(441,306,560,310); //Marmo /*setfillstyle(4,CYAN); floodfill(451,171,BROWN); //Colora parte sinistra floodfill(503,171,BROWN); //colora parte destra*/ setfillstyle(9,LIGHTGRAY); floodfill(442,307,WHITE); //Colora marmo setfillstyle(9,BROWN); floodfill(446,166,BROWN); //Colora telaio setcolor(CYAN); line(460,240,485,200); //Lucentezza finestra sinistra line(460,270,485,230); //Lucentezza finestra sinistra line(515,240,540,200); //Lucentezza finestra destra line(515,270,540,230); //Lucentezza finestra destra return; } void neve(int xy[]) { setcolor(WHITE); //movimento if(xy[0]==0) //Laterale xy[0]=xy[0]+5; else xy[0]=0; if(xy[1]<120) //verticale xy[1]=xy[1]+10; else xy[1]=0; //batuffolo 1 line(455+xy[0],171+xy[1],461+xy[0],175+xy[1]); line(461+xy[0],171+xy[1],455+xy[0],175+xy[1]); line(458+xy[0],171+xy[1],458+xy[0],175+xy[1]); //batuffolo 2 line(455+xy[0]+25,171+xy[1],461+xy[0]+25,175+xy[1]); line(461+xy[0]+25,171+xy[1],455+xy[0]+25,175+xy[1]); line(458+xy[0]+25,171+xy[1],458+xy[0]+25,175+xy[1]); //batuffolo 3 line(455+xy[0]+52,171+xy[1],461+xy[0]+52,175+xy[1]); line(461+xy[0]+52,171+xy[1],455+xy[0]+52,175+xy[1]); line(458+xy[0]+52,171+xy[1],458+xy[0]+52,175+xy[1]); //batuffolo 4 line(455+xy[0]+77,171+xy[1],461+xy[0]+77,175+xy[1]); line(461+xy[0]+77,171+xy[1],455+xy[0]+77,175+xy[1]); line(458+xy[0]+77,171+xy[1],458+xy[0]+77,175+xy[1]); return; } void pavimento() { line(0,510,280,510); line(320,510,600,510); return; }