1. C++ / Говнокод #15578

    +14

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    BOOL shutdown_windows()
    {
        //...
        Sleep(1000);
        return FALSE; // Если к этому времени мы еще не закрыты - что-то пошло не так.
    }

    Запостил: gost, 26 Марта 2014

    Комментарии (29) RSS

    • Получается, если у меня компьютер "старенький" и долго выключается, у меня что-то пойдет не так ))
      Ответить
      • на старых компах слип должен выполняться медленнее
        Ответить
        • показать все, что скрытоvanished
          Ответить
        • Именно потому надо тормозить выполнение программы циклом
          Ответить
          • И молиться, чтобы его не вырезал оптимизатор.
            Ответить
          • Пока скорость вращения вентилятора была постоянной и ноуты были редкостью -так и делали. Из старкрафта такую радость официально выпили незадолго до выхода второго.
            Ответить
        • чсх турбопасовский delay в натуре зависел от компа
          Ответить
          • Разве? А тормозил он случайно не через busy waiting?
            Ответить
          • зависел. поэтому, как ща помню, на первом курсе когда писал тетрис (турбопаскаль, асм вставки, режим 320х200, картинки со спецэффектами),для компонезависимой паузы юзал досовские системные часики
            з.ы. жаль, что лаба не сохранилась, показал бы свое студенческое говно = )
            Ответить
            • Говно - это мое чтение клавиатуры из-под доса и работа с графикой одноклассника в танчиках.
              Ответить
              • *с надеждой* может, все-таки просто извращение?
                Ответить
                • Я читал порт клавиатуры в цикле отрисовки, т.к. ловить прерывания еще не умел. Потом выяснилось, что на слабом компе (у нас в комп классах стояли четверки - и это в 97-2000 годах, может, и позже) могут глотаться клавиши.
                  Ответить
                  • > Я читал порт клавиатуры в цикле отрисовки
                    вау. эпично. я только один раз видел такое, когда вдруг дебаггер перескакивал на другое место в режиме паузы, просто при сворачивании-разворачивании окна. оказалось, логика была в методе перерисовки

                    а вообще, в древние времена, это было нормально, один большой цикл:
                    1. опросить клаву\джойстик
                    2. просчитать логику
                    3. отрисовать
                    4. пауза до следующего кадра
                    5. к п.1.
                    Ответить
                    • > один большой цикл:
                      > 1. опросить клаву\джойстик
                      > 2. просчитать логику
                      > 3. отрисовать
                      > 4. пауза до следующего кадра
                      Оно, емнип, и сейчас так в игрушках. Только опрос клавы\джойстика все-таки буферизованный, и ничего не теряется.
                      Ответить
                      • Ну не знаю, сейчас у меня так:
                        1. в цикле сообщений по сообщениям от клавы/джойстика учитываем их
                        2. в цикле сообщений по сообщениям от таймера пересчитываем физику, учитывая время, прошедшее после предыдущей обработки таймера, и перерисовываем всё
                        Ответить
                        • Все-таки по событиям работаешь, не тупой game loop?
                          Ответить
                          • Тупой луп - это частный случай событий, на самом деле.
                            Ведь внутри обёртки над АПИ на самом деле сидит цикл "обработать сообщения - вызвать функцию ожидания", если функция ожидания не пуста, то получаем тупой цикл как он есть.
                            Но я решил так всё равно не делать, потому что система тупит и буфера вовремя не чистит. Я лучше напишу SetTimer(1) (и пох, что в шиндошс на самом деле получается не 1 милисекунда, а 10-15) и буду таймер ловить. Так всё меньше тупит.
                            Ответить
                      • а у меня так:
                        1. поток - цикл опроса клавы\джойстика
                        2. поток - пересчет физики на несколько кадров вперед, с учетом нажатий
                        3. поток - отрисовка графики, что насчитал 2 поток, опуская кадры, если не вписываемся в fps
                        Ответить
                      • Так ты таки не порт клавиатуры опрашиваешь, а ось, ёба.
                        Ответить
                    • Так это и было еще в школе на трубопаскале 7.0. Какие нахуй потоки в досе, вы чо... Там динамическая память шиком считалась.
                      Ответить
                  • А заодно узнал, что из-за электрической схемы клавиатуры не всегда получается определить больше 2х нажатых клавиш.
                    Ответить
      • показать все, что скрытоvanished
        Ответить
    • одной секунды хватит всем
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий