Planete

Description

un petit jeu...(vous avez dit space invaders???)
en effet y'a du progres depuis bonhomme.....
utilisez [4],[5]et[6] pour jouer...
utiliser au debut entrer ou echap plusrs fois....
bon le code tt de suite:

Source / Exemple :


#include "graphG.cpp"
#include "bmp.cpp"
#include "gui.cpp"
#include <unistd.h>
#include <time.h>
#include <math.h>

#define depla 8
#define nbrlaser 99
#define tempoDeplaE 3

int nbrVie=10;

struct Tire
 {
  int etat;
  int zoneX;
  int zoneY;
  int action;
 };

struct Ennemi
 {
  int etatE;
  int zoneXE;
  int zoneYE;
  int anim;
  int tire;
  int compteLaser;
  Tire LaserE;
 };

struct Navette
 {
  int etatN;
  int zoneXN;
  int zoneYN;
 };

struct trajecT
 {
  int x,y;
 };

Tire Laser[nbrlaser];
Ennemi navE[6];
Navette navette;
trajecT dirP[20];
trajecT dirM[20];

void InitTable();
void copieEcran();
void Navette(int x,int y);
void NavetteE(int x,int y);
void InitStructLaser();
void InitLaserEX(int x);

void jeu();
void laser(int x,int count);
void laserE();
void InitStructEnnemi();
void PlaceEnnemi(int anim,int gd);
void InitStructNavette();
void InitStrucLaserX(int x);
void InitTraject();

void InitStructNavette()
{
 navette.etatN=0;
 navette.zoneXN=0;
 navette.zoneYN=168;
}

void InitStructLaser()
{
 for(int i=0;i<nbrlaser+1;i++)
  {
   Laser[i].etat=0;
   Laser[i].zoneY=168;
   Laser[i].zoneX=0;
   Laser[i].action=0;
  }
}

void InitStructLaserX(int x)
{
 Laser[x].etat=0;
 Laser[x].zoneY=168;
 Laser[x].zoneX=0;
 Laser[x].action=0;
}

void InitLaserE()
{
 for(int i=0;i<6;i++)
  {
    InitLaserEX(i);
  }
}

void InitLaserEX(int x)
{
  navE[x].LaserE.etat=0;
  navE[x].LaserE.action=0;
  navE[x].LaserE.zoneX=0;
  navE[x].LaserE.zoneY=0;
}

void InitStructEnnemi()
{
 for(int i=0;i<6;i++)
  {
   navE[i].etatE=0;
   navE[i].anim=0;
   navE[i].tire=1;
   navE[i].compteLaser=0;
  }
}

int taby[21];

void InitTraject()
{
 double tabP[21],tabM[21];

 for(int i=0;i<21;i++)
  {
    dirP[i].x=i*16;
    tabP[i]=log(i*10);
    dirP[i].y=(int)(tabP[i]*16);
  }

 int k=0,j=20;

 for(k=0,j;j>=0;j--,k++)
  {
    dirM[k].x=j*16;
    tabM[k]=log(k*10);
    dirM[k].y=(int)(tabM[k]*16);
    taby[k]=j;
  }
}

void PlaceEnnemi(int anim,int gd)
{
 for(int i=0;i<6;i++)     //1=6
  {
   if(gd==0)
    {
     navE[i].zoneXE=dirP[i+anim+1].x;
     navE[i].zoneYE=dirP[i+anim+1].y;
    }

   if(gd==1)
    {
     navE[i].zoneXE=dirM[i+anim+1].x;
     navE[i].zoneYE=dirM[i+anim+1].y;
    }

   if(navE[i].etatE==0)loadsprite("NavE.bmp",navE[i].zoneXE,navE[i].zoneYE,buffer_virtuel);
   if(navE[i].etatE==2)loadsprite("Efface.bmp",navE[i].zoneXE,navE[i].zoneYE,buffer_sprite);
   if(navE[i].anim>1)  loadsprite("explo.bmp",navE[i].zoneXE,navE[i].zoneYE,buffer_virtuel);
   if(navE[i].anim>5)

   {
     loadsprite("Efface.bmp",navE[i].zoneXE,navE[i].zoneYE,buffer_virtuel);
     navE[i].etatE=1;
    }
  }
}

