Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法重新生成在屏幕上移动的云?_Java_Graphics_Processing - Fatal编程技术网

Java 有没有办法重新生成在屏幕上移动的云?

Java 有没有办法重新生成在屏幕上移动的云?,java,graphics,processing,Java,Graphics,Processing,我正在制作一个我在处理中有想法的游戏,我正在尝试首先修复背景 我已经创建了一个在背景中移动的云对象数组,我希望能够在它们离开屏幕时重新生成它们 每个云由一系列圆组成,每个圆都有自己的x位置和y偏移。他们可以在屏幕上移动OK;在创建代码以重新生成它们时会出现问题。我试图创建一个if语句来检查序列中最后一个圆的x位置 /////////////MAIN SETUP//////////////// PVector screenSize; PVector windowPosition; PVector

我正在制作一个我在处理中有想法的游戏,我正在尝试首先修复背景

我已经创建了一个在背景中移动的云对象数组,我希望能够在它们离开屏幕时重新生成它们

每个云由一系列圆组成,每个圆都有自己的x位置和y偏移。他们可以在屏幕上移动OK;在创建代码以重新生成它们时会出现问题。我试图创建一个if语句来检查序列中最后一个圆的x位置

/////////////MAIN SETUP////////////////

PVector screenSize;
PVector windowPosition;
PVector windowSize;

void setup() {
  size(1400,900,P3D);
  smooth();

  screenSize = new PVector(width, height);
  windowPosition = new PVector(0,0);

  frameRate(60);

  loadEnvironment();
}

void draw() {
  background(134,224,255);
  drawEnvironment();
}

///////////////FOR THE CLOUD SETUP/////////////////


int cloudNumber;

Cloud[] totalclouds;

void loadEnvironment()
{
  cloudNumber = round(random(5,25));

  totalclouds = new Cloud[cloudNumber];
  for(int i = 0; i<cloudNumber; i++)
  {
   totalclouds[i] = new Cloud();
  }
};

///////////////////////////////////////
void drawEnvironment()
{
  for(int i = 0; i<cloudNumber; i++)
  {
    totalclouds[i].update();
  }
};

/////////////////////////////////////////
class Cloud
{
  float xPos;
  float yPos;

  float yTop;
  float yBottom;

  float xVelocityMin;
  float xVelocityMax;
  float xVelocity;

  float screenStart = 0;
  float screenEnd = width;

  int cloudSize = round(random(1,4));

  float[] xPosition = new float[cloudSize];
  float[] yPositionOffset = new float[cloudSize];
  float[] xDiam = new float[cloudSize];
  float[] yDiam = new float[cloudSize];

  float xDiameter = random(40,50);
  float yDiameter = random(40,50);
  float yOffset = random(10,20);

  float overlap = xDiameter/5;

  //'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

  Cloud (){
    xPos = random(width);
    yPos = random(windowPosition.y, 350);

    xPosition[0] = xPos;
    if (xPosition.length>1)
       for(int i = 1; i<cloudSize; i++)
       {
       xPosition[i] = xPosition[i-1] + (xDiameter/2) + overlap;
       }
    for (int i = 0; i<cloudSize; i++)
    {
      yPositionOffset[i] = yOffset;
    }

    xVelocityMin = 0.3;
    xVelocityMax = 0.6;
    xVelocity = random(xVelocityMin, xVelocityMax);
  }

  //''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  void move() {
    for(int i = 0; i<cloudSize; i++)
    {
    xPosition[i] += xVelocity;
    }
  }

  //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  void createNewClouds() {
    int lastItem = xPosition.length - 1;

    if (xPosition[lastItem]>screenEnd);
    {
      xPosition[0] = screenStart;
      if (xPosition.length>1)
       for(int i = 1; i<cloudSize; i++)
       {
       xPosition[i] = xPosition[i-1] + (xDiameter/2) + overlap;
       }
      for (int i = 0; i<cloudSize; i++)
      {
       yPositionOffset[i] = yOffset;
      }

    xVelocityMin = 0.3;
    xVelocityMax = 0.6;
    xVelocity = random(xVelocityMin, xVelocityMax);
    }
  }

  //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  void display() {
    for(int i = 0; i<cloudSize; i++)
    {
    ellipseMode(CENTER);
    fill(255, 255, 255);
    noStroke();
    ellipse(xPosition[i], yPos + yPositionOffset[i], xDiameter, yDiameter);
    }
  }

  //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  void update() {
    move();
    display();
    createNewClouds();
  }
}
///MAIN设置////////////////
PVector屏幕大小;
PVector窗口位置;
PVector窗口大小;
无效设置(){
尺寸(1400900,P3D);
光滑的();
屏幕尺寸=新的PVector(宽度、高度);
windowPosition=新的PVector(0,0);
帧率(60);
loadEnvironment();
}
作废提款(){
背景(134224255);
抽屉环境();
}
///////////////对于云设置/////////////////
整数云数;
云[]总云;
void loadEnvironment()
{
云数=圆形(随机(5,25));
totalclouds=新云[cloudNumber];

对于(int i=0;iA“概念”思想是将“虚拟”容器中的所有元素分组。容器的每个子元素相对于容器本身偏移(即
0x0
是容器的左上角),然后移动“容器”本身。在渲染云时,将偏移图形上下文(翻译)通过容器位置,然后渲染子对象。从技术上讲,子对象从不移动,只有容器才移动。为什么
Cloud
类包含一个位置数组?每个位置代表什么?位置数组用于云中的额外圆圈,以构建整件事。我已经看到了移动的想法e容器,但我认为我应该尝试以这种方式工作。由于这种方式被证明有点棘手,我可能会同意容器的想法。“概念”想法是将所有元素分组在一个“虚拟”容器中。容器的每个子元素相对于容器本身是偏移的(即
0x0
是容器的左上角),然后移动“容器”本身。在渲染云时,将偏移图形上下文(即平移它)通过容器位置,然后渲染子对象。从技术上讲,子对象从不移动,只有容器才移动。为什么
Cloud
类包含一个位置数组?每个位置代表什么?位置数组用于云中的额外圆圈,以构建整件事。我已经看到了移动的想法e容器,但我想我应该试着让它以这种方式工作。由于这种方式被证明有点棘手,我可能会同意容器的想法。