Придайте изменяющимся цветам форму

Мы работали над игрой о семейной вражде, и я хотел применить меняющиеся цвета
в группу кругов случайным образом

Я попытался использовать для цикла в этом коде, но я знаю, что это неправильно.
как я рандомизирую?

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

-3

Решение

Я предполагаю, что вы находитесь в 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 или закодируйте каждый как отдельную функцию.

Посмотрите на несколько связанных контроль качествамоя:

1

Другие решения

Других решений пока нет …