处理 - If 语句和 id

Processing - If statement and ids

我是一名意大利学生,我是编程新手。我的学校项目需要你的帮助。

我正在使用 Daniel Shiffman 的教程制作一个 blob 跟踪程序。目前我在屏幕上有 2 个斑点。我用 2 个 ID 来识别它们:数字 0 和数字 1

我需要对这些 blob 设置一些条件:如果一个 blob 在屏幕的某个部分而另一个在另一部分,我需要调用一个函数。

不知道怎么把两个id的if条件分开。下面是我想要实现的一些伪代码:

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

非常感谢任何帮助!

对于您所描述的示例,您可以在一个 if 语句中使用 && 运算符来实现此目的。

首先将要测试的条件分配给boolean变量。例如,创建 boolean 变量 id0IsThereid1IsThere,如果 blob 位于您希望它们所在的位置,则将它们设置为 true。然后使用以下 if 声明:

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

&& 运算符意味着 if 语句中执行 yourFunction() 的代码仅在两个条件都为真时才执行。在这种情况下,如果两个 blob 都处于您希望它们处于的位置。希望对您有所帮助。在此处阅读有关 if 语句和 && 运算符的更多信息:

我真的不知道当所需函数触发时您希望 blob 位于何处,但我可以尝试给您举个例子...

  1. Blob

将某种位置变量(在本例中为 PVector)分配给您的 blob 对象。

class Blob {
    PVector position;

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

    void update() {
        *random movements, etc...*
    }
}
  1. 创建两个 blob 对象

创建两个对象并为每个对象分配一个位置。

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. 检查斑点是在屏幕的左侧还是右侧

我检查 blob[0] 是否在屏幕左侧,blob[1] 是否在屏幕右侧。如果它们同时存在,desiredFunction(); 将触发。

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. 记得

这只是一个例子。您当然可以检查屏幕的其他部分而不是左右部分。您也可以在 blob 上使用 ID 而不是数组,我只是认为在这种情况下最好只使用数组。

PS: 我在没有开始处理的情况下写了这个答案。该代码肯定有几个打字错误。