C++ 给一个形状换不同的颜色

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

我们在做一个家庭恩怨游戏,我想改变颜色 随机分配到一组圆

我尝试在给定的代码中使用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控制台,但动画和随机化的执行方式有点不同

由于各种限制,因此它可以在每个平台上工作,并且不使用任何高级的东西。主循环的程序结构应该更像这样:

//主回路 常数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,您可能会感兴趣。。。