lunedì 1 febbraio 2010

Cianobatteri

Just another Conway's game of life implementation, strongly based on "2D CA Glider" by Alasdair Turner, but with circles and colors that reminds me Cyanobacteria.


Click and drag to inoculate!


/* Cianobatteri
 * Just another Conway's game of life implementation,
 * strongly based on "2D CA Glider" by Alasdair Turner,
 * but with circles and colors that reminds me Cyanobacteria.
 * Writed by Francesco Aggazio, licensed under Creative Commons
 * Attribution-Share Alike 3.0 license.
 * Work: http://openprocessing.org/visuals/?visualID=7160
 * License: http://creativecommons.org/licenses/by-sa/3.0/
 */


int c = 50;
int cx; int cy;
int s = 500 / c;
boolean [][] cells;
boolean [][] nextcells;


void setup() 
{ 
  size(500,500);
  cells = new boolean [c][c];
  nextcells = new boolean [c][c];
  for (int i = 0; i < c; i++)
  {
    for (int j = 0; j < c; j++)
    {
      cells[i][j] = false;
    }
  }
  noStroke();
  smooth();
  frameRate(6);
}


void draw()
{
  background(0);
  color colore = 0x80000000;
  for (int i = 0; i < c; i++)
  {
    for (int j = 0; j < c; j++)
    {
      if (cells[i][j] == true)
      {
        int incol = 0;
        for (int m = -1; m <= 1; m++)
        {
          for (int n = -1; n <= 1; n++)
          {
            if (!(m == 0 && n == 0))
            {
              if (cells[(i+m+c)%c][(j+n+c)%c] == true)
              {
                incol++;
              }
            }
          }
        }
        if (incol < 3)
        {
          colore = 0x8030a236;//5dd463;
        }
        else if (incol == 3)
        {
          colore = 0x80256a6a;
        }
        else if (incol > 3)
        {
          colore = 0x805dd463;//8ed46a;
        }
        fill(colore);
        ellipse((i * s) + (s / 2), (j * s) + (s / 2), s * 2, s * 2);
      }
      // count up how many alive around us
      int number = 0;
      for (int m = -1; m <= 1; m++)
      {
        for (int n = -1; n <= 1; n++)
        {
          if (!(m == 0 && n == 0))
          {
            if (cells[(i+m+c)%c][(j+n+c)%c] == true)
            {
              number++;
            }
          }
        }
      }
      // counted up... now set state of cell for next generation
      if (number < 2 || number > 3)
      {
        nextcells[i][j] = false;
      }
      else if (number == 3)
      {
        nextcells[i][j] = true;
      }
      else
      {
        nextcells[i][j] = cells[i][j];
      }
    }
  }   
  for (int i = 0; i < c; i++)
  {
    for (int j = 0; j < c; j++)
    {
      cells[i][j] = nextcells[i][j];
    }
  }
}


void mousePressed()
{
  cx = int(mouseX / s);
  cy = int(mouseY / s);
  if (cells[cx][cy] == true)
  {
    cells[cx][cy] = false;
  }
  else
  {
    cells[cx][cy] = true;
  }
}


void mouseDragged()
{
  if (mouseX < width && mouseX > 0 && mouseY < height && mouseY > 0)
  {
  cx = int(mouseX / s);
  cy = int(mouseY / s);
  cells[cx][cy] = true;
  }
}

3 commenti:

  1. Agga è successo un casino:
    dal blog di epic un tizio è arrivato qua e ha fatto unc asino, ti incollo la mail che mi hanno forwardato.

    Dear Sir,

    I went on http://elettrofonesi.blogspot.com/2010/02/cianobatteri.html and followed the instructions, but I had previously bathed my laptop's motherboard in unicorn's milk in order to access my desktop remotely from other dimensions I accidentally spilled some milk on my mouse too, so when I clicked and dragged to inoculate the Cyanos, they began spreading but did not stop and spread all over the screen and out in reality 1, they've already reached the kitchen now. Do you have any suggestions to solve this problem?
    I asked on yahoo but no-one knows.

    I was using white unicorn's milk on a Packard Bell BV PE2 motherboard.

    please help me, I am trying to learn to use modern devices and find it rather hard.

    Yours faithfully,

    Myrddin Wyllt

    RispondiElimina
  2. Questo è un bug noto, al momento l'unica soluzione è un po' laboriosa.
    Di al tuo amico che deve procurarsi:
    foglie di crisantemo pestate con legno di ulivo, una dragma;
    terra della tomba di un bugiardo, mezza oncia;
    una vescica di toro piena di urina.
    Deve unire gli ingredienti per ricavarne un'impiastro che dovrà poi gettare energicamente su tutte le colonie vive.
    Questo dovrebbe risolvere il problema istantaneamente senza danneggiare la scheda madre.
    Una volta fatto, digli di segnalare un bugreport sul forum del suo piano di esistenza con "SOLVED" nel titolo.

    RispondiElimina
  3. Gli ho tradotto tutto, mi ha risposto ma mi ha scritto in gaelico stavolta, su pergamena, trovata nel forno (stavo mettendo dentro le lasagne). C'è della ceralacca ed è miniata. Credo sia il tuo certificato d'ammissione. Te lo mando con il piccione.

    RispondiElimina