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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gennadich_
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 3
#1

Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ) - C++

17.01.2013, 12:08. Просмотров 533. Ответов 4
Метки нет (Все метки)

Решил спустя некоторый промежуток времени попрактиковаться в c++.
Написать программу, где при нажатии кнопок со стрелками по консоли движется символ.
Вроде бы все должно работать хорошо, если рассуждать логически, но не работает.
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
#include <iostream>
#include <clocale>
#include <conio.h>
using namespace std;
 
int main()
{
    int key;
    char act;
    char map[50][50];
    int i,j,x=0,y=0;
    for(j=0;j<50;j++)
    {
        for(i=0;i<50;i++)
        {
            map[i][j]=' ';
        }
    }
    map[0][0]='0';
    while(1)
    {
        system("cls");
        for(j=0;j<50;j++)
        {
            for(i=0;i<50;i++)
            {
                cout<<map[i][j];
            }
            cout<<"\n";
        }
        act=_getch();
        key=static_cast<int>(act);
        switch(key)
        {
            case 72:
                map[x][y]=' ';
                y--;
                map[x][y]='0';
                break;
            case 75:
                map[x][y]=' ';
                x--;
                map[x][y]='0';
                break;
            case 77:
                map[x][y]=' ';
                x++;
                map[x][y]='0';
                break;
            case 80:
                map[x][y]=' ';
                y++;
                map[x][y]='0';
                break;
                default:
                    break;
        }
        
    }
    system("pause");
    return EXIT_SUCCESS;
}
скажите народ, почему она сразу же стирает карту? Хотя должна стереть, перерисовать и ждать нажатия клавиши, чтобы снова стереть и перерисовать.
Сделано на dev-cpp. Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 12:08     Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ)
Посмотрите здесь:

Как в Visual C++ Сделать так, что бы при нажатии на кнопочку в листбоксе чтонибудь появлялось. C++
C++ Движение объекта, управление стрелками. Перестает работать при нажатии любой клавиши
ошибка в программе, что не так.. C++
Меню в консоли, управление стрелками C++
C++ что не так в программе? Виснет при компиляции
что не так в программе, выдает ошибку... C++
C++ Что не так в программе? (цикл While)
C++ Что не так в программе для нахождения факториала?
Объясните что не так с указателем в программе C++
Управление стрелками в консоли C++
C++ Навигация в консоли С++ стрелками и выбор подменю клавишей Ввода
Как сделать так, что при нажатии клавиши ( не могу сформулировать) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
17.01.2013, 12:14     Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ) #2
Gennadich_, помнеяй очистку экрана и взятие клавиши местами.
Gennadich_
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 3
17.01.2013, 13:20  [ТС]     Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ) #3
Цитата Сообщение от Invader_Zim Посмотреть сообщение
Gennadich_, помнеяй очистку экрана и взятие клавиши местами.
увы, не помогло
FreeMinder
36 / 36 / 2
Регистрация: 29.08.2012
Сообщений: 59
17.01.2013, 13:26     Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ) #4
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
70
71
#include <iostream>
#include <conio.h>
using namespace std;
 
const int MAX_ROW = 23;
const int MAX_COL = 78;
 
int main()
{
    int key;
    char act;
    char map[MAX_ROW+1][MAX_COL+1];
    int row = 0, col = 0;
 
    for(int i=0;i<=MAX_ROW;i++)
    {
        for(int j=0;j<=MAX_COL;j++)
        {
            map[i][j]=' ';
        }
    }
 
    map[0][0]='0';
 
    while(true)
    {
        system("cls");
        for(int i=0;i<=MAX_ROW;i++)
        {
            for(int j=0;j<=MAX_COL;j++)
            {
                cout<<map[i][j];
            }
            cout<<"\n";
        }
        act=_getch();
        key=static_cast<int>(act);
        switch(key)
        {
            case 72: // вверх
                map[row--][col]=' ';
                if(row < 0 ) 
                    row = MAX_ROW;
                map[row][col]='0';
                break;
            case 75: // влево
                map[row][col--]=' ';
                if(col < 0) 
                    col = MAX_COL;
                map[row][col]='0';
                break;
            case 77: // вправо
                map[row][col++]=' ';
                if( col > MAX_COL)
                    col = 0;
                map[row][col]='0';
                break;
            case 80: // вниз
                map[row++][col]=' ';
                if(row > MAX_ROW) 
                    row = 0;
                map[row][col]='0';
                break;
                default:
                    break;
        }
        
    }
    system("pause");
    return EXIT_SUCCESS;
}
FreeMinder
36 / 36 / 2
Регистрация: 29.08.2012
Сообщений: 59
17.01.2013, 13:32     Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ) #5
Gennadich_, ваш код тоже работоспособен, только добавить проверку на выход за пределы массива.
А для того, чтобы увидеть его работу нужно растянуть консоль, так как туда не влезет 50 строк
Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ)
Yandex
Объявления
17.01.2013, 13:32     Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ)
Ответ Создать тему
Опции темы

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