我正在使用SDL,我创建了一个函数,它将创建一组随机的片段并渲染它们。但是,当我运行程序时,它将不断在10×10网格上呈现一组新的随机片段。我想知道我是如何得到它所以渲染一次,不再生成一个新的集合,但仍然能够编辑位置。
void generatelocation(int loc[10][10]){
for (int n = 0; n < 10; n++){
for(int m = 0; m<10; m++){
loc[n][m] = rand()%6;
}
}
int redcount = 0;
int orangecount = 0;
int yellowcount = 0;
int greencount = 0;
int bluecount = 0;
int purplecount = 0;
for (int n = 0; n < 10; n++){
for(int m = 0; m<10; m++){
switch (loc[n][m]){
case 0:
redcount++;
break;
case 1:
orangecount++;
break;
case 2:
yellowcount++;
break;
case 3:
greencount++;
break;
case 4:
bluecount++;
break;
case 5:
purplecount++;
break;
default:
break;
}
}
}
if (redcount < 2 or orangecount < 2 or yellowcount < 1 or greencount < 1 or bluecount < 1 or purplecount < 1){
generatelocation(loc);
}
}
void piecerender(){
int loc[10][10];
generatelocation(loc);
for (int n = 0; n < 10; n++){
for(int m = 0; m<10; m++){
switch (loc[n][m]){
case 0:
gRedTexture.render(248+48*n, 128+48*m);
break;
case 1:
gOrangeTexture.render(248+48*n, 128+48*m);
break;
case 2:
gYellowTexture.render(248+48*n, 128+48*m);
break;
case 3:
gGreenTexture.render(248+48*n, 128+48*m);
break;
case 4:
gBlueTexture.render(248+48*n, 128+48*m);
break;
case 5:
gPurpleTexture.render(248+48*n, 128+48*m);
break;
default:
break;
}
}
}
}
这是我生成集合的函数,我把它放在主循环中。
答案 0 :(得分:0)
在您的位置生成和渲染功能之外创建数组“loc”。刚才你每次渲染时都会创建一个新数组(每秒多次)。您可以创建一次数组,然后将其传递给位置生成函数,该函数可以更改存储在数组中的值,然后传递给渲染函数。这也会减少程序的内存使用。
答案 1 :(得分:0)
我可能误解了这个问题,但你为什么不创建一个具有生成函数的类和另一个编辑位置的函数?您的执行代码将是:
set.generate();
set.render();
set.editLocation();
简单地说,将功能分开是一个问题吗?