微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

处理-通过按“1”键或“2”键来选择形状,以便分别拾取形状 1 或形状 2

如何解决处理-通过按“1”键或“2”键来选择形状,以便分别拾取形状 1 或形状 2

在草图上绘制两个形状(例如矩形和圆形)。使用 UP、DOWN、LEFT 和 RIGHT 键控制所选形状的移动。通过按“1”键或“2”键来选择形状,以便分别选择形状 1 或形状 2。我想通过按“1”或“2”键来选择形状,但是他们不能跑。`

int x = 0;
int y = 0;
int ex= 0;
int ey= 0;
 
void setup(){
  size (400,400);  
}
 
void draw(){
  background(80);
  rect(x,y,25,25);
  ellipse(50,50,50);
}
 
void keyPresse() {
  if ( (key == '1')) {
    if (keyCode == UP) {
      y -= 10;
    } else if (keyCode == DOWN) {
      y += 10;
    } else if (keyCode == LEFT) {
      x -= 10;
    } else if (keyCode == RIGHT) {
      x += 10;
    }  
  } else if ((key == '2')){
      if (keyCode == UP) {
      ey -= 10;
    } else if (keyCode == DOWN) {
      ey += 10;
    } else if (keyCode == LEFT) {
      ex -= 10;
    } else if (keyCode == RIGHT) {
      ex += 10;
    } 
  }
}

解决方法

有一个错字。键盘回调的名称是 keyPressed。但是,也存在一些逻辑问题。


xy 坐标创建一个数组。还有一个索引变量 (shape_i):

int x[] = new int[]{100,100};
int y[] = new int[]{200,100};
int shape_i = 0; 

在其位置绘制形状。 (x[0],y[0]) 是矩形的位置,(x[1],y[1]) 是椭圆的位置:

void draw(){
  background(80);
  rect(x[0],y[0],25,25);
  ellipse(x[1],y[1],50,50);
}

按下 12 时更改索引 (shape_i)。按下箭头键时更改 (x[shape_i],y[shape_i]):

void keyPressed() {
  if (key == '1') {
    shape_i = 0;
  } else if (key == '2') {
    shape_i = 1;
  } else if (keyCode == UP) {
    y[shape_i] -= 10;
  } else if (keyCode == DOWN) {
    y[shape_i] += 10;
  } else if (keyCode == LEFT) {
    x[shape_i] -= 10;
  } else if (keyCode == RIGHT) {
    x[shape_i] += 10;
  }
}

完整示例:

int x[] = new int[]{100,100};
int shape_i = 0;  
 
void setup(){
  size (400,400);  
}
 
void draw(){
  background(80);
  rect(x[0],50);
}
 
void keyPressed() {
  if (key == '1') {
    shape_i = 0;
  } else if (key == '2') {
    shape_i = 1;
  } else if (keyCode == UP) {
    y[shape_i] -= 10;
  } else if (keyCode == DOWN) {
    y[shape_i] += 10;
  } else if (keyCode == LEFT) {
    x[shape_i] -= 10;
  } else if (keyCode == RIGHT) {
    x[shape_i] += 10;
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。