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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2011, 20:31   #1
Ковалёв Александр
 
Регистрация: 03.01.2011
Сообщений: 3
По умолчанию Проверка стрелок

Объясните пожалуйста поподробнее смысл проверки на -32.(как это работает,какое условие выполняется,что будет в ch)Заранее огромное спасибо!

Код:
ch = static_cast<int>(act);
if (ch == -32)
{}
else if (ch == 27)
{
  break;
}
else if (ch == 75)
{
  // код для передвижения персонажа влево

}
else if (ch == 77)
{
  // код для передвижения персонажа вправо

}
else
{
  cout << "Вы нажали неверную клавишу!\n";
}
Мы добавили три блока else if в которых тоже есть проверка условия.

Выполнения оператора if происходит сверху вниз. Если выполняется условие в одном из четырёх первых блоков, то выполняется соответствующий код, после этого все остальные условия не проверяются, а сразу выполняется оператор идущий после закрывающей скобки для else.

Мы добавили проверку ch на -32. Это нужно для правильной обработки клавиш стрелочек. Функцию _getch() нужно вызвать два раза. Первый она вернёт код -32, а во второй - код соответствующей стрелочки. Мы оставили соответствуюий блок кода пустым - просто фигурные скобки. В нём ничего не происходит. Если бы не было проверки этого условия, то строка "Вы нажали неверную клвишу!" появлялась бы два раза.

Последний раз редактировалось ACE Valery; 03.01.2011 в 23:20.
Ковалёв Александр вне форума Ответить с цитированием
Старый 03.01.2011, 20:44   #2
pacniwassano
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 81
По умолчанию

автор думаю тут все телепаты и гадают загадку? код полностью приложите
pacniwassano вне форума Ответить с цитированием
Старый 03.01.2011, 21:14   #3
Ковалёв Александр
 
Регистрация: 03.01.2011
Сообщений: 3
По умолчанию

Код:
#include <conio.h>
#include <iostream>
#include <clocale>
using namespace std;
int main()
{
setlocale(LC_CTYPE,"Russian");
int ch,x,y;
char act;
x=0;
y=0;
while (1)
{
act = _getch();
ch = static_cast<int>(act);
if (ch == -32)
{}
else if (ch == 27)
{
  break;
}
else if (ch == 75)
{
	x=x-1;
  // код для передвижения персонажа влево
}
else if (ch == 77)
{
	x=x+1;
  // код для передвижения персонажа вправо
}
else if (ch == 72)
{
	y=y+1;
  // код для передвижения персонажа вверх
}
else if (ch == 80)
{
	y=y-1;
  // код для передвижения персонажа вниз
}
else
{
  cout << "Вы нажали неверную клавишу!\n";
}
}
cout << "x=" << x << " y=" << y << "\n";
_getch();
return 0;
}

Последний раз редактировалось ACE Valery; 03.01.2011 в 23:21.
Ковалёв Александр вне форума Ответить с цитированием
Старый 04.01.2011, 01:34   #4
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

ну написано же русским по белому что _getch() возвращает первый раз -32 а второй раз код нажатой стрелки.. проверка на -32 нужна чтобы ничего не делать в ответ на 1ый getch
UltimaBeaR вне форума Ответить с цитированием
Старый 04.01.2011, 09:01   #5
Ковалёв Александр
 
Регистрация: 03.01.2011
Сообщений: 3
По умолчанию

Я только начал заниматься программированием нп С++,так что извините за глупые вопросы.
Ковалёв Александр вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Врашение стрелок ddeman666 Помощь студентам 3 16.05.2010 22:37
Коды стрелок (Delphi) VadEr Помощь студентам 6 13.06.2009 12:57
рисование линий (а в идеале стрелок) в javascript Rusl92 JavaScript, Ajax 2 21.01.2009 10:18
Перемещать строки вверх-вниз, с помощью стрелок. Rio309 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 27.10.2008 21:47
Borland C, перхват нажатий стрелок Arion Помощь студентам 3 30.04.2008 12:33