import noc.*; float scaleX = 1, scaleY = 1; Garden g; float[] fitness; void setup() { size(800, 400, P3D); frameRate(30); g = new Garden(0.1f, 10); fitness = new float[g.size()]; for (int i = 0; i < fitness.length; i++) { fitness[i] = 0f; } } void draw() { background(192, 192, 255); noStroke(); fill(96, 160, 64); rect(0, height/2, width, height/2); for (int i = 0; i < g.size(); i++) { pushMatrix(); translate(0, 0, fitness[i] * 75); g.get(i).render(); popMatrix(); } } void keyPressed() { int k = (int)key - 48; if (k >= 0 && k <= 9) { println(k); fitness[k] = constrain(fitness[k] + 0.05, 0, 1); } if (key == 'r') { for (int i = 0; i < fitness.length; i++) { fitness[i] = 0f; } } if (key == ' ') { nextGen(); } } void nextGen() { // copy fitness values to genes for (int i = 0; i < g.size(); i++) { g.get(i).setFitness(fitness[i]); fitness[i] = 0f; } g.naturalSelection(); g.generate(); }