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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2011, 10:42   #1
blackbanny
Форумчанин
 
Аватар для blackbanny
 
Регистрация: 02.10.2009
Сообщений: 104
Восклицание меню в консоле

есть код для менюшки, по идее при нажатии стрелок вверх или вниз, должен передвигаться флажок
-> , но почему то не передвигается, остается н первом пункте...
пишу в Borland Developer Studio 2006
подскажите в чем дело...

Код:
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int menu();
int main()
{
 
                int answer=menu();
    switch (answer)
                {
                        case 0: cout<<"1"<<endl;break;
                                case 1: cout<<"2"<<endl;break;
                                case 2: cout<<"3"<<endl;break;
                                case 3: cout<<"4"<<endl;return 0;
        }
                system("pause");
                return 0;
}
 
int menu() {
        int key=0; 
        int code;  
        do {
                system("cls");  
                key=(key+4)%4;  
                                if (key==0) cout<<"-> Privet +1"<<endl;
                                                else  cout<<"   Privet +1"<<endl;
 
                                if (key==1) cout<<"-> Privet +2"<<endl;
                                                else  cout<<"   Privet +2"<<endl;
 
                                if (key==2) cout<<"-> Privet +3"<<endl;
                                                else  cout<<"   Privet +3"<<endl;
 
                                if (key==3) cout<<"-> Privet +4"<<endl;
                                                else  cout<<"   Privet +4"<<endl;
                                                
                                code=getch();
                if (code==224)
                                {
                                        code=getch();
                                        if (code==80) key++; 
                                        if (code==72) key--; 
                        }
           }while(code!=13); 
                system("cls");  
        return key; 
}
blackbanny вне форума Ответить с цитированием
Старый 05.01.2011, 11:28   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

на мой взгляд всё правильно...

Отладка Вам доступна?
Цитата:
Код:
                                                
                code=getch();
                if (code==224)
проверьте, при нажатии на стрелки - чему равен первый код ?
мне кажется, что он должен быть ноль (ну и проверять на if (code==0) )

(p.s. можно даже временно выводить нажатый код на экран:
Код:
      code=getch();
      cout<<code;  //не знаю синтаксис C - поэтому не уверен, что так... но подправите, как надо...
      if (code==224) ...

отсюда
Цитата:
Справка: функции getchar и getch осуществляют чтение одного байта
из области bios под названием буфер клавиатуры. При этом кодировка управ-
ляющих клавиш клавиатуры выполнена в системе "расширенных scan – кодов"(в
первом байте нуль)

Последний раз редактировалось Serge_Bliznykov; 05.01.2011 в 11:38.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.01.2011, 18:58   #3
blackbanny
Форумчанин
 
Аватар для blackbanny
 
Регистрация: 02.10.2009
Сообщений: 104
По умолчанию

Serge_Bliznykov, да действительно нужно не if(code==224), а if(code==0), тогда все заработает...
спасибо!
blackbanny вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в консоле VC++ MadHead86 Общие вопросы C/C++ 2 14.09.2012 15:48
Позиционирование в консоле Stepan575 Общие вопросы C/C++ 1 05.12.2010 12:58
html код в консоле Cpluser Общие вопросы C/C++ 6 29.04.2010 11:25
Отступ между цифрами в консоле Golovastik Общие вопросы C/C++ 4 15.07.2009 23:24
Псевдографика в консоле Spice Общие вопросы .NET 2 23.12.2008 13:41