简体   繁体   中英

Not sure why this short processing assignment isn't working

This is a homework assignment. Work 19 5/16 is the assignment http://sites.stuycs.org/home/courses/ml2x/dyrland-weaver/work

I am running this in the program processing, which does not require main methods.

Blob was given to us. We had to make BlobRunner on our own. Any advice on why my code isn't doing what its supposed to would be appreciated. FIRST FILE BlobRunner

int popSize = 4;
int wobble = 2;
int numSides = 4;
float rad = 100;
int radInt = (int) rad;
float a = sqrt(popSize);
int rootPop = (int) a;
Blob[][] blobs = new Blob[popSize/rootPop][rootPop];
/*=====================================
  The trickiest part of setup is to make 
  the screen an appropriate size for the
  grid of blobs. The grid should be just
  big enough to contain all of the blobs.
  ====================================*/
void setup() {
    size ((popSize/rootPop)*(2*(radInt+3)), rootPop*(2*(radInt+3)));
    populate();
}

/*=====================================
  The main purpose of draw is to go through 
  the array of blobs and display each.
  ====================================*/
void draw() {
    int createdSoFar = 0;
    for (int i = 0; i<rootPop; i++){
    for (int j = 0; j<popSize/rootPop; j++){
        if (createdSoFar < popSize){
        blobs[j][i].display();
        }
        createdSoFar++;
    }
    }
}

/*=====================================
  Populate the array of blobs.
  You can use any values for radius, number of sides
  and wobble factor that you'd like, but you must
  use x and y coordinates that ensure the blobs
  are drawn in a grid without overlaping each other.

  Your code should work for any reasonable value
  of population (i.e. something that would fit on a
  normal monitor).
  ====================================*/
void populate() {
    for (int i = 0; i < rootPop; i++){
    float y = 1;
    for (int j = 0; j < (popSize/rootPop); j++){
        float x = 1;
        blobs[j][i] = new Blob (x*(rad+3), y*(rad+3), numSides, radInt, wobble, wobble); 
        x=x+2;}
    y=y+2;}
}

SECOND FILE Blob

/*=====================================
  A Blob object is a regular polygon variant that
  can have various features.
  Instance Variables:
  numSides: number of sides
  rad: distance from the center of the polygon
  to any vertext
  x: x coordinate of the center
  y: y coordinate of the center
  xFactor: "wobble" foctor in the x direction
  yFactor: "wobble" factor in the y direction
  ====================================*/

class Blob {

    int numSides;
    int rad;
    float x;
    float y;
    int xFactor;
    int yFactor;

    Blob(float cx, float cy, int sides, int r, int xf, int yf ) {

    x = cx;
    y = cy;
    numSides = sides;
    rad = r;
    xFactor = xf;
    yFactor = yf;
    }

    void display() {

    float nx;
    float ny;
    int rx, ry;

    float sy;

    strokeWeight(1);
    beginShape();
    for( float t = 0; t <= 1; t+=( 1.0/numSides ) ) {

        /*
          "wobble" effect is created by adding a random number to each
          x and y coordinate. The larger the x and y factors, the higher
          the possible wobble value could be
        */
        rx = (int)random(xFactor);
        ry = (int)random(yFactor);

        nx = rad * cos( 2 * PI * t ) + x + rx;
        ny = rad * sin( 2 * PI * t ) + y + ry;

        vertex(nx, ny);
    }      
    endShape();
    }
}

Your code runs, thus it is doing what you asked it to do and nothing more.

I asked my cat to check it out though and she was all, "the guy is re-initializing his variables inside each pass of the loop, he'll never get a grid of blobs that way. Tell him to start by moving float y = 1; float x = 1; in populate() outside of the bounds of the two for loops and start debugging from there."

Then she rolled over on to her side and I patted her.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM