Bordel

Contenu du snippet

utiliser le pavé numerik pour la diretcion du "vent"
et [r] pour du "vent" aleatoire
utiliser [-] et[+] pour la vitesse
et [p] et [m] pour le nbre de "flocons"

Source / Exemple :


#include <stdlib.h>
#include "gui.cpp"
#include "bmp.cpp"

#define nbrPoint 1000
int nbrPointVar=1;

struct direction
{
 int dirX;
 int dirY;
};

struct point
{
 int startX;
 int startY;
 direction dir;
 char couleur;
 int vitesse;
 direction sens;
};

point table[nbrPoint];

void InitTable(int g);
void RemplirTable(int g);
void InitTableT();
void RemplirTableT();
void direction();

void InitTable(int g)
{
  table[g].startX=0;
  table[g].startY=0;
  table[g].dir.dirX=1;
  table[g].dir.dirY=1;
  table[g].couleur=0;
  table[g].vitesse=0;
}

void RemplirTable(int g)
{
 table[g].startX=random()%319;
 table[g].startY=random()%199;
 table[g].dir.dirX=(random()%5)+1;
 table[g].dir.dirY=(random()%5)+1;
 table[g].couleur=(random()%255)+1;
 table[g].vitesse=(random()%3)+2;
 table[g].sens.dirX=(random()%2);
 table[g].sens.dirY=(random()%2);
}

void InitTableT()
{
 for(int i=0;i<nbrPoint;i++)
  {
   InitTable(i);
  }
}

void RemplirTableT()
{
 for(int i=0;i<nbrPoint;i++)
  {
   RemplirTable(i);
  }
}

void main()
{
 graphicG();
 InitTableT();
 RemplirTableT();
 int sensPMX=1,sensPMY=1;
 int sensT;
 int Vdelay=50;
 int key=0;
 int interupt=1;
 int ransens=0;
 int colorR=0,colorV=0,colorB=0;

 for(int color=0;color<255;color++)
   {
     SetPal(color,color,color,color);
   }
do
 {

   int randL;
   randL=random()%160;

   key=KeyPress2();

      switch(key)
       {
         case 43:Vdelay--;if(Vdelay<=0)Vdelay=0;break;
         case 45:Vdelay++;break;

         case 50:sensPMY=1;sensPMX=0;interupt=0;ransens=0;break;
         case 56:sensPMY=-1;sensPMX=0;interupt=0;ransens=0;break;
         case 54:sensPMX=1;sensPMY=0;interupt=0;ransens=0;break;
         case 52:sensPMX=-1;sensPMY=0;interupt=0;ransens=0;break;

         case 55:sensPMY=-1;sensPMX=-1;interupt=0;ransens=0;break;
         case 51:sensPMY=1;sensPMX=1;interupt=0;ransens=0;break;
         case 49:sensPMX=-1;sensPMY=1;interupt=0;ransens=0;break;
         case 57:sensPMX=1;sensPMY=-1;interupt=0;ransens=0;break;

         case 112:nbrPointVar++;if(nbrPointVar>nbrPoint)nbrPointVar=nbrPoint;break;
         case 109:nbrPointVar--;if(nbrPointVar<1)nbrPointVar=1;break;

         case 53:interupt=1;ransens=0;break;

         case 114:ransens=1;interupt=0;break;

         case 27:Revenir();exit(EOF);break;

         default:break;
       }

       if(ransens==1)
        {
         switch(randL)
           {
            case 0:sensPMY=1;sensPMX=0;break;
            case 1:sensPMY=-1;sensPMX=0;break;
            case 2:sensPMX=1;sensPMY=0;break;
            case 3:sensPMX=-1;sensPMY=0;break;
            case 4:sensPMY=-1;sensPMX=-1;break;
            case 5:sensPMY=1;sensPMX=1;break;
            case 6:sensPMX=-1;sensPMY=1;break;
            case 7:sensPMX=1;sensPMY=-1;break;
            case 8:{ for(int k=0;k<nbrPoint;k++)
                   {
                   switch(table[k].sens.dirX)
                   {case 0:sensPMX=-1;break; case 1:sensPMX=1;break;}
                   switch(table[k].sens.dirY)
                   {case 0:sensPMY=-1;break;case 1:sensPMY=1;break;}
                   };}
                   break;
           }
         }

  for(int i=0;i<nbrPointVar;i++)
   {

    if(interupt==1)
     {
    switch(table[i].sens.dirX)
     {
      case 0:sensPMX=-1;break;
      case 1:sensPMX=1;break;
     }

     switch(table[i].sens.dirY)
      {
       case 0:sensPMY=-1;break;
       case 1:sensPMY=1;break;
      }
     }

    if(table[i].startX<0)  RemplirTable(i);
    if(table[i].startX>320)RemplirTable(i);
    if(table[i].startY<0)  RemplirTable(i);
    if(table[i].startY>200)RemplirTable(i);

    table[i].startX+=(table[i].dir.dirX*sensPMX);
    table[i].startY+=(table[i].dir.dirY*sensPMY);
    PixelG(table[i].startX,table[i].startY,table[i].couleur,REEL);

      key=KeyPress2();
    }
  delay(Vdelay);
  wait();
  memcpy(video_buffer,buffer_vide,64000+320);
}
while(1);

toucheKey(27);
Revenir();
}

A voir également

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.