2017-01-06 44 views
-3

正在处理的家族世仇的比赛,我想申请改变颜色 一组界的随机给予更换不同的颜色,形状

我试着用在这个给定的代码循环,但我知道它错了。 我该如何随机化?

//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); 

回答

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 
} 

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

使用,所以如果你想要的时间精确测量,你应该无论是在模拟使用PITRDTSC但能够创造不兼容sleep()不准确环境...

对年龄在MS-DOS没有代码,所以我不知道在lib中randomrandomize程序是他们可能也被称为Random,Randomize我打赌他们是在stdio.hconio.h。只需在程序光标处输入random并点击ALT+F1即可显示上下文帮助。在那里你会阅读哪些库包含。另外我不确定是否使用random(15)random(16)这样读取它也是正确的。

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

看一看一些相关QA矿井的:

+0

非常感谢:> – Mirisu