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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2009, 14:54   #1
WRX
Новичок
Джуниор
 
Регистрация: 26.10.2009
Сообщений: 3
По умолчанию объект не упраляется клавиатурой

Доброго времени суток.
Начал изучение С++ (да и само программирование ). Использую DevC++ IDE. Хочу реализовать управление объекта с помощью клавиатуры, не получается (пример из учебника). Может кто нибудь поможет. Заранее спасибо.
Сообщения компиллятора:
'dx' undeclared (first use this function) (Each undeclared identifier is reported only once for each functon is appears in)
'dy' undeclared (first use this function)
'code' undeclared (first use this function)

Сам код:
Код:
#include <conio.h>
#include <graphics.h>
void Draw ( int x, int y, int color )
  {
  setfillstyle ( 1, color );  // сплошная заливка, цвет color
  bar ( x, y, x+20, y+20 );   // залитый прямоугольник
  }
main()
{
int x, y;                    // координаты квадрата
initwindow (400, 400);       // открыть окно для графики   
setfillstyle(1, COLOR(0,0,255)); // сплошная заливка, синий цвет
bar (0, 0, 399, 399);        // залить фон 
dx = 1;  dy = 0;     // сначала двигается вправо                                ** **
while ( 1 )          // бесконечный цикл 
  {
  if ( kbhit() ) {             // если нажата клавиша 
    code = getch();              // получить ее код                                   **
    if ( code == 27 ) break;     // если Esc, то выход
    switch ( code ) {            // изменить направление движения
      case 75: dx = -1; dy = 0; break;
      case 77: dx = 1;  dy = 0; break;
      case 72: dx = 0;  dy = -1; break;
      case 80: dx = 0;  dy = 1;
      }
   }
Draw ( x, y, COLOR(255,255,0) ); // рисуем квадрат
delay ( 10 );                    // ждем
Draw ( x, y, COLOR(0,0,255) );   // стираем 
x += dx;                         // двигаем квадрат
y += dy;
}  /* анимация */
closegraph();     // закрыть окно для графики
}

Последний раз редактировалось Sazary; 26.10.2009 в 22:23.
WRX вне форума Ответить с цитированием
Старый 26.10.2009, 15:40   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
dx = 1; dy = 0;
У Вас не объявлены типы данных переменных.

Исправте
Код:
int dx = 1;int  dy = 0;
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 26.10.2009, 16:25   #3
WRX
Новичок
Джуниор
 
Регистрация: 26.10.2009
Сообщений: 3
По умолчанию

Исправил. Проблема с 'code' тоже решилась. Еще раз спасибо за помощь.
WRX вне форума Ответить с цитированием
Старый 26.10.2009, 16:35   #4
mYziK
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 38
По умолчанию

Код:
code = getch(); // получить ее код **
code тоже не объявлена. Измени на
Код:
...
char code;
while ( 1 ) // бесконечный цикл 
{
if ( kbhit() ) { // если нажата клавиша 
code = getch(); // получить ее код **
...
и, если я правильно помню, при считывании спец. клавиш нужно писать так:

Код:
if ( kbhit() ) {
    code = getch()
    if(code == 0)
    {
        code = getch();
        switch ( code ) { // изменить направление движения
            case 75: dx = -1; dy = 0; break;
            case 77: dx = 1; dy = 0; break;
            case 72: dx = 0; dy = -1; break;
            case 80: dx = 0; dy = 1;
    }
}
Т.е. если нажата спец. клавиша, ее код состоит из двух символов с кодами 0 и вторым, определяющим ее. Т.е. сначала считываем первый символ, если ноль - то нажата спец клавиша и счвитываем второй-код клавиши. (как раз для стрелок это будет 72, 75, 77, 80)

Последний раз редактировалось mYziK; 26.10.2009 в 16:43.
mYziK вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите Новичку! transport Помощь студентам 4 05.02.2009 00:51
Помогите новичку vorron Свободное общение 8 15.03.2008 08:56
Помогите новичку Alvis Общие вопросы Delphi 3 25.12.2006 08:03
Помогите новичку! Yury Общие вопросы Delphi 1 21.12.2006 15:16