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

Ошибки вроде бы нет, но работает не правильно! - C++

Восстановить пароль Регистрация
 
G00CH
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 5
15.04.2012, 00:32     Ошибки вроде бы нет, но работает не правильно! #1
Христос Воскресе!
Вот код:
C++ (Qt)
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>
#include <clocale>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    char act;
    int  ch, x, y;
    x = 0;
    y = 0;
    char map[15][20];
    for(int i = 0; i < 15; i++)
    {
        for(int j = 0; j < 20; j++)
        {
            map[i][j]= ' ';
        }
    }
    map[0][0] = 'T';
    while(1)
    {
        act=_getch();
        ch = static_cast<int>(act);
        if (ch == -32)
        {}
        else if (ch == 27)
        {
          break;
        }
        else if (ch == 75)
        {
          // код для передвижения персонажа влево
            map[x][y]= ' ';
            y--;
            map[x][y] = 'T';
 
        }
        else if (ch == 77)
        {
          // код для передвижения персонажа вправо
            map[x][y]= ' ';
            y++;
            map[x][y]='T';
        }
        else if (ch == 72)
        {
          // код для передвижения персонажа вверх
            map[x][y]=' ';
            x++;
            map[x][y]='T';
        }
        else if (ch == 80)
        {
          // код для передвижения персонажа вниз
            map[x][y]=' ';
            x--;
            map[x][y]='T';
        }
        else
        {
          cout << "Вы нажали неверную клавишу!\n";
        }
    }
    cout << "x = " << x <<endl;
    cout << "y = " << y << endl;
    _getch();
}
суть проблемы заключается в том, что мне не рисует программа букву "Т" в клетке с координатами (0;0)
следовательно и не перемещает. Не знаю как разрешишь данную проблему, помогите.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.04.2012, 00:50     Ошибки вроде бы нет, но работает не правильно! #2
Ээ... Я сожет туплю... А где ты вообще печатаешь свою карту?
G00CH
0 / 0 / 0
Регистрация: 11.06.2011
Сообщений: 5
15.04.2012, 00:58  [ТС]     Ошибки вроде бы нет, но работает не правильно! #3
ну так как в гайде был описан принцип только а не весь код,
то как я понял вот это:
C++ (Qt)
1
2
3
4
5
6
7
8
9
char map[15][20];
    for(int i = 0; i < 15; i++)
    {
        for(int j = 0; j < 20; j++)
        {
            map[i][j]= ' ';
        }
    }
    map[0][0] = 'T';
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
15.04.2012, 01:00     Ошибки вроде бы нет, но работает не правильно! #4
Цитата Сообщение от G00CH Посмотреть сообщение
ну так как в гайде был описан принцип только а не весь код,
то как я понял вот это:
C++ (Qt)
1
2
3
4
5
6
7
8
9
char map[15][20];
    for(int i = 0; i < 15; i++)
    {
        for(int j = 0; j < 20; j++)
        {
            map[i][j]= ' ';
        }
    }
    map[0][0] = 'T';
У тебя cout только в конце программы.
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.04.2012, 01:35     Ошибки вроде бы нет, но работает не правильно! #5
Итого: вывод на консоль всей карты до цикла + в конце цикла, либо в начале цикла + после цикла.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
15.04.2012, 01:56     Ошибки вроде бы нет, но работает не правильно! #6
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
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <conio.h>
#include <clocale>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    char act;
    int  ch, x, y;
    x = 0;
    y = 0;
    char map[15][20];
    for(int i = 0; i < 15; i++)
    {
        for(int j = 0; j < 20; j++)
        {
            map[i][j]= ' ';
        }
    }
    map[0][0] = 'T';
    while(1)
    {
     system("cls"); 
     for(int i = 0; i <15; i++)
     {
      for(int j = 0; j < 20; j++)       
         cout << map[i][j];
      cout << endl;
      }
        act=_getch();
        ch = static_cast<int>(act);
        if (ch == -32)
        {}
        else if (ch == 27)
        {
          break;
        }
        else if (ch == 75)
        {
          // êîä äëÿ ïåðåäâèæåГ*ГЁГї ïåðñîГ*Г*Г¦Г* âëåâî
            map[x][y]= ' ';
            y--;
            if (y<0) y=19;
            map[x][y] = 'T';
 
        }
        else if (ch == 77)
        {
          // êîä äëÿ ïåðåäâèæåГ*ГЁГї ïåðñîГ*Г*Г¦Г* ГўГЇГ°Г*ГўГ®
            map[x][y]= ' ';
            y++;
            if (y>19) y=0;
            map[x][y]='T';
        }
        else if (ch == 80)
        {
          // êîä äëÿ ïåðåäâèæåГ*ГЁГї ïåðñîГ*Г*Г¦Г* ââåðõ
            map[x][y]=' ';
            x++;
            if (x>14) x=0;
            map[x][y]='T';
        }
        else if (ch == 72)
        {
          // êîä äëÿ ïåðåäâèæåГ*ГЁГї ïåðñîГ*Г*Г¦Г* ГўГ*ГЁГ§
            map[x][y]=' ';
            x--;
            if (x<0) x=14;
            map[x][y]='T';
        }
        else
        {
          cout << "Âû Г*Г*Г¦Г*ëè Г*ГҐГўГҐГ°Г*ГіГѕ ГЄГ«Г*ГўГЁГёГі!\n";
        }
    }
    _getch();
 return 0;
}
Yandex
Объявления
15.04.2012, 01:56     Ошибки вроде бы нет, но работает не правильно!
Ответ Создать тему
Опции темы

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