Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите разобраться в "сложной программе"  (Прочитано 6128 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AlexLn
Участник

ru
Offline Offline

« : 15-01-2010 14:15 » 

Такая сложная программа - мы жмём на кнопочки со стрелками, а она нам выдаёт координаты. Должна.

Код:
#include <iostream>
#include <conio.h>

using namespace std;

int x = 0;
int y = 0;
char act;
int ch;

int main()
{
  while (1)
  {
    act = getch();
    ch = int(act);
    switch (ch)
    {
      case 27: // escape
        exit(0);
      break;

      case 75: // влево
        --x;  
      break;

      case 77: // вправо
       ++x;  
      break;

      case 72: // вверх
        ++y;
      break;

      case 80: // вниз
        --y;
      break;

      default:
        cout << "Who is this button?\n";  // не ту кнопку нажали
    }
    cout << "x=" << x << ", y=" << y << "\n";
  }

}

А получается:

Who is this button?            (всегда)
предыдущие координаты (всегда, хотя я их вроде не заказывал)
новые координаты

Где я тут затупил?
« Последнее редактирование: 15-01-2010 15:25 от Sel » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 15-01-2010 14:23 » 

потому что "код стрелочек" - двубайтное число.
после вызыва getch  в буфер клавиатуры попадает два байта
ты снаяала читаешь первый байт и происходит вывод
Who is this button?           
предыдущие координаты
Затем на вход попадает второй символ "код стрелочки"
и происходит вывод
новые координаты
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
AlexLn
Участник

ru
Offline Offline

« Ответ #2 : 15-01-2010 14:29 » 

Спасибо громадное!
Я над этим пол ночи сидел С ума сойти...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 15-01-2010 14:40 » 

AlexLn, ну вот видишь, не такая и "сложная"
Надо было сразу спрашивать, а не полночи не спать.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 15-01-2010 16:37 » new

AlexLn, ну вот видишь, не такая и "сложная"
Надо было сразу спрашивать, а не полночи не спать.
сидеть и думать, а потом спрашивать - полезнее, чем спрашивать сразу. Всё правильно сделал Улыбаюсь Наш человек!
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines