我正在尝试编写一个在窗口内绘制一定数量的 block 的函数。我想让 block 的颜色随机。理想情况下,我希望有一个变量,每次迭代都会随机修改该变量,使下一个 block 具有不同的颜色:
setColor(brick, myColorVariable);
不幸的是,gobjects 允许以以下形式声明颜色:
setColor(brick, "BLACK") //
函数代码如下:
void initBricks(GWindow window)
{
int x = 5;
int y = 100;
int color = 0xff0000;
GRect brick = newGRect(x,y,55,10);
setFilled(brick, true);
setColor(brick, PROBLEM HERE);
add(window, brick);
}
非常感谢!
最佳答案
库本身可能有一种从 RGB 值或调色板索引设置颜色的方法(请参阅其文档),但为了使用该特定函数(通过其名称获取颜色),您可以将“调色板”设置为颜色名称数组:
static const char* COLOR_NAMES[] = {
"BLACK",
"WHITE",
...
};
然后从数组中选择一个随机元素:
int colorIndex = rand() % (sizeof(COLOR_NAMES)/sizeof(COLOR_NAMES[0]));
setColor(brick, COLOR_NAMES[colorIndex]);
关于c gobjects.h 通过变量将颜色值传递给 setColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25585255/