C++ 给一个形状换不同的颜色
我们在做一个家庭恩怨游戏,我想改变颜色 随机分配到一组圆 我尝试在给定的代码中使用for循环,但我知道它是错误的。 我如何随机化C++ 给一个形状换不同的颜色,c++,graphics,borland-c++,bgi,C++,Graphics,Borland C++,Bgi,我们在做一个家庭恩怨游戏,我想改变颜色 随机分配到一组圆 我尝试在给定的代码中使用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 s
//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控制台,但动画和随机化的执行方式有点不同
由于各种限制,因此它可以在每个平台上工作,并且不使用任何高级的东西。主循环的程序结构应该更像这样:
//主回路
常数int dt=40;//[ms]近似循环迭代时间
整数列t=0,列t=3000;//[ms]更改颜色的时间和周期
int col;
随机化;
col=16;
对于
{
//1.在这里操作键盘、鼠标、操纵杆
//不要忘记断开;如果按下退出按钮,如:if Key==27断开;
//2.更新世界对象位置、分数、游戏逻辑等
col_t+=dt;
如果列>=列
{
col_t=0;
col=16;
}
//3.在这里画你的场景
塞特科勒;
//4.CPU使用和fps限制器
sleepdt;//40ms->25fps
}
这种结构不需要任何中断,所以对于新手来说很容易理解。但游戏通常需要更快的速度,事件处理程序也更快。为此,您需要使用中断ISR来处理诸如键盘、PIT
使用睡眠是不精确的,所以如果您想要精确测量时间,您应该使用PIT或RDTSC,但这可能会在模拟环境中造成不兼容性
很久没有在MS-DOS中编写代码了,所以我不确定随机和随机化例程在哪个库中。它们也可能被称为随机,随机化我打赌它们在stdio.h或conio.h中。只需在程序中键入random,将光标放在它上面,然后按ALT+F1键即可调出上下文帮助。在这里,您将阅读要包含的库。此外,我不确定是否使用随机数15或随机数16,所以请阅读其中的正确答案
如果你正在编写一个游戏,那么你可能需要一些菜单。或者将它们合并到主循环中,或者为每个游戏页面设置单独的主循环,并使用goto或将每个页面编码为单独的函数
看看我的几个相关QA:
Turbo C++ MS-DOS坑ISR处理程序实例
和我的一个MS-DOS游戏,但在汇编包括菜单的,二维精灵图形,键盘中断处理程序等。。。
直接访问VESA/VGA图形C/C中无BGI++
简单自定义伪随机数发生器C/C++和2D白噪声效果无电视信号。。。
而且@Mirisu我刚刚添加了一个链接,指向我刚才回答的与PIT ISR相关的QA,您可能会感兴趣。。。