Annonce

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


#1 2016-02-29 15:40:09 [C8delab] C8deLabyrinth

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

[C8delab] C8deLabyrinth



Et voici donc ma contribution pour fêter les 8 ans Codelab... smile

>>> C8deLabyrinth <<<

(Bien entendu, si certaines bouboules ne coopèrent pas, c'est le fait d'un l’algorithme savamment étudié pour qu'elles se comportent ainsi. Cela va de soi. roll )

http://yamatierea.org/C8deLabyrinth/c8delabyrinth.png

Code (JavaScript) :

// Copyright Olivier Baudu 2016
// Published under the terms of GPL v3.0

var masterPiece;
var img = [];
var labyrinth = [];
var non_modifiable;
var wait;
var bouboule;

var mesBoules = [];
var vitesse;

var reload;

function preload() {
  img[0] = loadImage("0.png");
  img[1] = loadImage("1.png");
  bouleNoire = loadImage("bouleNoire.png");
  bouleJaune = loadImage("bouleJaune.png");
}

function setup() {

    masterPiece = createCanvas(600, 600);
    masterPiece.parent('tableau');
    noStroke();
    frameRate(60);

    
    for(var i=0; i<900; i++) {
        labyrinth[i] = new Couloir(i);
        labyrinth[i].show();
    }
    
    loadPixels();
    reload = false;

    if (wait == 0) {    
        non_modifiable = -1;
    } else wait--;

    vitesse = createVector(0, 1);  
}

function draw() {

    background(0);
    imageMode(CORNER);

    for(var i=0; i<labyrinth.length; i++) {
        labyrinth[i].show();

        if (labyrinth[i].survol(mouseX, mouseY) &&
            mouseY < height &&
            mouseIsPressed &&
            non_modifiable != i ) {               
                labyrinth[i].onOff();
                reload = true;
                non_modifiable = i;
                wait = 60;
        }
  }

  if(frameCount%30 == 0) {reload = true;}
  if (reload) {loadPixels();}
  reload = false;    

  imageMode(CENTER);
  if (frameCount%20 == 0 & mesBoules.length < 100) {
    mesBoules.push(new Boule(int(random(2))));
  }

  for(var i=0; i<mesBoules.length; i++) {
    mesBoules[i].show();
  }
}

function Couloir(num) {

    this.nbImgPerLine = 30;

    this.size = img[0].width;
    this.x = num%this.nbImgPerLine * this.size;
    this.y = int(num/this.nbImgPerLine) * this.size;
    
    this.on = false;//int(num/this.nbImgPerLine)%2 == 0;

    this.index = 0;

    this.show = function(xM, yM) {
        image(img[this.on ? 0 : 1], this.x, this.y);
        // if(int(random(5000)) == 0) {
        //   this.onOff();
        // }
    }

    this.survol = function(xM, yM) {
        return xM > this.x &
               xM <= this.x+this.size &
               yM > this.y &
               yM <= this.y+this.size;
    }

    this.onOff = function() {
        this.on = !this.on;
      }
}

function Boule(coul) {

  this.centre;
  this.ble;
  this.val;

  if (coul == 0) {
    this.centre = createVector(int(random(4)+20)*20+19,0);
    this.val = 0
    this.ble = bouleNoire;
  } 
  else {
    this.centre = createVector(int(random(4)+20)*20+9,0);
    this.val = 255
    this.ble = bouleJaune;
  }

  this.show = function() {

    this.testDroit = pixels[4*((this.centre.y+3)*width+this.centre.x+2)] == this.val;
    this.testGauche = pixels[4*((this.centre.y+3)*width+this.centre.x-2)] == this.val;

    if (this.testDroit && !this.testGauche) {this.centre.x--;}
    if (this.testGauche && !this.testDroit) {this.centre.x++;}
    if (this.testGauche && this.testDroit) {vitesse.y = 0;}
    else {vitesse.y = 1;}

    this.centre.add(vitesse);

 
    for (var i=mesBoules.length-1; i >= 0; i--) {
 
      this.element = mesBoules[i];
      this.distance = this.centre.dist(this.element.centre);
 
      if (this.distance < 6 &&
        this.distance != 0.0 &&
        this.centre.y <= this.element.centre.y
        ) {
 
        this.target = p5.Vector.sub(this.centre, this.element.centre);
        this.target.setMag(6);
        this.target.add(this.element.centre);
        this.centre.set(round(this.target.x), round(this.target.y));
      }
    }    
    image(this.ble, this.centre.x, this.centre.y);
  }
}

L'Amour au Peuple !

Hors ligne

 

#2 2016-02-29 16:04:15 Re : [C8delab] C8deLabyrinth

Tepaze
membre
Lieu: Angers
Date d'inscription: 2014-04-14
Messages: 178

Re: [C8delab] C8deLabyrinth



Trop bien !!

Hors ligne

 

#3 2016-02-29 16:06:09 Re : [C8delab] C8deLabyrinth

cdriko
modérateur
Lieu: Le Landreau
Date d'inscription: 2010-07-16
Messages: 76
Site web

Re: [C8delab] C8deLabyrinth



brille !

Hors ligne

 

#4 2016-02-29 17:47:18 Re : [C8delab] C8deLabyrinth

rep
modérateur
Lieu: Toulouse
Date d'inscription: 2008-02-27
Messages: 1422
Site web

Re: [C8delab] C8deLabyrinth



waou c'est la grande classe !
<3


La réalité, c'est pour qui ne sait pas gérer autre chose.
http://cumulonimbus.fr/ | http://tetalab.org | http://mixart-myrys.org

Hors ligne

 

#5 2016-02-29 19:15:05 Re : [C8delab] C8deLabyrinth

jojolaglaise
membre
Lieu: Basse Normandie
Date d'inscription: 2014-04-20
Messages: 128
Site web

Re: [C8delab] C8deLabyrinth



Superbe !

Hors ligne

 

#6 2016-02-29 20:43:53 Re : [C8delab] C8deLabyrinth

jkp
Administrator
Date d'inscription: 2006-01-06
Messages: 170

Re: [C8delab] C8deLabyrinth



trop bien aussi

Hors ligne

 

#7 2016-02-29 23:26:11 Re : [C8delab] C8deLabyrinth

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1572
Site web

Re: [C8delab] C8deLabyrinth



http://emoc.org/divers/trotro.jpg

Hors ligne

 

#8 2016-02-29 23:35:28 Re : [C8delab] C8deLabyrinth

pob
Exterminator
Lieu: Toulouse
Date d'inscription: 2009-10-13
Messages: 745
Site web

Re: [C8delab] C8deLabyrinth



Ca sert à quoi ? tongue

Hors ligne

 

#9 2016-02-29 23:40:36 Re : [C8delab] C8deLabyrinth

sakramh
membre
Lieu: clichy-sous-bois
Date d'inscription: 2008-12-02
Messages: 828
Site web

Re: [C8delab] C8deLabyrinth



ben à déraper !!! lol lol tongue

Dernière modification par sakramh (2016-02-29 23:40:59)


le code est l'alchimie de l'âge du silicium

Hors ligne

 

#10 2016-06-06 14:45:08 Re : [C8delab] C8deLabyrinth

Mona-Lou
membre
Date d'inscription: 2015-06-21
Messages: 16

Re: [C8delab] C8deLabyrinth



- Bonjour Codelab,
- je me sens très heureuse de pouvoir vous parler un peu :
- ! e n f i n vous dire :
- m a g n i f i q u e !
- m a g i q u e !
- tous vos formidables projets ! smile
- Merci
smile A bientôt

Dernière modification par Mona-Lou (2016-06-06 15:07:05)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2017