Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват нажатия клавиш, проблема с перехватом 
:(
    Опции темы
PELIKANN
Дата 25.7.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Всем добрый день!

Решил написать игру змейку и столкнулся с проблемой перехвата клавиш... После нажатия на кнопку начинается бесконечный цикл движения змейки по игровому полю и в это время после нажатия клавиш на клавиатуре ничего не происходит... стоит змейке остановиться, как перехват клавиш начинает работать... 
Помогите сделать так,чтобы перехват работал во время перемещения змейки..

Заранее спасибо


Код

System::Void Form1_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
            if (e->KeyCode==Keys::W)
            {
                this->move_direction=1;
                this->textBox1->Text="UP!";
            }
            if (e->KeyCode==Keys::S)
            {
                 this->move_direction=2;
                 this->textBox1->Text="DOWN!";
            }
            if (e->KeyCode==Keys::A)
            {
                 this->move_direction=3;
                 this->textBox1->Text="LEFT!";
            }
            if (e->KeyCode==Keys::D)
            {
                 this->move_direction=4;
                 this->textBox1->Text="RIGHT!";
            }
         }


Код


System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                    while (1)
                                   {
                                   //движение змейки
                                   }
                                    }

PM MAIL   Вверх
Pilger
Дата 25.7.2010, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Вместо бесконечного цикла используй Timer.


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
PELIKANN
Дата 25.7.2010, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Цитата(Pilger @ 25.7.2010,  13:36)
Вместо бесконечного цикла используй Timer.

а можно подробнее,пожалуйста
PM MAIL   Вверх
Pilger
Дата 25.7.2010, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 10.5.2008
Где: Германия

Репутация: нет
Всего: нет



Кидаешь на форму System.Windows.Forms.Timer. Копируешь в обработчик события Tick всё что было в цикле. Устанавливаешь свойство Intervall которое обозначает, через какой интервал времени (в милисек) будет вызываться это событие. Запускаешь или вырубаешь через свойство Enabled.

Это сообщение отредактировал(а) Pilger - 25.7.2010, 14:06


--------------------
Ein Leben nach der Schleife existiert, nur wenn die Schleife terminiert.
PM MAIL ICQ   Вверх
PELIKANN
Дата 25.7.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.9.2008

Репутация: нет
Всего: нет



Pilger, спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.1669 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.