// ÉÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» \\
// º º º \\
// º SEARCHMAP º Code de la map º \\
// º º º \\
// ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ \\
// º º \\
// º þ On regarde si le code entr‚ correspond … une map existante. º \\
// º º \\
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ \\
int SearchMap(long int code)
{
FILE *fichier; // fichier pour le rapport
int i=0;
long int tmp_code;
char tmp_map[15];
do
{
if ((fichier=fopen(jeu.path[i].nom_map, "r"))!=NULL) // ouverture du fichier
{
fscanf (fichier, "%s\n%li\n", &tmp_map, &tmp_code);
if (tmp_code==code)
return (i+2);
}
fclose(fichier);
i++;
}
while (i<jeu.nb_nivo);
return -1;
}
// ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» \\
// º º º \\
// º LOADOPTION º Charge le fichier des options º \\
// º º º \\
// ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ \\
// º º \\
// º þ On charge chaque ligne du fichier. º \\
// º º \\
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ \\
void LoadOptions(char *option_name, struct_pacman &pacman)
{
FILE *fichier; // fichier pour le rapport
// si le fichier ne s'ouvre pas, sinon s'il s'ouvre correctement
if ((fichier=fopen(option_name, "r"))==NULL) // ouverture du fichier
{
closegraph();
clrscr(); // on efface l'‚cran
printf("Fichier %s inexistant !", option_name);
getch();
EXIT;
}
else
{
fscanf(fichier, "pacman = %d\n", &pacman.color);
fscanf(fichier, "vie = %d\n", &pacman.vie);
fscanf(fichier, "son = %d\n", &jeu.son);
fscanf(fichier, "nom = %d\n", &jeu.nom);
fscanf(fichier, "background = %d\n", &jeu.bkground);
}
fclose(fichier);
}
// ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» \\
// º º º \\
// º WRITEOPTION º Sauvegarde le fichier des options. º \\
// º º º \\
// ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ \\
// º º \\
// º þ On sauvegarde chaque ligne du fichier. º \\
// º º \\
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ \\
void WriteOptions(char *option_name, struct_pacman &pacman)
{
FILE *fichier; // fichier pour le rapport
// si le fichier ne s'ouvre pas, sinon s'il s'ouvre correctement
if ((fichier=fopen(option_name, "w"))==NULL) // ouverture du fichier
{
closegraph();
clrscr(); // on efface l'‚cran
printf("Fichier %s inexistant !", option_name);
getch();
EXIT;
}
else
{
fprintf(fichier, "pacman = %d\n", pacman.color);
fprintf(fichier, "vie = %d\n", pacman.vie);
fprintf(fichier, "son = %d\n", jeu.son);
fprintf(fichier, "nom = %s\n", jeu.nom);
fprintf(fichier, "background = %d\n", jeu.bkground);
}
fclose(fichier);
}
// ÉÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» \\
// º º º \\
// º LOADSCORE º Fichier High Score º \\
// º º º \\
// ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ \\
// º º \\
// º þ On charge chaque ligne du fichier et on retourne le plus petit º \\
// º score trouv‚. º \\
// º º \\
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ \\
int LoadScore(char *score_name)
{
char msg[10]; // message d'erreur
FILE *fichier; // fichier pour le rapport
int result;
// si le fichier ne s'ouvre pas, sinon s'il s'ouvre correctement
if ((fichier=fopen(score_name, "r"))==NULL) // ouverture du fichier
{
closegraph();
clrscr(); // on efface l'‚cran
printf("Fichier %s inexistant !", score_name);
getch();
EXIT;
}
else
{
for (int i=0; i<5; i++)
{
fscanf(fichier, "%s = %d\n", msg, &jeu.hscore[i].points);
strcpy(jeu.hscore[i].nom, msg);
result=jeu.hscore[i].points;
}
}
fclose(fichier);
return result;
}
// ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» \\
// º º º \\
// º WRITESCORE º Fichier High Score, Nom, Score du joueur º \\
// º º º \\
// ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ \\
// º º \\
// º þ On va mettre … jour le fichier des High Score, en enregistrant º \\
// º le nouveau score ‚tablit. º \\
// º º \\
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ \\
void WriteScore(char *score_name, char j_nom[10], int points)
{
FILE *fichier; // fichier pour le rapport
int i=0;
// si le fichier ne s'ouvre pas, sinon s'il s'ouvre correctement
if ((fichier=fopen(score_name, "w"))==NULL) // ouverture du fichier
{
closegraph();
clrscr(); // on efface l'‚cran
printf("Fichier %s non modifiable !", score_name);
getch();
EXIT;
}
else
{
do
{
if (points>=jeu.hscore[i].points)
{
fprintf(fichier, "%s = %d\n", j_nom, points);
points=-1;
}
fprintf(fichier, "%s = %d\n", jeu.hscore[i].nom, jeu.hscore[i].points);
i++;
}
while (i<5);
}
fclose(fichier);
}
// ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» \\
// º º \\
// º GETKEY º \\
// º º \\
// ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ \\
// º º \\
// º þ On r‚cupŠre le bon num‚ro de touche. º \\
// º º \\
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ \\
int getkey()
{
int key, lo, hi;
key = bioskey(0);
lo = key & 0X00FF;
hi = (key & 0XFF00) >> 8;
return ((lo == 0) ? hi + 256 : lo);
}
// ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» \\
// º º º \\
// º RANDOM_TOUCH º PremiŠre Touche, Seconde Touche º \\
// º º º \\
// ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ \\
// º º \\
// º þ touch1 et touch2 permettent de d‚placer le Monstre de fa‡on º \\
// º al‚atoire. º \\
// º þ Plusieurs restrictions sur touch2 : º \\
// º þ touch1 et touch2 ne doivent pas ˆtre oppos‚es (haut-bas, º \\
// º bas-haut, gauche-droite, droite-gauche), ce qui correspond … º \\
// º "touch1 + touch2 = 3". º \\
// º þ touch1 et touch2 ne doivent pas ˆtre identiques, ce qui º \\
// º correspond … "touch1 - touch2 = 0". º \\
// º º \\
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ \\
void random_touch(int &touch1, int &touch2)
{
if (touch1==0) touch1=random(4)+1;
do touch2=random(4)+1;
while ((touch1+touch2==5) || (touch1-touch2==0));
// 1 haut
// 2 3 gauche/droite
// 4 bas
}
// ÉÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» \\
// º º º \\
// º JOUE_SON º Hertz, Dispo º \\
// º º º \\
// ÌÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ \\
// º º \\
// º þ Hertz demande une fr‚quence du son. º \\
// º Dispo v‚rifie si le son est activ‚. º \\
// º Delais fait durer le son plus longtemps. º \\
// º þ Cette proc‚dure va nous permettre de jouer un son, seulement si º \\
// º l'utilisateur l'a d‚cid‚. º \\
// º º \\
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ \\
void joue_son(int hertz, int delay_son, int delay_no_son)
{
if (jeu.son==1) // si le son est activ‚, disponible
{
sound(hertz); // on joue une douce m‚lodie
delay(delay_son); // on attend qq temps, on fait durer la note
nosound();
delay(delay_no_son);
}
}
// ÉÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» \\
// º º º \\
// º INTRO º Carte º \\
// º º º \\
// ÌÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ \\
// º º \\
// º þ On lance l'intro du jeu. º \\
// º º \\
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ \\
void intro()
{
struct struct_fusee
{
int x; // matrice de la carte charg‚e (x, y)
int y; // matrice de la carte charg‚e (x, y)
int color; // y haut gauche de la map (en pixel)
} *fusee;
//struct_fusee fusee;
fusee = (struct_fusee *)malloc(1000*sizeof(struct_fusee));
char *msg;
char *cmsg;
msg = (char *)malloc(30*sizeof(char));
cmsg = (char *)malloc(sizeof(char));
float t;
int midx = getmaxx() / 2;
int midy = getmaxy() / 2;
int i=0;
// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ \\
// ³ FUSEE ³ \\
// ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ \\
// ³ þ On va dessiner la fus‚e avec une fonction param‚trique. ³ \\
// ³ þ Les ‚quations s'‚crivent en fonction de t, le temps. ³ \\
// ³ þ Les couleurs sont g‚n‚r‚es grƒce … t. ³ \\
// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ \\
for (t=0; t<2*M_PI; t+=M_PI/float(500))
{
fusee[i].x = 10*(5 * cos(t) * 5 * sin(t));//float x = 5 * cos(t) * 5 * sin(t);
fusee[i].y = 10*(5 * cos(3*t) - 5 * sin(t));//float y = 5 * cos(3*t) - 5 * sin(t);
fusee[i].color = int(t*500)%16;
putpixel(fusee[i].x+midx, fusee[i].y+midy, fusee[i].color);
i++;
delay(2);
}
for (i=600; i<8000; i+=1000)
joue_son(i, 100, 10);
// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ \\
// ³ TEXTES ³ \\
// ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ \\
// ³ þ On va ‚crire les deux textes, mais lettre par lettre pour ³ \\
// ³ pour avoir l'illusion de l'‚criture. ³ \\
// ³ þ L'un s'‚crit vers la gauche, l'autre vers la droite. La ³ \\
// ³ fonction textwidth nous est trŠs utile puisqu'elle nous ³ \\
// ³ permet d'‚crire … l'endroit voulu, sans calculs complexes.³ \\
// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ \\
setcolor(14); // jaune
settextjustify(CENTER_TEXT, CENTER_TEXT); // centr‚ horizontalement et verticalement
settextstyle(2, HORIZ_DIR, 10); // nø de police, ‚crire horizontalement, taille 4
sprintf(msg, "The Team Rocket");
int x=0;
for (i=0; i<=strlen(msg); i++)
{
sprintf(cmsg, "%c", msg[i]);
outtextxy(midx+x-strlen(msg)*10, 100, cmsg); // on place et on ‚crit le texte
x += textwidth(cmsg);
delay(50);
}
setcolor(15); // blanc
settextstyle(2, HORIZ_DIR,6); // nø de police, ‚crire horizontalement, taille 4
sprintf(msg, "PRESENTS");
x=0;
for (i=strlen(msg); i>=0; i--)
{
sprintf(cmsg, "%c", msg[i]);
outtextxy(midx+x+strlen(msg)*6, 400, cmsg); // on place et on ‚crit le texte
x -= textwidth(cmsg);
delay(50);
}
delay(1000);
// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ \\
// ³ ANIMATIONS ³ \\
// ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ \\
// ³ þ Pour toute animation, il faut afficher l'image, attendre ³ \\
// ³ le temps n‚cessaire (pour ‚viter le scintillement) et ³ \\
// ³ effacer l'image (ce qui est contraignant). ³ \\
// ³ fonction textwidth nous est trŠs utile puisqu'elle nous ³ \\
// ³ permet d'‚crire … l'endroit voulu, sans calculs complexes.³ \\
// ³ þ Entre deux et pour le fun, un son est le bienvenu. ³ \\
// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ \\
settextjustify(CENTER_TEXT, CENTER_TEXT); // centr‚ horizontalement et verticalement
for (int decal=0; decal<4*midx; decal+=int(decal/10)+1)
{
// affichage
for (i=0; i<1000; i++)
putpixel(fusee[i].x+midx-decal, fusee[i].y+midy, fusee[i].color);
setcolor(15);
settextstyle(2, HORIZ_DIR,6); // nø de police, ‚crire horizontalement, taille 4
outtextxy(midx+13, 400+(decal/4), "PRESENTS"); // on place et on ‚crit le texte
setcolor(14);
settextstyle(2, HORIZ_DIR, 10); // nø de police, ‚crire horizontalement, taille 4
outtextxy(midx+15+(decal/2), 100, "The Team Rocket"); // on place et on ‚crit le texte
joue_son(8*decal, 25, 0);
// effacement
for (i=0; i<1000; i++)
putpixel(fusee[i].x+midx-decal, fusee[i].y+midy, 0);
setcolor(0);
settextstyle(2, HORIZ_DIR,6); // nø de police, ‚crire horizontalement, taille 4
outtextxy(midx+13, 400+(decal/4), "PRESENTS"); // on place et on ‚crit le texte
settextstyle(2, HORIZ_DIR, 10); // nø de police, ‚crire horizontalement, taille 4
outtextxy(midx+15+(decal/2), 100, "The Team Rocket"); // on place et on ‚crit le texte
}
nosound();
free(fusee);
// ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ \\
// ³ TITRE ³ \\
// ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ \\
// ³ þ Et efin, l'affichage du titre, PACMAN. ³ \\
// ³ þ L'animation, cette fois-ci, n'est pas un d‚placement mais ³ \\
// ³ un remplissage (et un vidage) de surface. ³ \\
// ³ þ Avec la fonction titre_effect, on peut remplir la surface ³ \\
// ³ (ici le caractŠre) avec un point et une couleur. ³ \\
// ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ \\
setcolor(12); // rouge clair
settextjustify(CENTER_TEXT, CENTER_TEXT); // centr‚ horizontalement et verticalement
settextstyle(10, HORIZ_DIR, 4); // nø de police, ‚crire horizontalement, taille 4
outtextxy(midx, 30, "PACMAN"); // on place et on ‚crit le texte
delay(1000);
}
// ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» \\
// º º \\
// º INIT_GRAPH º \\
// º º \\
// ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ \\
// º º \\
// º þ On initialise l'affichage et les fonctions graphiques. º \\
// º º \\
// ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ \\
void init_graph()
{
// d‚tection automatique de la carte graphique
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
// r‚sultat de l'initialisation
errorcode = graphresult();
// si une erreur se produit
if (errorcode != grOk)
{
printf("\nErreur : %s\nPressez une touche ...", grapherrormsg(errorcode));
getch();
exit(1);
}
}