在处理中按键盘“1”和“2”时如何选择形状

How can I selected shape when I pressed keyboard "1" and "2" in processing

问题是创建两个形状并移动它们,当你按'1'时,你可以控制方形移动,当你按'2'时,你可以控制圆形移动。 这是我到目前为止所做的。 我的 class

class MyShape{
int x,y;
void display(){
stroke(0);
rect(200+x,200+y,50,50);
}
void cycle(){
stroke(0);
ellipse(100+x,100+y,50,50);
}
void move(){
if(keyPressed && key == CODED){
if(keyCode == LEFT){
x--;
}else if(keyCode == RIGHT){
x++;
}else if(keyCode == UP){
y--;
}else if(keyCode == DOWN){
y++;
}
 }
  }
   }

主要功能

MyShape obj;

void setup(){
size(400,400);
obj = new MyShape();
}

void draw(){
background(0);
obj.display();
obj.cycle();  
obj.move();


}

我尝试使用if来选择这两个形状,但是它不起作用,我在运行时看不到形状或者我无法控制它

谢谢你们的帮助,我很感激

您可以先将圆圈和正方形分成两个单独的 classes,然后创建一个名为“Shape”的超级 class。然后你的 Circle 和 Square class 将继承自这个 Shape class。 形状 class 文件:

abstract class Shape
{
  int x, y;
  
  abstract void display();
  
  void move()
  {
    if(keyPressed)
    {
      if(keyCode == LEFT) x--;
      else if(keyCode == RIGHT) x++;
      else if(keyCode == UP) y--;
      else if(keyCode == DOWN) y++;
    }
  }
}

正方形class文件:

class Square extends Shape
{
  void display()
  {
    stroke(0);
    rect(200+x,200+y,50,50);
  }
}

循环class文件

class Circle extends Shape
{
  void display()
  {
    stroke(0);
    ellipse(100+x,100+y,50,50);
  }
}

之后我们需要找到一种方法select相对于按下的键移动哪个形状。我们可以通过创建一个变量来实现这一点,该变量将保存当前形状以在我们按下“1”键或“2”键时移动和更改它。主文件:

Circle circle;
Square square;

Shape currentShape;

void keyPressed()
{
  if(key == '1')
    currentShape = square;
  else if(key == '2')
    currentShape = circle;
}

void setup(){
  size(400,400);
  circle = new Circle();
  
  square = new Square();
}

void draw(){
  background(0);
  circle.display();
  square.display();
  
  if(currentShape != null)
    currentShape.move();
}