Federico Panni
Federico Panni

Reputation: 25

Processing - If statement and ids

I'm an Italian student and I'm new in programming. I need your help for a school project.

I'm making a blob tracking program using Daniel Shiffman's tutorials. Currently I have 2 blobs on the screen. I am identifying them with 2 IDs: number 0 and number 1.

I need to put some conditions on those blobs: if one blob is in a certain part of the screen and the other one is in another part, I need to call a function.

I don't know how to put the if conditions separately for the two ids. Below is some pseudo code of what I would like to achieve:

for (id==0)
if (...) and
for (id==1)
if(...) then {
  void()
}

I would really appreciate any help!

Upvotes: 1

Views: 235

Answers (2)

FKarlsson
FKarlsson

Reputation: 192

I don't really know where you want the blobs to be when the desired function fires, but I can try to give you an example...

  1. Blob

Assign some sort of position variable, in this case PVector, to your blob object.

class Blob {
    PVector position;

    Blob (PVector position) {
        this.position = position;
    }

    void update() {
        *random movements, etc...*
    }
}
  1. Create two blob objects

Create two objects and assign a position to each of them.

Blob[] blobs = new Blob[2];

void setup() {
    size(400, 400);

    blobs[0] = new Blob(5, new PVector(40, 40));
    blobs[1] = new Blob(13, new PVector(100, 100));
}
  1. Check if blobs is at left or right side of the screen

I check if blob[0] is at the left side of the screen and if blob[1] is at right side of the screen. If they are, at the same time, the desiredFunction(); will fire.

void draw() {
    for (int i = 0; i < blobs.length; i++) {
        blobs.update();
    }

    if (blobs[0].position.x < (width / 2) && blobs[1].position.x < (width / 2) {
        desiredFunction();
    }
}
  1. Remember

This is just an example. You could of course check other parts of the screen instead of the left and right parts. You can also use IDs on your blobs instead of an array, I just thought it was better to just use an array in this case.

PS: I wrote this answer without having processing started. The code has certainly a couple of typing errors.

Upvotes: 2

Chris Hamilton
Chris Hamilton

Reputation: 555

For the example you have described, you can achieve this using the && operator in one if statement.

First assign the conditions you want to test to boolean variables. For example, create the boolean variables id0IsThere, and id1IsThere, and set them to true if the blobs are in the locations you want them to be in. Then use the following if statement:

if (id0IsThere && id1IsThere) {
  yourFunction();
}

The && operator means that the code inside the if statement that executes yourFunction() is only executed if both conditions are true. In this case, if both blobs are in the positions you want them to be in. Hope that helps. Read more about if statements and the && operator here:

Upvotes: 0

Related Questions