Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2016-05-14 12:49:02 problem colisions

dupire.florian
nouveau membre
Date d'inscription: 2016-04-26
Messages: 5

problem colisions



bonjour, voila je dois creer un jeu de bulle et pour cela je dois d'abord commencer par lancer les balles jusqu'en haut pour que les colisions fonctionne mais je n'arrive pas a regler ce paramêtre, je lance plusieurs balles en même temps a des endroits aléatoire, vitesse aléatoire et couleurs aléatoires et une fois que deux balles se touchent elles s'arrête alors qu je voudrais qu'elle s'arrête une fois qu'elle touche le haut ou les boules deja mise e qu'ells n soient pas l'une sur l'autre.
pouvez vous m'aider ? j'aimerai avoir une reponse avant lundi matin

color [] couleur = new color [10000];
int Ncouleur;
color Couleur;
float a;
float delta;
float FX = 160; //modifiable avec touche droite gauche
float FY = 380;
int nb=0;
int nb2=0;
Balle[]balle=new Balle[10000];
boolean perdu = false;



void setup() {   
  size (320, 600);   
  for (int i = 0; i<1000; i++) {
    Ncouleur = int(random(1, 5));
    Couleurs();
    couleur[i] = Couleur;
  }
  for (int i=0; i<=28; i++) {   
      balle[i]=new Balle(random(20,320), random(20,300), 0,random(-4,-7) , couleur[i]);
       }
 
  for(int i=28;i<1000;i++){
    balle[i]=new Balle(160,413,random(-5,5),-3,couleur[i]);
  }
}



void draw() {   
  background(#92E9FA);
  noStroke();
//lancement();
if (perdu == false){
  for (int i=0; i<nb; i++) {   
    balle[i].rebondir();   
    balle[i].bouger();
  }
  for (int i=0; i<nb; i++) {   
    for (int j = i + 1; j < nb; j++) {
  balle[i].collision(balle[j]);   
    }
   
}


  for (int i=0; i<nb; i++) {   
    balle[i].afficher();
  }
  calcul ();
  fleche();
  noStroke();
  fill(couleur[nb ]);
  ellipse (160, 413, 40, 40);
  fill(couleur[nb + 1]);
  ellipse (200, 413, 40, 40);
  stroke (255, 00, 00);
  line (0, 391, 320, 391);
  line (0, 392, 320, 392);
}else{
  textSize (40);
text("GAME OVER", 20, height/2);   }
}


void keyPressed () {
 
  if (key == 'z') {

    nb = nb + 1;
  } else {
    if(key=='a'){
    nb=nb+28;
    }


    if (keyCode == LEFT) {
      FX = FX - 10;
    }

    if (keyCode == RIGHT) {
      FX = FX + 10;
    }
  }
}
//void lancement(){
  //for(int i=;i<=28;i++){
    //for(int j=i+28;j<28-1;j++){
   // nb=nb+10;
    //}
    //}
//}
     
void calcul () {
  a = (160-FX)*(160-FX) ;
  delta = 682276-4*(a+170569-(50*50)) ;   // 50 est la longeur de la fleche
  FY = (826-sqrt(delta))/2 ;
}

Balle {   
  PVector position;   
  PVector deplacement; 
  int rayon;   
  boolean bing;
  color couleur;
  boolean ligne=false;
  int x;
  int y;

  Balle(float px, float py, float dx, float dy , color nouvCouleur) { 
    position = new PVector(px, py);   
    deplacement=new PVector (dx, dy);   
    rayon = 20;
    couleur = nouvCouleur;
  }   

  void rebondir() {
    bing = false;
    if (position.x > width|| position.x < 0) 
    { 
      deplacement.x=deplacement.x*-1;
    }   
    if (position.y<20) 
    {   
      deplacement.y= 0;
      deplacement.x=0;
    }
   
    if (position.y > 391-20 &&  deplacement.y== 0 )
    {
      perdu = true;
  }}

  void bouger() {   
    position.add(deplacement);
  }   

  void collision(Balle j)   {
 
    float distance = position.dist(j.position);   
    if (distance<40) {
      bing = true;
      j.bing = true;
   }

  }

  void afficher() {
    if (bing) {
      deplacement.x=0;
      position.x=position.x;
      deplacement.y=0;
      position.y=position.y;
    }
   
    fill (couleur);
    ellipse(position.x, position.y, 40, 40);
  }
}


void Couleurs() {
  if (Ncouleur==1) {
    Couleur=color(255, 0, 0);
  } else {
    if (Ncouleur==2) {
      Couleur=color(0, 255, 0);
    } else {
      if (Ncouleur==3) {
        Couleur=color(0, 0, 255);
      } else {
        Couleur=color(255, 255, 0);
      }
    }
  }
}

void fleche() {
  stroke (255, 0, 0);
  line( 160, 413, FX, FY);
}

Dernière modification par dupire.florian (2016-05-14 13:28:37)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024