imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 25.12.2005, 07:19     # 21
AGoncharov
Junior Member
 
Регистрация: 16.04.2004
Сообщения: 106

AGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собой
Цитата:
ЛеднеFF:
Только не знаю что это за функция
Есть такая функция _kbhit() из conio.h:
Цитата:
_kbhit returns a nonzero value if a key has been pressed. Otherwise, it returns 0.
Так вот эта функция просто проверяет, было ли что-то нажато или нет. Если было, то она возвращает не 0. Если она вернула не 0, то можно пользоваться _getch() для получения нажатого символа, тогда ожидания ввода не будет.. НО, если нажата функцональная клавиша (F1-F12, стрелки, Home, End, ...), то надо вызывать _getch() два раза - первый раз получаем 0 или 0xE0, а второй раз символ..
Чтобы узнать цифровые значения функциональных клавиш - пишем простенькую программку - нажимаем и записываем в тетрадочку .
Чтобы программа не съедала 100% ресурсов процессора, сдобриваем код вызовами Sleep(0) .

P.S. Эх, как мало осталось людей, которые программировали под MS-DOS
AGoncharov вне форума  
Старый 25.12.2005, 17:31     # 22
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
Цитата:
как моя прога работает в бесконечном цикле, при нажатии на Стоп все зависает
создай такую функцию
Код:
void WaitForEvents()
{
    MSG msg;
    while (::PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    {    
        ::TranslateMessage(&msg); 
        ::DispatchMessage(&msg);
    }
}
и вставь её выполнение в твой бесконечный цикл - обеспечит приостановку выполнения цыкла на время обработки нажатых клавиш. учти - потом побежит дальше ! я обычно сразу после неё проверяю а не пора ли вапче выходить из цыкла по причине отсутствия материнского окна

Цитата:
там мужик ходит в разные стороны при нажатии соответствующих клавиш а коли не нажаты клавиши, то игра все равно не останавливается
он ходит по таймеру, используя заранее заданный курс, а курс меняется согласно нажатым кнопкам, только никто не ждёт нажатия, у окна настроенна функция OnChar - срабатывает именно при нажатии кнопки, корректируем курс и побежали дальше. а если охота узнать между делом нажата ли конкретная кнопка - спрашиваем через GetAsyncKeyState

Цитата:
Эх, как мало осталось людей, которые программировали под MS-DOS
Нас не мало - мы просто хорошо маскируемся
SapeR вне форума  
Старый 27.12.2005, 16:12     # 23
ЛеднеFF
Junior Member
 
Регистрация: 01.04.2005
Сообщения: 121

ЛеднеFF Мелкий засранец
При закрашивании окна точками в цикле по оси Х и по оси Y операторами

CClientDC dc(this);
for y....
for x.....
dc.SetPixel(X,Y,RGB(1,1,1));

все это дело проиходит достаточно медленно, а как можно все это ускорить, ведь при построении динамической трехмерной сцены каждый кадр рисуется путем вывода каждой точки на экран да еще плюс просчитывается вся сцена и происходит это куда быстрее. Приведенный выше алгоритм закрашивает область 800х600 точек около 1,5-2 сек это просто ни куда не годится....
ЛеднеFF вне форума  
Старый 27.12.2005, 22:17     # 24
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
конечно ни в какие ворота не лезет - по точкам к экрану носить
учитывая что у тебя всё одним цветом - создай браш твоего цвета и используй dc.Rectangle(0,0,800,600)
даже если будут разные цвета - создай битмап в памяти и "натяни" его битблитом на dc - дешевле по времени выходит
SapeR вне форума  
Старый 28.12.2005, 00:11     # 25
AGoncharov
Junior Member
 
Регистрация: 16.04.2004
Сообщения: 106

AGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собойAGoncharov Имеются все основания чтобы гордиться собой
Цитата:
Сообщение от ЛеднеFF
все это дело проиходит достаточно медленно, а как можно все это ускорить
Я бы даже советовал вообще сначала рисовать динамические картинки в памяти на Bitmap, а потом копировать ее в context окна без масштабирования - я так делал еще на i80386 проце и всё летало.
AGoncharov вне форума  
Старый 28.12.2005, 12:06     # 26
ЛеднеFF
Junior Member
 
Регистрация: 01.04.2005
Сообщения: 121

ЛеднеFF Мелкий засранец
а как это делается?

Последний раз редактировалось ЛеднеFF; 28.12.2005 в 16:38.
ЛеднеFF вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 10:53.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.