Форум программистов, компьютерный форум CyberForum.ru

Ввод данных без нажатия Enter - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
30.06.2011, 03:48     Ввод данных без нажатия Enter #1
Здравствуйте.

Допустим, у меня есть такое:
C++
1
2
char ololo;
cin >> ololo;
Тут мне надо ввести символ и нажать Enter.
Как сделать то же самое, но без нажатия Enter'a?

То есть, чтоб нажал на нужную кнопку - и все, символ введен.


Если что, вот зачем мне это надо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>  //
#include <windows.h> //
#include <stdlib.h>  //
#include <conio.h>   //
                     //
using namespace std; //
///////////////////////
 
int main()
{
    char array [20][20];    // объявляем массив 20 на 20
    
    // все элементы массива - звездочки
    for (int row = 0; row < 20; row++)
        for (int column = 0; column < 20; column++)
            array [row][column] = '*';
            
    
    int x = 10;
    int y = 10;
    
    array [x][y] = 'Q';    // в точке 10:10 - знак 'Q'
    
    // выводим массив
    for (int row = 0; row < 20; row++)
    {
        for (int column = 0; column < 20; column++)
            cout << array [row][column];
            
        cout << endl;
    }
    
    cout << endl;
    
    char coordinates;     // координаты
    
    while (true)
    {
       cin >> coordinates;      // просим ввести направление
           
       system ("cls");          // очищаем экран
    
       array [x][y] = '*';      // старое место забиваем звездочкой
    
       if (coordinates == 'w')  // меняем координаты в зависимости от нажатия кнопки (w, s, a, d)
          x -= 1;
       else if (coordinates == 's')
          x += 1;
       else if (coordinates == 'a')
          y -= 1; 
       else if (coordinates == 'd')
          y += 1;  
        
       array [x][y] = 'Q';     // 'Q' уже в новом месте
    
       // выводим новый массив    
       for (int row = 0; row < 20; row++)
       {
           for (int column = 0; column < 20; column++)
              cout << array [row][column];
            
              cout << endl;
       }
            
    }
    
    getch ();
    return 0;
}
В общем, погонять символ 'Q' по двумерному массиву 20 на 20.

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2011, 03:48     Ввод данных без нажатия Enter
Посмотрите здесь:

Ввод символов без нажатия Enter'а C++
C++ ввод цифры без нажатия Enter'a. использование _getch()
C++ Обработка нажатия клавиши без подтвержения enter
C++ Ввод без ENTER
Ввод данных без нажатия «Enter» C++
Считывание чисел до нажатия Enter C++
C++ Как сделать ввод без enter?
Проверка нажатия enter C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.06.2011, 04:44     Ввод данных без нажатия Enter #2
getch();
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
30.06.2011, 07:33     Ввод данных без нажатия Enter #3
Цитата Сообщение от vortexx1 Посмотреть сообщение
В общем, погонять символ 'Q' по двумерному массиву 20 на 20.
Спасибо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <iterator>
#include <conio.h>
 
 int main ( )
{
    char c; int i = 10, j = 10;
    char mass[20][21];
    std::fill ( &(**mass), &(**mass)+420, '*' );
     for ( int k =0; k < 20; k++ )
        mass[k][20] = '\n';
    mass[i][j] = 'Q';
    do {
      system("cls");
      copy ( &(**mass), &(**mass)+420, std::ostream_iterator< char>( std::cout));
      c = _getch( );
       switch ( c)
      {
        case 72: case 'w': if ( i >  0){ mass[i][j] = '*'; i--;}
       break;
        case 80: case 's': if ( i < 19){ mass[i][j] = '*'; i++;}
       break;
        case 75: case 'a': if ( j >  0){ mass[i][j] = '*'; j--;}
       break;
        case 77: case 'd': if ( j < 19){ mass[i][j] = '*'; j++;}
       break;
        default: ;
      }
      mass[i][j] = 'Q';
        }
    while( c!= 27); // Esc
 
   system("pause");
  return 0;
}
Как-то так =)
Yandex
Объявления
30.06.2011, 07:33     Ввод данных без нажатия Enter
Ответ Создать тему
Опции темы

Текущее время: 05:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru