You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Processing代码无法运行,多次调试未果,请求问题排查指导

Processing代码错误分析与修复

一、核心语法错误

  • 逻辑运算符缺失:所有边界判断的if语句中缺少||(逻辑或),例如if(x[i]>width x[i]<0) 应改为if(x[i]>width || x[i]<0)
  • 代码块嵌套错误:else if(i == 3) 被写在for循环的闭合大括号外,此时i的值恒为5,永远不会触发判断。需将该判断移至for循环内部,且改为if(i == 3)(单独条件判断)
  • 函数参数错误:调用vichea1(x1[i], y1[i], d1)时,传入的d1是数组,但函数需要单个float值,应改为d1[i];循环外的冗余绘制代码存在数组索引越界(i=5时访问x[5]超出数组长度),直接删除该段代码
  • 多余闭合大括号:draw函数末尾多了一个},破坏语法结构
  • 缺失自定义函数实现:代码调用了vichea和vichea1但未定义,需补充这两个绘制函数的实现逻辑

二、逻辑错误修正

  • 边界判断错误:y轴边界应使用height而非width,例如if(y[i]>height || y[i]<0)
  • 数组越界风险:删除for循环外的冗余绘制代码,避免访问超出数组范围的索引

三、修复后的完整代码

float [] x,y,d;
float [] vx,vy;
float [] x1,y1,d1;
float [] vx1,vy1;

void setup(){
  size(800,800);
  x = new float[5];
  y = new float[5];
  d = new float[5];
  vx = new float[5];
  vy = new float[5];
  x1 = new float[5];
  y1 = new float[5];
  d1 = new float[5];
  vx1 = new float[5];
  vy1 = new float[5];
  
  for(int i=0; i<5; i++){
    x[i] = random(width);
    y[i] = random(height);
    d[i] = random(4);
    x1[i] = random(width);
    y1[i] = random(height);
    d1[i] = random(4);
    vx[i] = random(-10,10);
    vy[i] = random(-10,10);
    vx1[i] = random(-10,10);
    vy1[i] = random(-10,10);
  }
}

void draw() {
  background(#0799E5);
  for(int i=0; i<5; i++){
    // 修正参数,传入单个尺寸值
    vichea(x[i], y[i], d[i]);
    vichea1(x1[i], y1[i], d1[i]);
    
    // 更新位置
    x[i] += vx[i];
    y[i] += vy[i];
    x1[i] += vx1[i];
    y1[i] += vy1[i];

    // 修正逻辑运算符与边界条件
    if(x[i]>width || x[i]<0) {vx[i] = -vx[i]; }
    if(y[i]>height || y[i]<0) {vy[i] = -vy[i]; }
    if(x1[i]>width || x1[i]<0) {vx1[i] = -vx1[i]; }
    if(y1[i]>height || y1[i]<0) {vy1[i] = -vy1[i]; }
  
    // 将i==3的判断移至循环内部
    if(i == 3) {
      x[i] = mouseX;
      y[i] = mouseY;
    }
  }
}

// 补充自定义绘制函数示例(绘制圆形)
void vichea(float px, float py, float size){
  fill(255);
  ellipse(px, py, size*10, size*10);
}

void vichea1(float px, float py, float size){
  fill(255, 0, 0);
  ellipse(px, py, size*10, size*10);
}

void keyPressed() {
  for(int i=0; i<5; i++){
    if (key == 'a') x[i] -= 8;
    else if (key == 'd') x[i] += 8;
    else if (key == 'w') y[i] -= 8;
    else if (key == 's') y[i] += 8;
    else {
      x1[i] = mouseX;
      y1[i] = mouseY;
    }
  }
}

内容的提问来源于stack exchange,提问作者Leng Chanvichea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 07:30:25