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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2013, 12:11   #1
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию События

Столкнулся с такой проблемой.
Создал виджет, и переопределил событие keyPressEvent, вроде все работает, но если нажать на клавишу W объект движется в перёд, а затем на A (не отпуская W) то объект движется только влево, но ни по диагонали и если потом отпустить клавишу A (при этом W до сих пор нажата), объект стоит на месте. Никак не пойму, что нужно сделать, чтобы событие нажатия клавиши A не перекрывало W. Уже подумываю не нужно ли здесь применять потоки???
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 03.12.2013, 12:16   #2
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Запоминать надо событие нажатия на W, чтобы при нажатии на A, определить, что нажаты 2 клавиши.
nikmoon вне форума Ответить с цитированием
Старый 04.12.2013, 12:07   #3
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Я это пробовал, но при отпускании клавиши А, событие нажатие W, не происходит.
Через функцию keyReleaseEvent, создавал искусственное событие нажатия клавиши W, но бесполезно.
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 04.12.2013, 12:31   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

что за библиотека?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 04.12.2013, 12:34   #5
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Не знаю какие библиотеки Вы используете.
Опишу алгоритм в общем.

Код:
// переменные, отвечающие за перемещение по осям
int dx = 0, dy = 0;

// текущее положение объекта
int x = 0, y = 0;

// бесконечный (или конечный, по Вашему желанию) цикл с како-либо задержкой
do
{
  x += dx;   // перемещаемся по оси X
  y += dy;   // перемещаемся по оси Y
  // помещаем объект в новые координаты (x,y)
  // вставляем некоторую задержку при необходимости
}
while (true);

/*
*      Обработчики событий
********************************
*/

// обработчик нажатия на клавишу W
void KeyPressed_W()
{
  dy = -1;  // направление движения - вверх
}

// обработчик отпускания клавиши W
void KeyReleased_W()
{
  dy = 0; // перестаем двигаться по оси Y
}

// обработчик нажатия на клавишу A
void KeyPressed_A()
{
  dx = -1;  // начинаем двигаться влево
}

// обработчик отпускания клавиши A
void KeyReleased_A()
{
  dx = 0;  // прекращаем движение по оси X
}

// добавляем другие обработчики по желанию
nikmoon вне форума Ответить с цитированием
Старый 04.12.2013, 14:25   #6
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Библиотека QT
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 04.12.2013, 23:32   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код свой приведи. Мне лень примеры с нуля писать (МБ не мне одному?)
rrrFer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
События UtyOmOk C# (си шарп) 11 07.01.2019 11:51
События azarnik93 Помощь студентам 2 31.08.2013 13:37
События в WPF. Обращение к компонентам формы из события Casper-SC Общие вопросы .NET 3 25.07.2010 19:03
События session Общие вопросы C/C++ 2 21.06.2010 17:16
События yarilo JavaScript, Ajax 3 28.01.2010 23:18