- 1
- 2
- 3
- 4
- 5
- 6
BOOL shutdown_windows()
{
//...
Sleep(1000);
return FALSE; // Если к этому времени мы еще не закрыты - что-то пошло не так.
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+14
BOOL shutdown_windows()
{
//...
Sleep(1000);
return FALSE; // Если к этому времени мы еще не закрыты - что-то пошло не так.
}
з.ы. жаль, что лаба не сохранилась, показал бы свое студенческое говно = )
вау. эпично. я только один раз видел такое, когда вдруг дебаггер перескакивал на другое место в режиме паузы, просто при сворачивании-разворачивании окна. оказалось, логика была в методе перерисовки
а вообще, в древние времена, это было нормально, один большой цикл:
1. опросить клаву\джойстик
2. просчитать логику
3. отрисовать
4. пауза до следующего кадра
5. к п.1.
> 1. опросить клаву\джойстик
> 2. просчитать логику
> 3. отрисовать
> 4. пауза до следующего кадра
Оно, емнип, и сейчас так в игрушках. Только опрос клавы\джойстика все-таки буферизованный, и ничего не теряется.
1. в цикле сообщений по сообщениям от клавы/джойстика учитываем их
2. в цикле сообщений по сообщениям от таймера пересчитываем физику, учитывая время, прошедшее после предыдущей обработки таймера, и перерисовываем всё
Ведь внутри обёртки над АПИ на самом деле сидит цикл "обработать сообщения - вызвать функцию ожидания", если функция ожидания не пуста, то получаем тупой цикл как он есть.
Но я решил так всё равно не делать, потому что система тупит и буфера вовремя не чистит. Я лучше напишу SetTimer(1) (и пох, что в шиндошс на самом деле получается не 1 милисекунда, а 10-15) и буду таймер ловить. Так всё меньше тупит.
1. поток - цикл опроса клавы\джойстика
2. поток - пересчет физики на несколько кадров вперед, с учетом нажатий
3. поток - отрисовка графики, что насчитал 2 поток, опуская кадры, если не вписываемся в fps