Java 处理,如何在形状出现时重新绘制形状

Java 处理,如何在形状出现时重新绘制形状,java,processing,Java,Processing,嗨,伙计们,我制作了一个游戏,用户避开来自屏幕右侧的外星人,然后他们经过左侧。我需要外星人离开屏幕左侧后从右侧重新出现。我该怎么做呢? 以下是我现有的代码: 编辑: 在主类下面添加了外星人类 PImage background; int x=0; //global variable background location Alien alien1; Alien alien2; Alien alien3; Defender user1; void setup(){ size(800,400

嗨,伙计们,我制作了一个游戏,用户避开来自屏幕右侧的外星人,然后他们经过左侧。我需要外星人离开屏幕左侧后从右侧重新出现。我该怎么做呢? 以下是我现有的代码:

编辑: 在主类下面添加了外星人类

PImage background;
int x=0; //global variable background location

Alien alien1;
Alien alien2;
Alien alien3;
Defender user1;


void setup(){
 size(800,400);
 background = loadImage("spaceBackground.jpg");
 background.resize(width,height);

 alien1 = new Alien(800,100,5);
 alien2 = new Alien(800,200,5);
 alien3 = new Alien(800,300,5);

 user1 = new Defender(10,height/2);

}
void draw ()
{
 drawBackground();
 alien1.move();
 alien1.render();
 alien2.move();
 alien2.render();
 alien3.move();
 alien3.render();
 user1.render();
}  

void drawBackground()
{
 image(background, x, 0); //draw background twice adjacent
 image(background, x+background.width, 0);
 x -=4;
 if(x == -background.width)
 x=0; //wrap background
}

void keyPressed()
{

  if(key == CODED) {
     if (keyCode == UP) {
       user1.y = user1.y - 5;
     }
     else if (keyCode == DOWN)
     {
       user1.y = user1.y + 5;
     }
  }

}


final color Alien1 = color(0,255,0);
final color Alien2 = color(50,100,0);

class Alien
{
 int x,y;
 int speedX, speedY;

 Alien(int x, int y, int speedX)
 {
  this.x = x;
  this.y = y;
  this.speedX = speedX;
 }

 void move()
 {
   x=x-speedX;
   float stepY = random(-5,5);
   y = y + (int)stepY;
 }

 //draw an alien
 void render()
 {
 fill(Alien1);
 ellipse(x,y,30,30);
 fill(Alien2);
 ellipse(x,y,50,15);

 }



}



如果你上传你的
Alien
类,那么我们可以给出更清晰的方向,但是我们的想法是你应该在你的
move()
方法中添加以下逻辑

void move()
 {
   x=x-speedX;
   float stepY = random(-5,5);
   y = y + (int)stepY;
   if(this.x < 0) {
      this.x = 800; // or width, startingPosition, ...
   }
 }
void move()
{
x=x-speedX;
浮动步长=随机(-5,5);
y=y+(int)stepY;
如果(此.x<0){
this.x=800;//或宽度,起始位置。。。
}
}
编辑:添加了Alien类,使我的解决方案适应了代码。

在Alien.Move()方法中,当坐标必须“传送”时,可以检查坐标(不要忘记其宽度)。如果需要更多帮助,请显示外星人类。