Planete

Soyez le premier à donner votre avis sur cette source.

Vue 5 704 fois - Téléchargée 287 fois

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

A voir également

Ajouter un commentaire Commentaires
et en plus les includes,ils sont ds la section graphique
pour gui.cpp demandez le moi....
bah ouai c plus facile...et ca va plus vite.....
mais faire ce genre de truc ca me lourde de chercher (et en plus g pas trop le tps de m'emmerder a chercher tout les truc sur les bmp,
et si y'en a ki les mettent sur internet,c'est ke pour des débutant komme moi puisse les prendre!!!!!!

on a pas tes include personalisés.
tu fait des jeux avec les pointeurs tellement dangereux ke ca fait tout planter.
c un peu facile d'utiliser des trucs deja fait ki charge tout seul des bmp non ?

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.