Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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 随机2D城市景观生成器,如何随机生成?_Java_Random_2d_Processing - Fatal编程技术网

Java 随机2D城市景观生成器,如何随机生成?

Java 随机2D城市景观生成器,如何随机生成?,java,random,2d,processing,Java,Random,2d,Processing,我必须在处理过程中随机生成一个具有3层功能的城市景观。我这样做是通过在一个循环中绘制每个楼层,直到一个随机整数,然后对每个建筑的楼层做同样的事情。目前,楼层最初是随机生成的,但最终填充到随机函数的最大值。我如何得到它,使它们保持随机性?谢谢,代码在下面 int boxX = 0; int boxY = 479; void setup() { size(1000, 500); background(255); frameRate(10); } void draw() { for

我必须在处理过程中随机生成一个具有3层功能的城市景观。我这样做是通过在一个循环中绘制每个楼层,直到一个随机整数,然后对每个建筑的楼层做同样的事情。目前,楼层最初是随机生成的,但最终填充到随机函数的最大值。我如何得到它,使它们保持随机性?谢谢,代码在下面

int boxX = 0;
int boxY = 479;
void setup() {
  size(1000, 500);
  background(255); 
  frameRate(10);
}

void draw() {
  for (int i = 0; i < 8; i++) {
    building(boxX, boxY);
    translate(150, 0);
  }
}
void room(int boxX, int boxY) {
  rect(boxX, boxY, 20, 20);
}

void floor(int boxX, int boxY) {
  int randomNum = (int)random(3, 5);
  for (int i=0; i<= randomNum; i++) {
    room(boxX, boxY);
    boxX += 20;
  }
}

void building(int boxX, int boxY) {
  int randomNum = int(random(10, 20));
  for (int i = 0; i < randomNum; i++) {
    floor(boxX, boxY);
    boxY -= 20;
  }
}
int-boxX=0;
int-boxY=479;
无效设置(){
尺寸(1000500);
背景(255);
帧率(10);
}
作废提款(){
对于(int i=0;i<8;i++){
建筑(长方体,长方体);
翻译(150,0);
}
}
空房间(内景盒X、内景盒Y){
矩形(长方体,长方体,20,20);
}
空位地板(内景框X、内景框Y){
int randomNum=(int)random(3,5);

对于(int i=0;i而言,问题在于,您在每一帧生成一个随机的城市景观,但您从未清除旧帧。这意味着您的新帧只是在旧帧的正上方绘制

为了更好地了解我所说的内容,请通过在
draw()
函数的第一行中添加对
background()
的调用来清除旧帧:

void draw() {
  background(200);
  for (int i = 0; i < 8; i++) {
    building(boxX, boxY);
    translate(150, 0);
  }
}
void draw(){
背景(200);
对于(int i=0;i<8;i++){
建筑(长方体,长方体);
翻译(150,0);
}
}

你需要后退一步,确切地问自己你想要发生什么。你想每一帧生成一个新的城市景观吗?如果是这样,请将调用留在
background()
中。你只想生成一个城市景观吗?如果是这样,请调用
noLoop()
以防止
draw()
函数避免多次调用,或者将城市景观存储在数据结构中,您可以重新绘制每一帧,而不是重新生成。

非常感谢!我使用了noLoop。