【问题标题】:Give Changing Different colors to a shapeGive 改变形状的不同颜色
【发布时间】:2017-01-06 09:36:25
【问题描述】:

正在开发一个家庭仇恨游戏,我想应用不断变化的颜色 随机到一组圈子

我尝试在这个给定的代码中使用 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);

【问题讨论】:

    标签: c++ graphics borland-c++ bgi


    【解决方案1】:

    我假设您在 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
     }
    

    这种结构不需要任何中断,所以对于新手来说很容易理解。但是游戏通常需要更快的速度,而事件处理程序也更快。为此,您需要对键盘、PIT 等内容使用中断 ISR...

    使用sleep() 并不精确,因此如果您想要精确测量时间,您应该使用PITRDTSC,但这可能会在模拟环境中造成不兼容...

    已经很久没有在 MS-DOS 中编码了,所以我不确定randomrandomize 例程在哪个库中,它们也可能被称为Random,Randomize 我敢打赌是它们位于stdio.hconio.h。只需在程序中将光标输入random 并点击ALT+F1 即可调出上下文帮助。在那里您将阅读要包含的库。另外我不确定是否使用random(15)random(16),所以请阅读那里也正确。

    如果您正在编写游戏代码,那么您可能需要一些菜单。要么将它们合并到主循环中,要么为每个游戏页面设置单独的主循环并使用goto 或将它们编码为单独的函数。

    看看我的几个相关QA

    还有setcolor doc

    【讨论】:

    • @Mirisu 我刚刚添加了一个我刚刚回答的与 PIT ISR 相关的 QA 链接,您可能会感兴趣...
    猜你喜欢
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    相关资源
    最近更新 更多