赋予形状不同的颜色
Give Changing Different colors to a shape
本文关键字:颜色 更新时间:2023-10-16
我们正在开发一款家族世仇游戏,我想应用不断变化的颜色到一组圆圈随机
我试着在这个给定的代码中使用for循环,但我知道它错了。如何随机化?
//looping set1
for(x=0;x<=15;x++)
{
setcolor(x);
sleep(3000);
}
setfillstyle(1,1);
fillpoly(13,lyt1);
fillpoly(9,lyt2);
fillpoly(9,lyt3);
fillpoly(12,lyt4);
//looping set2
for(x=0;x<=15;x++);
{
setcolor(x);
sleep(3000);
}
setfillstyle(1,1);
fillpoly(11,lyt5);
fillpoly(12,lyt6);
fillpoly(13,lyt7);
fillpoly(12,lyt8);
我假设您在MS-DOS中(不确定是模拟的还是真实的,或者只是windows控制台),但动画和随机化的方式有点不同。
由于各种限制(因此它适用于每个平台,不使用任何高级内容),主循环的程序结构应该更像这样:
// main loop
const int dt=40; // [ms] approximate loop iteration time
int col_t=0,col_T=3000; // [ms] time and period for changing the colors
int col;
randomize();
col=random(16);
for (;;)
{
// 1. handle keyboard,mouse,joystick... here
// do not forget to break; if exit button is hit like: if (Key==27) break;
// 2. update (world objects positions, score, game logic,etc)
col_t+=dt;
if (col_t>=col_T)
{
col_t=0;
col=random(16);
}
// 3. draw you scene here
setcolor(col);
// 4. CPU usage and fps limiter
sleep(dt); // 40ms -> 25fps
}
这种结构不需要任何中断,因此对于新手来说很容易理解。但游戏通常需要更高的速度,事件处理程序也更快。为此,您需要使用中断ISR来处理键盘、PIT,。。。
使用sleep()
并不精确,所以如果你想精确测量时间,你应该使用PIT
或RDTSC
,但这可能会在模拟环境中产生不兼容。。。
很久没有在MS-DOS中编码了,所以我不确定random
和randomize
例程在哪个库中——它们也可能被称为Random,Randomize
——我打赌它们在stdio.h
或conio.h
中。只需在程序中键入random
,将光标放在它上面,然后点击ALT+F1
即可显示上下文帮助。在那里,您将阅读要包含的库。此外,我不确定是使用random(15)
还是random(16)
,所以请阅读哪一个也是正确的。
如果你正在编写一个游戏,那么你可能需要一些菜单。要么将它们合并到主循环中,要么为每个游戏页面设置单独的主循环,并使用goto
或将每个作为单独的函数进行编码。
看看我的几个相关的QA:
- 将计时器添加到游戏Turbo C++MS-DOS PIT ISR处理程序示例
- 在屏幕上移动对象的最佳方式是什么?我的一个MS-DOS游戏(但在汇编程序中),包括菜单、2D精灵图形、键盘中断处理程序等
- 在C中显示颜色阵列在C/C中直接访问VESA/VGA图形(无BGI)++
- avr代码不起作用我想生成随机数帮助请简单自定义伪随机数生成器(C/C++)和2D白噪声效果没有电视信号
并设置彩色文档
相关文章:
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 列表视图更改选择颜色
- GtkTreeView 交替行颜色
- dx11 渲染到纹理仅显示透明颜色
- 使用 OpenGL 4.5 更改所选顶点的颜色
- 为什么我的 LEGACY OPENGL 颜色反转了?
- 双击更改 mfc 中列表控件中的行的颜色
- 更改 QT 中按钮的颜色
- 当我使用CHAR_INFO结构时,控制台会无缘无故地改变颜色
- 列表视图项的替代颜色
- GLSL 将 uint 转换为浮点颜色
- std::带有颜色和标题的 clog 包装器无法正确打印整数
- Vec3b:r/g/b 颜色的最大值为 254,而不是 255
- 如何将矢量对象更改为不同的颜色?
- PPM 颜色显示错误
- 如何更改 QGraphicsItem 对象的颜色?
- 如何防止每次 Arduino 启动时颜色数组都是相同的随机数组