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