Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2012, 18:38   #1
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию Проблема -Асинхронный ввод

Доброго дня уважаемые! Столкнулся с проблемой асинхронного ввода при написании пакмана, прошу помощи- хотелось бы чтобы игра жила своей жизнью - монстры двигались, пока игрок не производит никаких действий...
Прошу помощи ! Также возникает проблема с морганием экрана при постоянной перерисовке карты... Заранее благодарю
Вложения
Тип файла: txt пакман.txt (5.4 Кб, 143 просмотров)
Кудаив вне форума Ответить с цитированием
Старый 19.04.2012, 19:23   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

Скомпилировать ваш код нечем, но идея такова.
Вы должны "крутить" игровой цикл и считывать клавиши, чтобы менять положение пакмана.
Используйте int kbhit(void) для определения, было ли нажатие, и если было, то считывать значение с помощью getch(void) и менять направление пакмана (модуль conio.h).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 19.04.2012, 20:02   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Все верно.
А по поводу мерцания - технология называется двойной буферизацией (правда, на мой взгляд первое слово здесь лишнее). Суть в том, что рисовать изображение в оперативной памяти (в буфере), а на экран выводить уже готовое.
s-andriano вне форума Ответить с цитированием
Старый 19.04.2012, 21:02   #4
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию

насчёт асинхронного ввода что то вроде...

while(true){
...
if(kbhit())
getch();
}
?
Кудаив вне форума Ответить с цитированием
Старый 19.04.2012, 21:10   #5
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию

да именно так попробовал- работает! сильно благодарен!)))
Кудаив вне форума Ответить с цитированием
Старый 20.04.2012, 07:44   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

1. Ну, вместо true лучше использовать переменную, означающую, что программа должна продолжать работать.
2. Вместо kbhit и getch зачастую используются более специфические функции, нежели стандартные системные. Хотя бы потому, что стандартные системные не отслеживают отпускание клавиши, а иногда это бывает важно.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
матрицы. ввод из файла. проблема. -Vaka- Паскаль, Turbo Pascal, PascalABC.NET 0 02.05.2011 11:24
Асинхронный вызов в C# q_proger C# (си шарп) 7 16.12.2010 23:27
Асинхронный просмотр Claster Помощь студентам 6 11.02.2010 15:38
Асинхронный сокет raspberry C/C++ Сетевое программирование 8 07.07.2009 16:51
Асинхронный ввод/вывод Pblog Обсуждение статей 0 27.05.2007 02:13