我正在设置新代码,但是代码有问题。
该框始终位于屏幕的左上方。
让我解释一下代码。
需要在屏幕周围生成随机位置。
r + 256指定正在创建框的动画像素大小(256)。
RGB只是盒子的颜色。
我如何在屏幕周围的随机位置生成该框?
我试着玩代码,更改变量等。
int main()
{
int r = rand() % 400;
HDC hdc = GetDC(GetDesktopWindow());
while (true)
{
srand(time(NULL));
srand(GetTickCount64());
for (int x = r; x < r + 256; x++)
for (int y = r; y < r + 256; y++)
SetPixel(hdc, x, y, RGB(127, x % 256, y % 256));
}
return 0;
}
我没有任何错误。
最佳答案
int r = rand() % 400;
仅被评估一次,每次启动程序时,随机数发生器的起点都相同(“种子”)。
因此,r
始终具有相同的值。
调用srand
不会更新r
;它为rand
的后续使用设置种子。
你需要
每当您想要一个不同的数字时,都会生成一个新的随机数,
仅在使用rand
之前为随机数生成器播种一次。
所以,
int main()
{
srand(time(NULL));
HDC hdc = GetDC(GetDesktopWindow());
while (true)
{
int r = rand() % 400;
for (int x = r; x < r + 256; x++)
for (int y = r; y < r + 256; y++)
SetPixel(hdc, x, y, RGB(127, x % 256, y % 256));
}
return 0;
}
关于c++ - 如何在屏幕周围生成随机像素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58553753/