Soyez le premier à donner votre avis sur cette source.
Snippet vu 5 440 fois - Téléchargée 35 fois
//Effet de feu par GoldenEye:très facile #include "allegro.h" #include <stdlib.h> #include <time.h> #include <sys/farptr.h> int main() { RGB couleur; int i,x,y; unsigned char flamme[800][150]={0};//tableau qui contiendra les couleurs unsigned long adress; unsigned char col; srand(time(0)); allegro_init(); install_keyboard(); set_gfx_mode(GFX_AUTODETECT,800,600,0,0);//résolution 800*600 for (i=0;i<140;i++)//création de la palette { couleur.r=(i*63/140);//teintes rouges couleur.g=0; couleur.b=0; set_color(i,&couleur); } for (i=140;i<200;i++)//teintes jaune orange { couleur.r=63; couleur.g=i/2-64; couleur.b=0; set_color(i,&couleur); } for(i=200;i<256;i++)//teintes bleues { couleur.r=0; couleur.g=0; couleur.b=(255-i); set_color(i,&couleur); } while(!keypressed())//tant qu'on a pas touché au clavier { for(y=1;y<150;y++)//hauteur de la flamme=150 for(x=1;x<799;x++) { if(y<2)//si on est au bas de la flamme col=rand()%200+50;//une couleur au pif dans les teintes orange bleu else//sinon {//la couleur du pixel x,y est la moyenne des 4 pixels en dessous->c'est la base de l'effet col=(flamme[x-1][y-1]+flamme[x+1][y]+flamme[x+1][y-1]+flamme[x-1][y])>>2; if (col!=0&&rand()%3==0)//petit artifice pour réduire le feu col--; } flamme[x][y]=col;//actualise le tableau des couleurs if(y>1)//on n'affichera pas la première ligne qui est pas jolie _farpokeb(screen->seg,(unsigned long)screen->line[600-y]+x,col);//mieux que putpixel } } allegro_exit(); return 0; }
14 août 2003 à 01:11
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.