Accueil > > > PAC_MAN
PAC_MAN
Information sur la source
Description
Ce programme est la version finale de mon premier programme en Turbo_C++ en utilisant la programmtion orienté objet un jeu tres amusant plein e surprise , il comporte 03 stages , et il y a plein de commentaire pour bin comprendre, j'ai ajouter une bibliotheque pour charger des photos bmp sous dos , tres facile a utiliser .
Source
-
- #include"stage.h"
- #include<time.h>
- #include <fcntl.h>
- #include <io.h>
-
- #define ESC 0X1B
- #define CR 0XD
- #define HAUT 0X48
- #define BAS 0X50
- #define DROIT 0X4D
- #define GAUCH 0X4B
-
- #define pi 3.1429654
-
- #define SUP 529
- #define INF 123
- #define lin 130
- #define col 20
- int vrai=1;
- int bbb=1;
- int mm=100;
- //t_screen sDisplay;
- t_image v,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24;
-
-
-
- class Pacman;
- class Virus;
- class BIG_FOTHER
- {
- public :
- BIG_FOTHER(int,int,int);
-
- friend void Score();
- friend void demo_music_laser();
- void SPE_M(int s);
- void Modifier(int,int);
- int lecS(){return speed;}
- int lecX(){return x;}
- int lecY(){return y;}
-
- protected :
- int x,y,c,speed;
-
- };
-
-
- class Virus:public BIG_FOTHER
- {
- public :
- Virus(int,int,int);
- void Affiche(int);
- void Cache();
- void Command(Pacman,int);
- void Command2(Pacman,int);
- void Command3(Pacman,int);
- friend void Getout(Virus&,Virus&,Virus&,Virus&);
- void Up();
- void Lf();
- void Rg();
- void REMISE_0();
- void Restore2();
- void Restore3();
- void Restore4();
- void Restore5();
-
- private :
- int bool,spool;
-
- };
- class Pacman:public BIG_FOTHER
- { public:
- Pacman(int,int,int,int vie);
- void Affiche1(char);
- void Cache1();
- void Life(int);
- void Add();
- void vieADD();
- void vieSUB();
- void SUB();
- void Restore();
- void Compteur();
- void Pomme();
- void Banane();
- void Raisin();
- int lec_cpt(){return cpt;}
- int lec_pom(){return pom;}
- int lec_ban(){return ban;}
- int lec_rai(){return rai;}
-
- void Play();
- void REMISE_0();
- int lecCPT(){return cpt;}
- void Modifier_cpt(int);
- int lecVie(){return vie;}
- friend void Command1(Pacman&,Virus,Virus,Virus,Virus);
-
-
- private:
- int vie,ban,rai,pom,cpt;
- };
-
-
- //----------------------------------- constructeur big_fother -------------
- BIG_FOTHER::BIG_FOTHER(int x1,int y1,int c1)
- {
- x=x1;
- y=y1;
- c=c1;
- speed=80;
- }
- //-------------------------------------------------------------------------
- void BIG_FOTHER::SPE_M(int s)
- {
- speed=s;
- }
- //----------------------------------- constructeur virus--------------------
- Virus::Virus(int x1,int y1,int c1):BIG_FOTHER(x1,y1,c1)
- {
- spool=0;
- bool=0;
- }
- //----------------------------------- constructeur pacman--------------------
- Pacman::Pacman(int a,int b,int c1,int v1):BIG_FOTHER(a,b,c1)
- {
- ban=0;
- rai=0;
- pom=0;
- vie=v1;
- cpt=0;
- }
- //-------------------------------------------------------------------------
- void Pacman::REMISE_0()
- {
- ban=0;
- rai=0;
- pom=0;
- vie=2;
- cpt=0;
- vrai=1;
- }
- //-----------------------------------------------------------------------
- void Virus::REMISE_0()
- {
- spool=0;
- bool=0;
-
- }
-
- //----------------------------------- partie sonor--------------------------
- void demo_music_laser()
- {
- for(int count=0;count<10;count++)
- {sound(count*100);delay(10);}
- nosound();
-
- }
- //..........................................................................
- void demo_music_ambilance()
- {
- for(int count=0;count<2;count++)
- {sound(4000);delay(5);sound(7000);delay(5);}
- nosound();
-
- }
-
-
- //------------------------------------ les methodes de big_fother------------
-
- void BIG_FOTHER::Modifier(int x1,int y1)
- {
- x=(x+x1) ;
- y=(y+y1) ;
-
- }
- //----------------------------------- les methodes de pacman----------------
- void Pacman::Compteur()
- {
- cpt+=1;
- gotoxy(12,3);printf("%d",cpt);
- sound(7000);
- delay(50);
- nosound();
-
- }
- //.........................................................................
- void Pacman::Pomme()
- {
- pom+=20;
- gotoxy(12,13);printf("%d",pom);
- sound(5000);
- delay(50);
- nosound();
-
- }
- //........................................................................
- void Pacman::Banane()
- {
- ban+=50;
- gotoxy(12,15);printf("%d",ban);
- sound(5000);
- delay(50);
- nosound();
-
- }
- //........................................................................
- void Pacman::Raisin()
- {
- rai+=100;
- gotoxy(12,17);printf("%d",rai);
- sound(7000);
- delay(50);
- nosound();
-
- }
- //.......................................................................
- void Pacman::vieADD()
- {
- vie+=1;
- }
- //........................................................................
- void Pacman::vieSUB()
- {
- vie=vie-1;
- }
- //........................................................................
- void Pacman::Add()
- {
- DisplayImage(&sDisplay, &v4,10+20*vie,120,0);
- sound(7000);
- delay(50);
- nosound();
-
- }
- //.........................................................................
- void Pacman::SUB()
- {
- DisplayImage(&sDisplay, &v5,10+20*vie,120,0);
- }
-
- //.........................................................................
- void Pacman::Affiche1(char n)
- {
- SetPalette(&sDisplay, &v.ihHeader);
- setcolor(15);
- setfillstyle(1,15);
-
- switch(n)
- {
- case DROIT :pieslice(lecX()+7,lecY()+7,0,360,5);delay(20);DisplayImage(&sDisplay, &v7,lecX(),lecY(),0);break;
- case HAUT :pieslice(lecX()+7,lecY()+7,0,360,5);delay(20);DisplayImage(&sDisplay, &v9,lecX(),lecY(),0);break;
- case BAS :pieslice(lecX()+7,lecY()+7,0,360,5);delay(20);DisplayImage(&sDisplay, &v10,lecX(),lecY(),0);break;
- case GAUCH :pieslice(lecX()+7,lecY()+7,0,360,5);delay(20);DisplayImage(&sDisplay, &v8,lecX(),lecY(),0);break;
- }
-
- }
- //..........................................................................
- void Pacman::Life(int n)
- {
- int ii,jj;
- setfillstyle(1,4);
- randomize();
- ii=rand() % 30;
- jj=rand() % 30;
- if (getpixel(14*ii+lin+21+7,14*jj+col+21+7)!=12)
- if (( 14*ii+lin+21 < 500)&&(14*jj+col+21 < 400))
- { if (n==1){DisplayImage(&sDisplay, &v4,14*ii+lin+21,14*jj+col+21,0); }
- if (n==2){DisplayImage(&sDisplay, &v15,14*ii+lin+21,14*jj+col+21,0); }
- if (n==3){DisplayImage(&sDisplay, &v16,14*ii+lin+21,14*jj+col+21,0); }
- if (n==4){DisplayImage(&sDisplay, &v17,14*ii+lin+21,14*jj+col+21,0); }
- }
- }
-
- //..........................................................................
- void Pacman::Cache1()
- {
- DisplayImage(&sDisplay, &v5,lecX(),lecY(),0);
- }
-
- //------------------------------- les methodes de virus---------------------
-
- void Virus::Affiche(int n)
- {
- SetPalette(&sDisplay, &v.ihHeader);
- bool=0;
- spool=0;
- if(getpixel(x+7,y+7)==2) bool=1;
- if(getpixel(x+7,y+7)==15) spool=1;
- if (bbb)
- {
- if (c==4) {DisplayImage(&sDisplay, &v,x,y,0); }
- if (c==9) {DisplayImage(&sDisplay, &v1,x,y,0); }
- if (c==14) {DisplayImage(&sDisplay, &v2,x,y,0); }
- if (c==1) {DisplayImage(&sDisplay, &v6,x,y,0); }
- if (c==13) {DisplayImage(&sDisplay, &v7,x,y,0); }
- setcolor(0);
- setfillstyle(1,0);
- switch(n)
- {
- case 0: pieslice(x+7,y+4,0,360,1);
- pieslice(x+12,y+4,0,360,1);
- break;
- case 1: pieslice(x+4,y+4,0,360,1);
- pieslice(x+8,y+4,0,360,1);
-
- break;
- case 2: pieslice(x+5,y+6,0,360,1);
- pieslice(x+10,y+6,0,360,1);
-
- break;
- case 3: pieslice(x+5,y+2,0,360,1);
- pieslice(x+10,y+2,0,360,1);
-
- break;
- }
- }
- else DisplayImage(&sDisplay, &v18,x,y,0); //image de la peur v18
-
- }
- //.........................................................................
- void Virus::Cache()
- {
- DisplayImage(&sDisplay, &v5,x,y,0);
- if (bool) { setcolor(2);setfillstyle(SOLID_FILL,2);pieslice(x+7,y+7,0,360,1);}
- //if (spool) { setcolor(15);setfillstyle(SOLID_FILL,15);pieslice(x+7,y+7,0,360,3);}
- }
- //.........................................................................
- void Virus::Command(Pacman p,int n)
- {
- int choix;
- if (( x != p.lecX() ) || ( y != p.lecY() ))
- {if (x != p.lecX())
- {if (x < p.lecX()) {if ((getpixel(x+7+15,y+7)!=12)) choix=0;else if (getpixel(x+7,y-15+7)!=12) choix=3;}
- else {if ((getpixel(x-15+7,y+7)!=12)) choix=1;else if(getpixel(x+7,y+7-15)!=12) choix=2;}}
- else
- {if (y < p.lecY()) {if(getpixel(x+7,y+15+7)!=12) choix=2;else if (getpixel(x+15+7,y+7)!=12) choix=0;}
- else {if (getpixel(x+7,y-15+7)!=12) choix=3;else if (getpixel(x-15+7,y+7)!=12) choix=1;}}
-
- for (int l=1;l<=n;l++)
- {
- if (vrai){
- switch(choix) {
- case 0: Cache();x+=14;Affiche(0);
- break;
- case 1 : Cache();x-=14;Affiche(1);
- break;
- case 2 : Cache();y+=14;Affiche(2);
- break;
- case 3 : Cache();y-=14;Affiche(3);
- break;
- }
-
- delay(speed/10);
- }
- }
- }
- else {vrai=0;Cache();delay(100);demo_music_laser();}
- }
-
- //........................................................................
- void Virus::Command3(Pacman p,int n)
- {
- int choix;
- randomize();
- int non=1;
- while(non)
- {
- choix=rand()%4;
- switch(choix)
- {
- case 0:if (getpixel(x+7+15,y+7)!=12) non=0;break;
- case 1:if(getpixel(x+7-15,y+7)!=12) non=0;break;
- case 2:if (getpixel(x+7,y+7+15)!=12) non=0;break;
- // case 3:if (getpixel(x+7,y+7-15)!=12) non=0;break;
- }
- }
-
- if ( (x!=p.lecX())||(y != p.lecY()) )
- {
- for (int l=1;l<=n;l++){
- if (vrai){
- switch(choix) {
- case 0 : Cache();if (x != SUP) x+=14;
- else if (x==SUP) x=INF;
- Affiche(0);
- break;
- case 1 : Cache();if (x != INF) x-=14;
- else if (x==INF) x=SUP;
- Affiche(1);
- break;
- case 2 : Cache();y+=14;Affiche(2);
- break;
- case 3 : Cache();y-=14;Affiche(3);
- break;
- } delay(speed/10);
- }
- }
-
- }
- else {vrai=0;Cache();delay(100); demo_music_laser();}
- }
- //..........................................................................
- void Virus::Command2(Pacman p,int n)
- {
- int choix;
- if ( (x!=p.lecX())||(y != p.lecY()) )
- {if (y != p.lecY())
- {if (y < p.lecY()) {if ((getpixel(x+7,y+7+15)!=12)) choix=2;else if ((getpixel(x+7-15,y+7)!=12)) choix=1;}
- else {if ((getpixel(x+7,y+7-15)!=12)) choix=3;else if ((getpixel(x+7+15,y+7)!=12)) choix=0;}}
- else
- {if (x < p.lecX()) {if((getpixel(x+15+7,y+7)!=12)) choix=0;else if ((getpixel(x+7,y-15+7)!=12)) choix=3;}
- else {if ((getpixel(x-15+7,y+7)!=12)) choix=1;else if ((getpixel(x+7,y+7+15)!=12)) choix=2;}}
-
- for (int l=1;l<=n;l++){
- if (vrai){
- switch(choix) {
- case 0 : Cache();if (x != SUP) x+=14;
- else if (x==SUP) x=INF;
- Affiche(0);
- break;
- case 1 : Cache();if (x != INF) x-=14;
- else if (x==INF) x=SUP;
- Affiche(1);
- break;
- case 2 : Cache();y+=14;Affiche(2);break;
- case 3 : Cache();y-=14;Affiche(3);break;
- } delay(speed/10);
- }
- }
- } else {vrai=0;Cache();delay(100); demo_music_laser();}
- }
-
- //..............................la commande principale .....................
- void Command1(Pacman &p1,Virus p2,Virus p3,Virus p4,Virus p5)
- {
- int c,v;
- int slep=0;
- char touche;
- int stop;
- p1.Affiche1(1);
- while((vrai) && (touche!=CR) && (p1.lecCPT()!=mm))
- {
- stop=1;
- touche=getch();
- if (touche==0X00)
- touche=getch();
- while(!kbhit()&&(vrai)&&(stop)&&(p1.lecCPT()!=mm)){
- switch(touche) {
- case DROIT : p1.Cache1();
- if (getpixel(p1.lecX()+7+15,p1.lecY()+7) !=12){
- if (p1.lecX() != SUP)
- p1.Modifier(14,0);
- else if (p1.lecX()==SUP)
- p1.Modifier(-406,0);}
- else stop=0;
- break;
-
- case GAUCH : p1.Cache1();
- if (getpixel(p1.lecX()-15+7,p1.lecY()+7) !=12) {
- if (p1.lecX() != INF+14)
- p1.Modifier(-14,0);
- else if (p1.lecX()==INF+14)
- p1.Modifier(406,0);}
- else stop=0;
- break;
-
- case BAS : p1.Cache1();
- if(getpixel(p1.lecX()+7,p1.lecY()+15+7)!=12){
- if (p1.lecY() != SUP)
- p1.Modifier(0,14);
- else if (p1.lecY()==SUP)
- p1.Modifier(0,-520); }
- else stop=0;
- break;
-
- case HAUT : p1.Cache1();
- if (getpixel(p1.lecX()+7,p1.lecY()-15+7)!=12) {
- if (p1.lecY() != INF)
- p1.Modifier(0,-14);
- else if (p1.lecY()==INF)
- p1.Modifier(0,520); }
- else stop=0;
- break;
-
- case ESC : exit(0);
-
- }
- if (getpixel(p1.lecX()+7,p1.lecY()+7)==2) p1.Compteur();
- if (getpixel(p1.lecX()+7,p1.lecY()+7)==11) p1.Banane();
- if (getpixel(p1.lecX()+7,p1.lecY()+7)==13) p1.Raisin();
- if (getpixel(p1.lecX()+7,p1.lecY()+7)==1) p1.Pomme();
- if (getpixel(p1.lecX()+7,p1.lecY()+7)==15) {bbb=0;p2.Affiche(3);p3.Affiche(3);p4.Affiche(3);p5.Affiche(3);slep=30;bbb=1;} //option qui stop les virus
- if (getpixel(p1.lecX()+7,p1.lecY()+7)==9) { p1.vieADD();p1.Add();}//ajout des vies
- p1.Affiche1(touche);delay(p1.lecS());
- if(slep==0){
- p2.Command2(p1,1); //la poursuite
- p4.Command2(p1,1);
- p3.Command3(p1,1);
- p5.Command3(p1,1); //virus fou
-
- if (p1.lecCPT() % 23 ==0) p1.Life(4); //banane
- if (p1.lecCPT() % 13 ==0) p1.Life(3); //pomme
- if (p1.lecCPT() % 17 ==0) p1.Life(2); //raisin
- if (p1.lecCPT() % 55 ==0) p1.Life(1); //coeur
-
- }
- else {demo_music_ambilance();slep-=1;}
- }
-
- while (!kbhit())
- {delay(50);p2.Command2(p1,1);p4.Command3(p1,1);p3.Command(p1,1);p5.Command2(p1,1);} //poursuit quand pac ne bouge pas
-
- }
- p1.Cache1(); //effacement de l'ancienne partie
- p2.Cache();
- p3.Cache();
- p4.Cache();
- p5.Cache();
- }
- //..............................le positionement des virus..................
- void Getout(Virus &p2,Virus &p3,Virus &p4,Virus &p5)
- {
- DisplayImage(&sDisplay, &v19,278,260,0); //affiche get_ready
- p2.Up(); delay(100); p4.Up(); delay(100); p3.Lf(); delay(100);
- p5.Rg(); delay(100); p2.Up(); delay(100); p4.Up(); delay(100);
- p3.Up(); delay(100); p5.Up(); delay(100); p2.Up(); delay(100);
- p4.Up(); delay(100); p3.Up(); delay(100); p5.Up(); delay(100);
- p2.Rg(); delay(100); p4.Lf(); delay(100); p3.Up(); delay(100);
- p5.Up(); delay(100); p2.Up(); delay(100); p3.Rg(); delay(100);
- p4.Up(); delay(100); p5.Lf(); delay(100); p2.Up(); delay(100);
- p4.Up(); delay(100); p3.Rg(); delay(100); p5.Lf(); delay(100);
- setcolor(0);
- setfillstyle(1,0);
- bar3d(278,260,390,280,0,0); //efface get ready
-
- }
- //..............................les metodes de deplacement de depart.......
- void Virus::Up()
- {
- Cache();
- y-=14;
- Affiche(0);
- }
- //..........................................................................
- void Virus::Rg()
- {
- Cache();
- x+=14;
- Affiche(0);
- }
- //..........................................................................
- void Virus::Lf()
- {
- Cache();
- x-=14;
- Affiche(0);
- }
- //.......................sauvegarde de position initiale..................
- void Pacman::Restore()
- {
- x=168+lin+21;
- y=210+col+21+98;
- }
- //..........................................................................
- void Virus::Restore2()
- {
- x=154+lin+21;
- y=182+col+21;
- }
- //..........................................................................
- void Virus::Restore3()
- {
- x=182+lin+21;
- y=182+col+21,14;
- }
- //..........................................................................
- void Virus::Restore4()
- {
- x=196+lin+21;
- y=182+col+21,4;
- }
- //..........................................................................
- void Virus::Restore5()
- {
- x=168+lin+21;
- y=182+col+21;
- }
-
- //------------------------------- affichage du stage -----------------------
- void Stage::affiche_stage(int n)
- { setcolor(12);
- SetPalette(&sDisplay, &v.ihHeader);
- DisplayImage(&sDisplay, &v12,5,28,0);
- DisplayImage(&sDisplay, &v13,5,90,0);
- DisplayImage(&sDisplay, &v4,10,120,0); //v4 dessine les coeurs
- DisplayImage(&sDisplay, &v4,30,120,0); //
- DisplayImage(&sDisplay, &v4,50,120,0); //
- DisplayImage(&sDisplay, &v14,5,160,0);
- DisplayImage(&sDisplay, &v15,20,200,0);
- DisplayImage(&sDisplay, &v16,20,230,0);
- DisplayImage(&sDisplay, &v17,20,260,0);
- DisplayImage(&sDisplay, &v20,540,28,0); //dessine level
-
- if(n==1)DisplayImage(&sDisplay, &v21,610,28,0); //dessine level
- if(n==2)DisplayImage(&sDisplay, &v22,610,28,0); //dessine level
- if(n==3)DisplayImage(&sDisplay, &v23,610,28,0); //dessine level
- int p=0;
- gotoxy(12,3);printf("%d",p);
- gotoxy(12,13);printf("%d",p);
- gotoxy(12,15);printf("%d",p);
- gotoxy(12,17);printf("%d",p);
- int H = open("Grille.txt",O_RDWR | O_BINARY); //charge la grille from a fichier
- if(H!=-1)
- {
- char c;
- for(int j=0;j<32;j++)
- {
- for(int i=0;i<31;i++)
- {
- read(H,&c,1);
- if(c!=13 );
- {
- setcolor(12);
- setfillstyle(1,12);
- if(c=='1') {bar3d(14*i+lin,14*j+col,14*i+lin+14,14*j+col+14,0,0);}
-
- }
- }
- }
-
- close(H);
- }
-
- }
- //.............................affiche les boules a boufer..................
- void Stage::point_stage()
- {
-
- for (int i=0;i<30;i++)
- for(int j=0;j<33;j++)
- {if (getpixel(14*i+lin,14*j+col)==0)
- {setcolor(2);setfillstyle(SOLID_FILL,2);pieslice(14*i+lin,14*j+col,0,360,1);}}
- setcolor(15);
- setfillstyle(1,15);
- pieslice(lin+28,120-17,0,360,3);
- pieslice(lin+380-2,120-17,0,360,3);
- pieslice(lin+28,380+17,0,360,3);
- pieslice(lin+380-2,380+17,0,360,3);
- }
- //-----------------------------parti animation de classe stage--------------
- //----------------------------animation de game ovre -----------------------
- void Stage::Over()
- {
- setcolor(0);
- setfillstyle(1,0);
- bar3d(0,0,120,20,0,0);
- gotoxy(1,1);printf("GAME-OVER");
- for (int i2=0;i2<=120;i2++)
- for (int j2=0;j2<=15;j2++)
- {
- setcolor(j2%9+8);
- setfillstyle(1,j2%9+8); if (getpixel(i2,j2)!=BLACK) pieslice(i2*6+130,j2*6+200,0,360,5);
- delay(5);
- }
- }
- //----------------------------animation hight score-----------------------
- void Stage::Animation(char *name[40],int hight)
- {
- gotoxy(1,1);printf("%s",name);
- gotoxy(1,2);printf("%d",hight);
- for (int i2=0;i2<=100;i2++)
- for (int j2=0;j2<=100;j2++)
- {
- setcolor(j2%9+8);
- setfillstyle(1,j2%9+8);
- if (getpixel(i2,j2)!=BLACK) {putpixel(i2,j2,0);pieslice(i2*8+130,j2*8+150,0,360,2);}
- }
-
- }
- //----------------------- animation de victoire--------------------------
- void Stage::Winner()
- {
- int x1,y1,c1;
- setcolor(0);
- setfillstyle(1,0);
- bar3d(0,0,120,20,0,0);
- t_image load;
- LoadImage(&sDisplay, "bmp/star.bmp", &load); //affichage d'etoiles
-
- DisplayImage(&sDisplay, &load,0,0,0);
- for(int l=1;l<30;l++)
- {
- c1=rand()%10;
- x1=rand()%400;
- y1=rand()%300;
- for (int i2=0;i2<=20;i2++)
- for (int j2=0;j2<=25;j2++)
- {
- setcolor(l);
- setfillstyle(1,l);
- if (getpixel(i2,j2)!=BLACK) pieslice(i2*c1+x1,j2*c1+y1,0,360,2);
-
- }
- }
- setcolor(0);
- setfillstyle(1,0);
- bar3d(0,0,120,20,0,0);
- gotoxy(1,1);printf("WINNER"); //affiche winner
- for (int i2=0;i2<=60;i2++)
- for (int j2=0;j2<=15;j2++)
- { delay(1);
- setcolor(15);
- setfillstyle(1,15);
- if (getpixel(i2,j2)!=BLACK) pieslice(i2*6+200,j2*6+210,0,360,5);
-
- }
- setcolor(0);
- setfillstyle(1,0);
- bar3d(195,240,480,256,0,0);
- delay(1000);
- DestroyImage(&load); //destructio d'image
- }
-
- //*************************programme principale***************************
- void main()
- {
-
- InitGraphics(&sDisplay);
- //...............................declaration................................
- int n=1,bool=1,hight=0;
- char nb;
- char *name[40];
- cleardevice();
- Stage s(1);
- Virus p5(154+lin+21,182+col+21,1),p2(182+lin+21,182+col+21,14),p3(196+lin+21,182+col+21,4),p4(168+lin+21,182+col+21,9);
- Pacman p1(168+lin+21,210+col+21+98,15,2);
-
- //.....................animation d'entr‚.....................................
- s.Load();
- s.Intro();
-
- //......................chargement des images................................
- LoadImage(&sDisplay, "bmp/blueky.bmp", &v);
- LoadImage(&sDisplay, "bmp/pipky.bmp", &v1);
- LoadImage(&sDisplay, "bmp/redky.bmp", &v2);
- LoadImage(&sDisplay, "bmp/coeur1.bmp", &v4);
- LoadImage(&sDisplay, "bmp/vide.bmp", &v5);
- LoadImage(&sDisplay, "bmp/yelky.bmp", &v6);
- LoadImage(&sDisplay, "bmp/hich.bmp", &v7);
- LoadImage(&sDisplay, "bmp/hich_g.bmp", &v8);
- LoadImage(&sDisplay, "bmp/hich_h.bmp",&v9);
- LoadImage(&sDisplay, "bmp/hich_bas.bmp",&v10);
- LoadImage(&sDisplay, "bmp/hich_b.bmp",&v11);
- LoadImage(&sDisplay, "bmp/score.bmp",&v12);
- LoadImage(&sDisplay, "bmp/life.bmp",&v13);
- LoadImage(&sDisplay, "bmp/bonus.bmp",&v14);
- LoadImage(&sDisplay, "bmp/pomme.bmp",&v15);
- LoadImage(&sDisplay, "bmp/banane.bmp",&v16);
- LoadImage(&sDisplay, "bmp/rizen.bmp",&v17);
- LoadImage(&sDisplay, "bmp/peur.bmp",&v18);
- LoadImage(&sDisplay, "bmp/getready.bmp",&v19);
- LoadImage(&sDisplay, "bmp/level.bmp",&v20);
- LoadImage(&sDisplay, "bmp/1.bmp",&v21);
- LoadImage(&sDisplay, "bmp/2.bmp",&v22);
- LoadImage(&sDisplay, "bmp/3.bmp",&v23);
- LoadImage(&sDisplay, "bmp/registre.bmp",&v24);
- //.....................affiche stage.................................................
- s.affiche_stage(n);
- s.point_stage();
- p1.SPE_M(80); //vitesse de depart
- //..........................................................................
- while(bool)
- {
- while((p1.lecCPT()!=mm)&&(p1.lecVie()!=-1))
- { Getout(p2,p3,p4,p5);
- Command1(p1,p2,p3,p4,p5);
- p1.Restore();
- p5.Restore2();
- p2.Restore3();
- p3.Restore4();
- p4.Restore5();
- p1.SUB();
- p1.vieSUB();
- p1.Affiche1(0);
- vrai=1;
- }
- if (p1.lecCPT()==mm)
- {
- cleardevice();
- s.affiche_stage(n);
- gotoxy(12,3); printf("%d",p1.lec_cpt()+p1.lec_rai()+p1.lec_ban()+p1.lec_pom());
-
- delay(1000);
-
- if (n<3)
- {
- s.Winner();
- gotoxy(30,16);printf("VOULEZ VOUS CONTINUER O/N :");
- scanf("%s",&nb);
- if( nb =='n') bool=0;
- else
- {
- n+=1;
- cleardevice();p1.REMISE_0();p2.REMISE_0(); p3.REMISE_0();p4.REMISE_0();p5.REMISE_0();
- s.affiche_stage(n);
- s.point_stage();
- p1.SPE_M(p1.lecS()-40);
- }
-
- }else if(n=3) bool=0;
- }
- else {bool=0;}
- if(p1.lecVie()==-1){s.Over();bool=0;}
- hight+=p1.lec_cpt()+p1.lec_rai()+p1.lec_ban()+p1.lec_pom();
- }
-
- cleardevice();
- DisplayImage(&sDisplay, &v24,200,200,0);
- gotoxy(35,19);scanf("%s",&name);
- delay(100);
- cleardevice();
- s.Animation(name,hight);
- printf("%d",hight);
-
- DestroyImage(&v);
- DestroyImage(&v1);
- DestroyImage(&v2);
- DestroyImage(&v3);
- DestroyImage(&v4);
- DestroyImage(&v5);
- DestroyImage(&v6);
- DestroyImage(&v7);
- DestroyImage(&v8);
- DestroyImage(&v9);
- DestroyImage(&v10);
- DestroyImage(&v11);
- DestroyImage(&v12);
- DestroyImage(&v13);
- DestroyImage(&v14);
- DestroyImage(&v15);
- DestroyImage(&v16);
- DestroyImage(&v17);
- DestroyImage(&v18);
- DestroyImage(&v19);
- DestroyImage(&v20);
- DestroyImage(&v21);
- DestroyImage(&v22);
- DestroyImage(&v23);
- DestroyImage(&v24);
-
- getch();
-
- }
#include"stage.h"
#include<time.h>
#include <fcntl.h>
#include <io.h>
#define ESC 0X1B
#define CR 0XD
#define HAUT 0X48
#define BAS 0X50
#define DROIT 0X4D
#define GAUCH 0X4B
#define pi 3.1429654
#define SUP 529
#define INF 123
#define lin 130
#define col 20
int vrai=1;
int bbb=1;
int mm=100;
//t_screen sDisplay;
t_image v,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24;
class Pacman;
class Virus;
class BIG_FOTHER
{
public :
BIG_FOTHER(int,int,int);
friend void Score();
friend void demo_music_laser();
void SPE_M(int s);
void Modifier(int,int);
int lecS(){return speed;}
int lecX(){return x;}
int lecY(){return y;}
protected :
int x,y,c,speed;
};
class Virus:public BIG_FOTHER
{
public :
Virus(int,int,int);
void Affiche(int);
void Cache();
void Command(Pacman,int);
void Command2(Pacman,int);
void Command3(Pacman,int);
friend void Getout(Virus&,Virus&,Virus&,Virus&);
void Up();
void Lf();
void Rg();
void REMISE_0();
void Restore2();
void Restore3();
void Restore4();
void Restore5();
private :
int bool,spool;
};
class Pacman:public BIG_FOTHER
{ public:
Pacman(int,int,int,int vie);
void Affiche1(char);
void Cache1();
void Life(int);
void Add();
void vieADD();
void vieSUB();
void SUB();
void Restore();
void Compteur();
void Pomme();
void Banane();
void Raisin();
int lec_cpt(){return cpt;}
int lec_pom(){return pom;}
int lec_ban(){return ban;}
int lec_rai(){return rai;}
void Play();
void REMISE_0();
int lecCPT(){return cpt;}
void Modifier_cpt(int);
int lecVie(){return vie;}
friend void Command1(Pacman&,Virus,Virus,Virus,Virus);
private:
int vie,ban,rai,pom,cpt;
};
//----------------------------------- constructeur big_fother -------------
BIG_FOTHER::BIG_FOTHER(int x1,int y1,int c1)
{
x=x1;
y=y1;
c=c1;
speed=80;
}
//-------------------------------------------------------------------------
void BIG_FOTHER::SPE_M(int s)
{
speed=s;
}
//----------------------------------- constructeur virus--------------------
Virus::Virus(int x1,int y1,int c1):BIG_FOTHER(x1,y1,c1)
{
spool=0;
bool=0;
}
//----------------------------------- constructeur pacman--------------------
Pacman::Pacman(int a,int b,int c1,int v1):BIG_FOTHER(a,b,c1)
{
ban=0;
rai=0;
pom=0;
vie=v1;
cpt=0;
}
//-------------------------------------------------------------------------
void Pacman::REMISE_0()
{
ban=0;
rai=0;
pom=0;
vie=2;
cpt=0;
vrai=1;
}
//-----------------------------------------------------------------------
void Virus::REMISE_0()
{
spool=0;
bool=0;
}
//----------------------------------- partie sonor--------------------------
void demo_music_laser()
{
for(int count=0;count<10;count++)
{sound(count*100);delay(10);}
nosound();
}
//..........................................................................
void demo_music_ambilance()
{
for(int count=0;count<2;count++)
{sound(4000);delay(5);sound(7000);delay(5);}
nosound();
}
//------------------------------------ les methodes de big_fother------------
void BIG_FOTHER::Modifier(int x1,int y1)
{
x=(x+x1) ;
y=(y+y1) ;
}
//----------------------------------- les methodes de pacman----------------
void Pacman::Compteur()
{
cpt+=1;
gotoxy(12,3);printf("%d",cpt);
sound(7000);
delay(50);
nosound();
}
//.........................................................................
void Pacman::Pomme()
{
pom+=20;
gotoxy(12,13);printf("%d",pom);
sound(5000);
delay(50);
nosound();
}
//........................................................................
void Pacman::Banane()
{
ban+=50;
gotoxy(12,15);printf("%d",ban);
sound(5000);
delay(50);
nosound();
}
//........................................................................
void Pacman::Raisin()
{
rai+=100;
gotoxy(12,17);printf("%d",rai);
sound(7000);
delay(50);
nosound();
}
//.......................................................................
void Pacman::vieADD()
{
vie+=1;
}
//........................................................................
void Pacman::vieSUB()
{
vie=vie-1;
}
//........................................................................
void Pacman::Add()
{
DisplayImage(&sDisplay, &v4,10+20*vie,120,0);
sound(7000);
delay(50);
nosound();
}
//.........................................................................
void Pacman::SUB()
{
DisplayImage(&sDisplay, &v5,10+20*vie,120,0);
}
//.........................................................................
void Pacman::Affiche1(char n)
{
SetPalette(&sDisplay, &v.ihHeader);
setcolor(15);
setfillstyle(1,15);
switch(n)
{
case DROIT :pieslice(lecX()+7,lecY()+7,0,360,5);delay(20);DisplayImage(&sDisplay, &v7,lecX(),lecY(),0);break;
case HAUT :pieslice(lecX()+7,lecY()+7,0,360,5);delay(20);DisplayImage(&sDisplay, &v9,lecX(),lecY(),0);break;
case BAS :pieslice(lecX()+7,lecY()+7,0,360,5);delay(20);DisplayImage(&sDisplay, &v10,lecX(),lecY(),0);break;
case GAUCH :pieslice(lecX()+7,lecY()+7,0,360,5);delay(20);DisplayImage(&sDisplay, &v8,lecX(),lecY(),0);break;
}
}
//..........................................................................
void Pacman::Life(int n)
{
int ii,jj;
setfillstyle(1,4);
randomize();
ii=rand() % 30;
jj=rand() % 30;
if (getpixel(14*ii+lin+21+7,14*jj+col+21+7)!=12)
if (( 14*ii+lin+21 < 500)&&(14*jj+col+21 < 400))
{ if (n==1){DisplayImage(&sDisplay, &v4,14*ii+lin+21,14*jj+col+21,0); }
if (n==2){DisplayImage(&sDisplay, &v15,14*ii+lin+21,14*jj+col+21,0); }
if (n==3){DisplayImage(&sDisplay, &v16,14*ii+lin+21,14*jj+col+21,0); }
if (n==4){DisplayImage(&sDisplay, &v17,14*ii+lin+21,14*jj+col+21,0); }
}
}
//..........................................................................
void Pacman::Cache1()
{
DisplayImage(&sDisplay, &v5,lecX(),lecY(),0);
}
//------------------------------- les methodes de virus---------------------
void Virus::Affiche(int n)
{
SetPalette(&sDisplay, &v.ihHeader);
bool=0;
spool=0;
if(getpixel(x+7,y+7)==2) bool=1;
if(getpixel(x+7,y+7)==15) spool=1;
if (bbb)
{
if (c==4) {DisplayImage(&sDisplay, &v,x,y,0); }
if (c==9) {DisplayImage(&sDisplay, &v1,x,y,0); }
if (c==14) {DisplayImage(&sDisplay, &v2,x,y,0); }
if (c==1) {DisplayImage(&sDisplay, &v6,x,y,0); }
if (c==13) {DisplayImage(&sDisplay, &v7,x,y,0); }
setcolor(0);
setfillstyle(1,0);
switch(n)
{
case 0: pieslice(x+7,y+4,0,360,1);
pieslice(x+12,y+4,0,360,1);
break;
case 1: pieslice(x+4,y+4,0,360,1);
pieslice(x+8,y+4,0,360,1);
break;
case 2: pieslice(x+5,y+6,0,360,1);
pieslice(x+10,y+6,0,360,1);
break;
case 3: pieslice(x+5,y+2,0,360,1);
pieslice(x+10,y+2,0,360,1);
break;
}
}
else DisplayImage(&sDisplay, &v18,x,y,0); //image de la peur v18
}
//.........................................................................
void Virus::Cache()
{
DisplayImage(&sDisplay, &v5,x,y,0);
if (bool) { setcolor(2);setfillstyle(SOLID_FILL,2);pieslice(x+7,y+7,0,360,1);}
//if (spool) { setcolor(15);setfillstyle(SOLID_FILL,15);pieslice(x+7,y+7,0,360,3);}
}
//.........................................................................
void Virus::Command(Pacman p,int n)
{
int choix;
if (( x != p.lecX() ) || ( y != p.lecY() ))
{if (x != p.lecX())
{if (x < p.lecX()) {if ((getpixel(x+7+15,y+7)!=12)) choix=0;else if (getpixel(x+7,y-15+7)!=12) choix=3;}
else {if ((getpixel(x-15+7,y+7)!=12)) choix=1;else if(getpixel(x+7,y+7-15)!=12) choix=2;}}
else
{if (y < p.lecY()) {if(getpixel(x+7,y+15+7)!=12) choix=2;else if (getpixel(x+15+7,y+7)!=12) choix=0;}
else {if (getpixel(x+7,y-15+7)!=12) choix=3;else if (getpixel(x-15+7,y+7)!=12) choix=1;}}
for (int l=1;l<=n;l++)
{
if (vrai){
switch(choix) {
case 0: Cache();x+=14;Affiche(0);
break;
case 1 : Cache();x-=14;Affiche(1);
break;
case 2 : Cache();y+=14;Affiche(2);
break;
case 3 : Cache();y-=14;Affiche(3);
break;
}
delay(speed/10);
}
}
}
else {vrai=0;Cache();delay(100);demo_music_laser();}
}
//........................................................................
void Virus::Command3(Pacman p,int n)
{
int choix;
randomize();
int non=1;
while(non)
{
choix=rand()%4;
switch(choix)
{
case 0:if (getpixel(x+7+15,y+7)!=12) non=0;break;
case 1:if(getpixel(x+7-15,y+7)!=12) non=0;break;
case 2:if (getpixel(x+7,y+7+15)!=12) non=0;break;
// case 3:if (getpixel(x+7,y+7-15)!=12) non=0;break;
}
}
if ( (x!=p.lecX())||(y != p.lecY()) )
{
for (int l=1;l<=n;l++){
if (vrai){
switch(choix) {
case 0 : Cache();if (x != SUP) x+=14;
else if (x==SUP) x=INF;
Affiche(0);
break;
case 1 : Cache();if (x != INF) x-=14;
else if (x==INF) x=SUP;
Affiche(1);
break;
case 2 : Cache();y+=14;Affiche(2);
break;
case 3 : Cache();y-=14;Affiche(3);
break;
} delay(speed/10);
}
}
}
else {vrai=0;Cache();delay(100); demo_music_laser();}
}
//..........................................................................
void Virus::Command2(Pacman p,int n)
{
int choix;
if ( (x!=p.lecX())||(y != p.lecY()) )
{if (y != p.lecY())
{if (y < p.lecY()) {if ((getpixel(x+7,y+7+15)!=12)) choix=2;else if ((getpixel(x+7-15,y+7)!=12)) choix=1;}
else {if ((getpixel(x+7,y+7-15)!=12)) choix=3;else if ((getpixel(x+7+15,y+7)!=12)) choix=0;}}
else
{if (x < p.lecX()) {if((getpixel(x+15+7,y+7)!=12)) choix=0;else if ((getpixel(x+7,y-15+7)!=12)) choix=3;}
else {if ((getpixel(x-15+7,y+7)!=12)) choix=1;else if ((getpixel(x+7,y+7+15)!=12)) choix=2;}}
for (int l=1;l<=n;l++){
if (vrai){
switch(choix) {
case 0 : Cache();if (x != SUP) x+=14;
else if (x==SUP) x=INF;
Affiche(0);
break;
case 1 : Cache();if (x != INF) x-=14;
else if (x==INF) x=SUP;
Affiche(1);
break;
case 2 : Cache();y+=14;Affiche(2);break;
case 3 : Cache();y-=14;Affiche(3);break;
} delay(speed/10);
}
}
} else {vrai=0;Cache();delay(100); demo_music_laser();}
}
//..............................la commande principale .....................
void Command1(Pacman &p1,Virus p2,Virus p3,Virus p4,Virus p5)
{
int c,v;
int slep=0;
char touche;
int stop;
p1.Affiche1(1);
while((vrai) && (touche!=CR) && (p1.lecCPT()!=mm))
{
stop=1;
touche=getch();
if (touche==0X00)
touche=getch();
while(!kbhit()&&(vrai)&&(stop)&&(p1.lecCPT()!=mm)){
switch(touche) {
case DROIT : p1.Cache1();
if (getpixel(p1.lecX()+7+15,p1.lecY()+7) !=12){
if (p1.lecX() != SUP)
p1.Modifier(14,0);
else if (p1.lecX()==SUP)
p1.Modifier(-406,0);}
else stop=0;
break;
case GAUCH : p1.Cache1();
if (getpixel(p1.lecX()-15+7,p1.lecY()+7) !=12) {
if (p1.lecX() != INF+14)
p1.Modifier(-14,0);
else if (p1.lecX()==INF+14)
p1.Modifier(406,0);}
else stop=0;
break;
case BAS : p1.Cache1();
if(getpixel(p1.lecX()+7,p1.lecY()+15+7)!=12){
if (p1.lecY() != SUP)
p1.Modifier(0,14);
else if (p1.lecY()==SUP)
p1.Modifier(0,-520); }
else stop=0;
break;
case HAUT : p1.Cache1();
if (getpixel(p1.lecX()+7,p1.lecY()-15+7)!=12) {
if (p1.lecY() != INF)
p1.Modifier(0,-14);
else if (p1.lecY()==INF)
p1.Modifier(0,520); }
else stop=0;
break;
case ESC : exit(0);
}
if (getpixel(p1.lecX()+7,p1.lecY()+7)==2) p1.Compteur();
if (getpixel(p1.lecX()+7,p1.lecY()+7)==11) p1.Banane();
if (getpixel(p1.lecX()+7,p1.lecY()+7)==13) p1.Raisin();
if (getpixel(p1.lecX()+7,p1.lecY()+7)==1) p1.Pomme();
if (getpixel(p1.lecX()+7,p1.lecY()+7)==15) {bbb=0;p2.Affiche(3);p3.Affiche(3);p4.Affiche(3);p5.Affiche(3);slep=30;bbb=1;} //option qui stop les virus
if (getpixel(p1.lecX()+7,p1.lecY()+7)==9) { p1.vieADD();p1.Add();}//ajout des vies
p1.Affiche1(touche);delay(p1.lecS());
if(slep==0){
p2.Command2(p1,1); //la poursuite
p4.Command2(p1,1);
p3.Command3(p1,1);
p5.Command3(p1,1); //virus fou
if (p1.lecCPT() % 23 ==0) p1.Life(4); //banane
if (p1.lecCPT() % 13 ==0) p1.Life(3); //pomme
if (p1.lecCPT() % 17 ==0) p1.Life(2); //raisin
if (p1.lecCPT() % 55 ==0) p1.Life(1); //coeur
}
else {demo_music_ambilance();slep-=1;}
}
while (!kbhit())
{delay(50);p2.Command2(p1,1);p4.Command3(p1,1);p3.Command(p1,1);p5.Command2(p1,1);} //poursuit quand pac ne bouge pas
}
p1.Cache1(); //effacement de l'ancienne partie
p2.Cache();
p3.Cache();
p4.Cache();
p5.Cache();
}
//..............................le positionement des virus..................
void Getout(Virus &p2,Virus &p3,Virus &p4,Virus &p5)
{
DisplayImage(&sDisplay, &v19,278,260,0); //affiche get_ready
p2.Up(); delay(100); p4.Up(); delay(100); p3.Lf(); delay(100);
p5.Rg(); delay(100); p2.Up(); delay(100); p4.Up(); delay(100);
p3.Up(); delay(100); p5.Up(); delay(100); p2.Up(); delay(100);
p4.Up(); delay(100); p3.Up(); delay(100); p5.Up(); delay(100);
p2.Rg(); delay(100); p4.Lf(); delay(100); p3.Up(); delay(100);
p5.Up(); delay(100); p2.Up(); delay(100); p3.Rg(); delay(100);
p4.Up(); delay(100); p5.Lf(); delay(100); p2.Up(); delay(100);
p4.Up(); delay(100); p3.Rg(); delay(100); p5.Lf(); delay(100);
setcolor(0);
setfillstyle(1,0);
bar3d(278,260,390,280,0,0); //efface get ready
}
//..............................les metodes de deplacement de depart.......
void Virus::Up()
{
Cache();
y-=14;
Affiche(0);
}
//..........................................................................
void Virus::Rg()
{
Cache();
x+=14;
Affiche(0);
}
//..........................................................................
void Virus::Lf()
{
Cache();
x-=14;
Affiche(0);
}
//.......................sauvegarde de position initiale..................
void Pacman::Restore()
{
x=168+lin+21;
y=210+col+21+98;
}
//..........................................................................
void Virus::Restore2()
{
x=154+lin+21;
y=182+col+21;
}
//..........................................................................
void Virus::Restore3()
{
x=182+lin+21;
y=182+col+21,14;
}
//..........................................................................
void Virus::Restore4()
{
x=196+lin+21;
y=182+col+21,4;
}
//..........................................................................
void Virus::Restore5()
{
x=168+lin+21;
y=182+col+21;
}
//------------------------------- affichage du stage -----------------------
void Stage::affiche_stage(int n)
{ setcolor(12);
SetPalette(&sDisplay, &v.ihHeader);
DisplayImage(&sDisplay, &v12,5,28,0);
DisplayImage(&sDisplay, &v13,5,90,0);
DisplayImage(&sDisplay, &v4,10,120,0); //v4 dessine les coeurs
DisplayImage(&sDisplay, &v4,30,120,0); //
DisplayImage(&sDisplay, &v4,50,120,0); //
DisplayImage(&sDisplay, &v14,5,160,0);
DisplayImage(&sDisplay, &v15,20,200,0);
DisplayImage(&sDisplay, &v16,20,230,0);
DisplayImage(&sDisplay, &v17,20,260,0);
DisplayImage(&sDisplay, &v20,540,28,0); //dessine level
if(n==1)DisplayImage(&sDisplay, &v21,610,28,0); //dessine level
if(n==2)DisplayImage(&sDisplay, &v22,610,28,0); //dessine level
if(n==3)DisplayImage(&sDisplay, &v23,610,28,0); //dessine level
int p=0;
gotoxy(12,3);printf("%d",p);
gotoxy(12,13);printf("%d",p);
gotoxy(12,15);printf("%d",p);
gotoxy(12,17);printf("%d",p);
int H = open("Grille.txt",O_RDWR | O_BINARY); //charge la grille from a fichier
if(H!=-1)
{
char c;
for(int j=0;j<32;j++)
{
for(int i=0;i<31;i++)
{
read(H,&c,1);
if(c!=13 );
{
setcolor(12);
setfillstyle(1,12);
if(c=='1') {bar3d(14*i+lin,14*j+col,14*i+lin+14,14*j+col+14,0,0);}
}
}
}
close(H);
}
}
//.............................affiche les boules a boufer..................
void Stage::point_stage()
{
for (int i=0;i<30;i++)
for(int j=0;j<33;j++)
{if (getpixel(14*i+lin,14*j+col)==0)
{setcolor(2);setfillstyle(SOLID_FILL,2);pieslice(14*i+lin,14*j+col,0,360,1);}}
setcolor(15);
setfillstyle(1,15);
pieslice(lin+28,120-17,0,360,3);
pieslice(lin+380-2,120-17,0,360,3);
pieslice(lin+28,380+17,0,360,3);
pieslice(lin+380-2,380+17,0,360,3);
}
//-----------------------------parti animation de classe stage--------------
//----------------------------animation de game ovre -----------------------
void Stage::Over()
{
setcolor(0);
setfillstyle(1,0);
bar3d(0,0,120,20,0,0);
gotoxy(1,1);printf("GAME-OVER");
for (int i2=0;i2<=120;i2++)
for (int j2=0;j2<=15;j2++)
{
setcolor(j2%9+8);
setfillstyle(1,j2%9+8); if (getpixel(i2,j2)!=BLACK) pieslice(i2*6+130,j2*6+200,0,360,5);
delay(5);
}
}
//----------------------------animation hight score-----------------------
void Stage::Animation(char *name[40],int hight)
{
gotoxy(1,1);printf("%s",name);
gotoxy(1,2);printf("%d",hight);
for (int i2=0;i2<=100;i2++)
for (int j2=0;j2<=100;j2++)
{
setcolor(j2%9+8);
setfillstyle(1,j2%9+8);
if (getpixel(i2,j2)!=BLACK) {putpixel(i2,j2,0);pieslice(i2*8+130,j2*8+150,0,360,2);}
}
}
//----------------------- animation de victoire--------------------------
void Stage::Winner()
{
int x1,y1,c1;
setcolor(0);
setfillstyle(1,0);
bar3d(0,0,120,20,0,0);
t_image load;
LoadImage(&sDisplay, "bmp/star.bmp", &load); //affichage d'etoiles
DisplayImage(&sDisplay, &load,0,0,0);
for(int l=1;l<30;l++)
{
c1=rand()%10;
x1=rand()%400;
y1=rand()%300;
for (int i2=0;i2<=20;i2++)
for (int j2=0;j2<=25;j2++)
{
setcolor(l);
setfillstyle(1,l);
if (getpixel(i2,j2)!=BLACK) pieslice(i2*c1+x1,j2*c1+y1,0,360,2);
}
}
setcolor(0);
setfillstyle(1,0);
bar3d(0,0,120,20,0,0);
gotoxy(1,1);printf("WINNER"); //affiche winner
for (int i2=0;i2<=60;i2++)
for (int j2=0;j2<=15;j2++)
{ delay(1);
setcolor(15);
setfillstyle(1,15);
if (getpixel(i2,j2)!=BLACK) pieslice(i2*6+200,j2*6+210,0,360,5);
}
setcolor(0);
setfillstyle(1,0);
bar3d(195,240,480,256,0,0);
delay(1000);
DestroyImage(&load); //destructio d'image
}
//*************************programme principale***************************
void main()
{
InitGraphics(&sDisplay);
//...............................declaration................................
int n=1,bool=1,hight=0;
char nb;
char *name[40];
cleardevice();
Stage s(1);
Virus p5(154+lin+21,182+col+21,1),p2(182+lin+21,182+col+21,14),p3(196+lin+21,182+col+21,4),p4(168+lin+21,182+col+21,9);
Pacman p1(168+lin+21,210+col+21+98,15,2);
//.....................animation d'entr‚.....................................
s.Load();
s.Intro();
//......................chargement des images................................
LoadImage(&sDisplay, "bmp/blueky.bmp", &v);
LoadImage(&sDisplay, "bmp/pipky.bmp", &v1);
LoadImage(&sDisplay, "bmp/redky.bmp", &v2);
LoadImage(&sDisplay, "bmp/coeur1.bmp", &v4);
LoadImage(&sDisplay, "bmp/vide.bmp", &v5);
LoadImage(&sDisplay, "bmp/yelky.bmp", &v6);
LoadImage(&sDisplay, "bmp/hich.bmp", &v7);
LoadImage(&sDisplay, "bmp/hich_g.bmp", &v8);
LoadImage(&sDisplay, "bmp/hich_h.bmp",&v9);
LoadImage(&sDisplay, "bmp/hich_bas.bmp",&v10);
LoadImage(&sDisplay, "bmp/hich_b.bmp",&v11);
LoadImage(&sDisplay, "bmp/score.bmp",&v12);
LoadImage(&sDisplay, "bmp/life.bmp",&v13);
LoadImage(&sDisplay, "bmp/bonus.bmp",&v14);
LoadImage(&sDisplay, "bmp/pomme.bmp",&v15);
LoadImage(&sDisplay, "bmp/banane.bmp",&v16);
LoadImage(&sDisplay, "bmp/rizen.bmp",&v17);
LoadImage(&sDisplay, "bmp/peur.bmp",&v18);
LoadImage(&sDisplay, "bmp/getready.bmp",&v19);
LoadImage(&sDisplay, "bmp/level.bmp",&v20);
LoadImage(&sDisplay, "bmp/1.bmp",&v21);
LoadImage(&sDisplay, "bmp/2.bmp",&v22);
LoadImage(&sDisplay, "bmp/3.bmp",&v23);
LoadImage(&sDisplay, "bmp/registre.bmp",&v24);
//.....................affiche stage.................................................
s.affiche_stage(n);
s.point_stage();
p1.SPE_M(80); //vitesse de depart
//..........................................................................
while(bool)
{
while((p1.lecCPT()!=mm)&&(p1.lecVie()!=-1))
{ Getout(p2,p3,p4,p5);
Command1(p1,p2,p3,p4,p5);
p1.Restore();
p5.Restore2();
p2.Restore3();
p3.Restore4();
p4.Restore5();
p1.SUB();
p1.vieSUB();
p1.Affiche1(0);
vrai=1;
}
if (p1.lecCPT()==mm)
{
cleardevice();
s.affiche_stage(n);
gotoxy(12,3); printf("%d",p1.lec_cpt()+p1.lec_rai()+p1.lec_ban()+p1.lec_pom());
delay(1000);
if (n<3)
{
s.Winner();
gotoxy(30,16);printf("VOULEZ VOUS CONTINUER O/N :");
scanf("%s",&nb);
if( nb =='n') bool=0;
else
{
n+=1;
cleardevice();p1.REMISE_0();p2.REMISE_0(); p3.REMISE_0();p4.REMISE_0();p5.REMISE_0();
s.affiche_stage(n);
s.point_stage();
p1.SPE_M(p1.lecS()-40);
}
}else if(n=3) bool=0;
}
else {bool=0;}
if(p1.lecVie()==-1){s.Over();bool=0;}
hight+=p1.lec_cpt()+p1.lec_rai()+p1.lec_ban()+p1.lec_pom();
}
cleardevice();
DisplayImage(&sDisplay, &v24,200,200,0);
gotoxy(35,19);scanf("%s",&name);
delay(100);
cleardevice();
s.Animation(name,hight);
printf("%d",hight);
DestroyImage(&v);
DestroyImage(&v1);
DestroyImage(&v2);
DestroyImage(&v3);
DestroyImage(&v4);
DestroyImage(&v5);
DestroyImage(&v6);
DestroyImage(&v7);
DestroyImage(&v8);
DestroyImage(&v9);
DestroyImage(&v10);
DestroyImage(&v11);
DestroyImage(&v12);
DestroyImage(&v13);
DestroyImage(&v14);
DestroyImage(&v15);
DestroyImage(&v16);
DestroyImage(&v17);
DestroyImage(&v18);
DestroyImage(&v19);
DestroyImage(&v20);
DestroyImage(&v21);
DestroyImage(&v22);
DestroyImage(&v23);
DestroyImage(&v24);
getch();
}
Conclusion
il manque le zip la semaine prochaine je les completerai
peut etre y a un probleme avec l'instruction <delay> dans certain pc vous remarqué que le jeu ne fonctionne pas correctement . je vous assurre que le jeu est bien fait et se probleme et hors de mes connaissance.
Historique
- 15 juin 2005 20:14:50 :
- voila j'ai ajouter les fichier restant
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
PACMAN [ par firesnake ]
Bonjour tout le monde! Je viens de terminer mon premier jeu DOS en Borland C++ : PACMAN 1.0. C'est plutot une version de test qu'un jeu à part entière
le dur chemin du debutant...? [ par zevince ]
Salut,je decouvre ce site.. et ca a l'air bien cool et y'a l'air d'y avoir du passage.. ca tombe bien !moi : je connais bien html, xml, xslt et j'ai d
Besoin d'images pour un jeu de rôle [ par LightningFlik ]
Voilà, je fais un jeu de rôle et je n'ai pas d'images. Je pourrais évidemment les prendre dans d'autres jeux (c'et ce que j'ai fait mais ce n'est que
recherche [ par arnaudcoutant ]
je recherche des personnes, codeurs, graphistes, infographistes ,etc... connaissant le c++ ou opengl pour réaliser un jeu vidéos pc, si cela vous inte
urgent recherche très vite [ par arnaudcoutant ]
je recherche des personnes, codeurs, graphistes, infographistes ,etc... connaissant le c++ ou opengl pour réaliser un jeu vidéos pc, si cela vous inte
**recherche très vite personne interréssé ********* [ par arnaudcoutant ]
je recherche des personnes, codeurs, graphistes, infographistes ,etc... connaissant le c++ ou opengl pour réaliser un jeu vidéos pc, si cela vous inte
pour ,prog c++ et 2D vite [ par arnaudcoutant ]
je recherche des personnes, codeurs, graphistes, infographistes ,etc... connaissant le c++ ou opengl pour réaliser un jeu vidéos pc, si cela vous inte
Jeu DirectX [ par Mickylord ]
Bonjour , je vien de commencer a faire mon premier jeu en DirectX , mais j'ai un petit problème : J'aimerai que quand j'appui sur la touche droite ( p
recherche codeur et programeur [ par loicus ]
Bonjours, tout le monde, je suis a la recherche de programeur et de codeur c++, pour la programation d'un jeu de strategie temp réel,Ce jeu sera doté
Comment mettre en commun deux surfaces ? [ par JMGR ]
Bonjour,Je dévellope un jeu de stratégie en 2D, je crée des tiles de 10*10 pixels et mon jeu est en 800*600.Donc si je fait comme ça, ça rame énorméme
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Forum
ARBRE BINAIREARBRE BINAIRE par pacotheking
Cliquez pour lire la suite par pacotheking
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|