Я пытаюсь заставить работать 80 столбцов, 25 строк, 256 глифов, 16 цветов переднего плана, 16 цветов фона, 60 кадров в секунду. Это проблемный код:
#include <windows.h>
#include <stdint.h>
int main() {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD start = {0, 0};
DWORD b = 0;
char shades[2000];
for (int i=0; i<2000; i+=80){
for (int k=0; k<16; k++){
shades[i+k]=32;
}
for (int k=16; k<32; k++){
shades[i+k]=176;
}
for (int k=32; k<48; k++){
shades[i+k]=177;
}
for (int k=48; k<64; k++){
shades[i+k]=178;
}
for (int k=64; k<80; k++){
shades[i+k]=219;
}
}
uint16_t colors[2000];
for (int i=0; i<2000; i++){
colors[i] = (uint8_t)((i%16)+((i/80)*16));
}
CHAR_INFO screen[2000];
for (int i=0; i<2000; i++){
screen[i].Char.AsciiChar = shades[i];
screen[i].Attributes = colors[i];
}
SMALL_RECT screenrect;
screenrect.Left = 0;
screenrect.Top = 0;
screenrect.Right = 79;
screenrect.Bottom = 24;
COORD screensize = {80, 25};
uint8_t flag = 0;
int o = 600;
SMALL_RECT testscreenrect;
testscreenrect.Left = 0;
testscreenrect.Top = 0;
testscreenrect.Right = 79;
testscreenrect.Bottom = 15;
COORD testscreensize = {80, 16};
while (o){
WriteConsoleOutput(hConsole, screen, testscreensize, start, &testscreenrect);
o--;
}
return 0;
}
Ожидается, что этот код будет выполняться за 600 кадров или 10 секунд. Также предполагается рисовать каждый кадр в кадре. Но этот код не работает. Как исправить эту проблему со временем?