void laser(int x,int count)
{
 int T;
 int i=0;
 for(i;i<nbrlaser;i++)
  {
   if(Laser[i].etat==1)
    {
     Laser[i].zoneY=Laser[i].zoneY-2;
      if(Laser[i].zoneY>=0)PixelG(Laser[i].zoneX,Laser[i].zoneY,15,REEL);//loadsprite("tire.bmp",Laser[i].zoneX,Laser[i].zoneY,buffer_virtuel);
       {
        for(int i1=0;i1<6;i1++)
         {
          if(Laser[i].zoneX==navE[i1].zoneXE)
           {
            if(Laser[i].zoneY==navE[i1].zoneYE || Laser[i].zoneY==navE[i1].zoneYE-1 ||Laser[i].zoneY==navE[i1].zoneYE+1)
             {
              if(navE[i1].etatE!=2)
                {
                 navE[i1].etatE=1;
                 Laser[i].etat=0;
                 InitStructLaserX(i);
                }
             }
           }
         }
       }
    }
  //i++;
  //i1++;
  //if(i1>6)i1=0;
  }
}

void laserE()
{
  for(int i=0;i<6;i++)     //1=6
  {

     if(navE[i].LaserE.etat==1&&navE[i].etatE!=2)
      {
       navE[i].LaserE.zoneY=navE[i].LaserE.zoneY+2;
        if(navE[i].LaserE.zoneY>200 )InitLaserEX(i);
        loadsprite("tireE.bmp",navE[i].LaserE.zoneX,navE[i].LaserE.zoneY,buffer_virtuel);
       }
   }
}

void jeu()
{

  {
   InitTraject();
   InitStructLaser();
   InitStructEnnemi();
   InitStructNavette();
   graphicG();
   EraseScreen();
   for(int i=0;i<nbrVie;i++)
    {
    loadsprite("vie.bmp",i*16,1,video_buffer);
    }
    toucheKey(27);
   

   loadbmp("planete.bmp",320,200,buffer_virtuel);
   memcpy(video_buffer,buffer_virtuel,64000L);
   toucheKey(13);
  }

  int ta=0;
  int count=0;
  int key;
  int x=0,y=168,xE=0,yE=0;
  int t=0;
  int deplaE=0;
  int deplacount=0;
  int gdE=0;
  int modulo;
 do
  {
   key=0;
   key=KeyPress2();
   switch(key)
    {
     case AVANT:if(navette.zoneXN>=304)break;navette.zoneXN=navette.zoneXN+depla;break;
     case ARRIERE:if(navette.zoneXN<=0)break;navette.zoneXN=navette.zoneXN-depla;break;
     case 53:if(count==nbrlaser){count=-1;InitStructLaser();};count++;Laser[count].etat=1;Laser[count].zoneX=navette.zoneXN;Laser[count].action=1;break;
     case 13:toucheKey(13);break;
     default :break;
    }

   for(int i=0;i<6;i++)
    {
     if(navE[i].etatE==1)navE[i].anim++;
     if(navE[i].anim>6){navE[i].anim=0;navE[i].etatE=2;}
    }

    for(int u=0;u<6;u++)
     {
      if(navE[u].zoneXE==navette.zoneXN||navE[u].zoneXE==navette.zoneXN+1||navE[u].zoneXE==navette.zoneXN-1)
       {
        navE[u].tire=1;
        navE[u].LaserE.etat=1;
        navE[u].LaserE.zoneX=navE[u].zoneXE;
        navE[u].LaserE.zoneY=navE[u].zoneYE;
       }
      }

    if(deplacount>tempoDeplaE)
     {
       deplaE++;
       deplacount=0;
       if(deplaE>18)
        {
         deplaE=0;
         InitStructEnnemi();
         gdE++;
         modulo=gdE%2;
        }
      }
    deplacount++;

   {
    loadbmp("planete.bmp",320,200,buffer_virtuel);
    loadsprite("navette.bmp",navette.zoneXN,navette.zoneYN,buffer_virtuel);
    PlaceEnnemi(deplaE,modulo);
    laser(0,0);
    LigneG(0,0,320,0,0,VIRTUEL);
    laserE();
    for(int v=0;v<nbrVie;v++)
     {
       if(navE[v].LaserE.zoneY==navette.zoneYN)
       {
        if(navE[v].LaserE.zoneX==navette.zoneXN)
         {
          nbrVie--;
          InitLaserEX(v);
         }
        }
      loadsprite("vie.bmp",v*4,1,buffer_virtuel);
     }
    memcpy(video_buffer,buffer_virtuel,64000L);
   }
  }
 while(nbrVie!=0 && key!=27);

 toucheKey(27);
 Revenir();
gotoxy(1,1);
printf("%d",nbrVie);

toucheKey(13);

}

void main()
{
 jeu();
}

Conclusion :


graphG.cpp et bmp.cpp st dispo ds la section "graphique"
pour gui.cpp demandez le moi par mail...
enfin,si vous telecharger la source et le "*".exe,vous vous apercevrez ke qd on envoie la sauce avec les lasers,ca ralentit !!!!
si vous avez une solution,proposez la moi,merci.

Codes Sources

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.