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

Как сделать поле с "|", #, "-" и цифрами - C++

Восстановить пароль Регистрация
 
VladikISiT
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 23
11.01.2013, 22:48     Как сделать поле с "|", #, "-" и цифрами #1
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include <iostream> // cin, cout
#include <clocale>  // поддержка русского языка
#include <conio.h>  // _getch()
#include <stdlib.h> // поддержка функции очистки экрана system("cls")
 
using namespace std;
 
int main()
{
 
setlocale(LC_CTYPE,"Russian"); // установка русского языка
 
 
char act;    // переменная для хранения ввода пользователя
int ch;      // ввод пользователя приведённый к типу int
int x = 0;   // две переменные для хранения координат пользователя
int y = 0;
char map[15][30] = {
        "  0123456789     0123456789 ",
        " #----------#   #----------#",
        "0|          |  0|          |",
        "1|          |  1|          |",
        "2|          |  2|          |",
        "3|          |  3|          |",
        "4|          |  4|          |",
        "5|          |  5|          |",
        "6|          |  6|          |",
        "7|          |  7|          |",
        "8|          |  8|          |",
        "9|          |  9|          |",
        " #----------#   #----------#" }; // двумерный массив для хранения игровой карты
 
 
// блок инициализации массива
// внешний цикл отвечает за строки
for (int i = 0; i< 15; i++)
{
    // внутренний цикл отвечает за столбцы
    for (int j = 0; j< 20; j++)
    {
        map[i][j] = ' ';
    }
}
for(int a = 0;a<15;a++)
{
    map[x][y]=map[1+a][20];
    map[x][y] = '|';
}
 
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 << "\n"; // переход на новую строку после каждого "ряда"
    }
 
    act = _getch();
    ch = static_cast<int>(act);
 
    
            if  (ch == -32)
            {
 
            }
            else if (ch == 27)
            {
                break;
            }
            
            else if  (ch == 75)
            {
                if(y<1)
                {
                    cout<< "Вы вышли за пределы игрового поля";
                    _getch();
                }
                else
                {
                    map[x][y] = ' '; // "Убираем" объект со старой координаты
                    y--;             // изменяем координаты
                    map[x][y] = 'T'; // "рисуем" объект на новом месте
                }
            }
            else if  (ch == 77)
            {
                if(y>18)// идет до 20 и выдает сообщение
                {
                    cout<< "Вы вышли за пределы игрового поля";
                    _getch();
                }
                else
                {
                    map[x][y] = ' ';
                    y++;
                    map[x][y] = 'T';
                }
            }
            else if  (ch == 80)
            {
                if(x>13) //идет до 15 и выдает сообщение
                {
                    cout<< "Вы вышли за пределы игрового поля";
                    _getch();
                }
                else
                {
                    map[x][y] = ' ';
                    x++;
                    map[x][y] = 'T';
                }
            }
            else if (ch == 72)
            {
                if(x<1)
                {
                    cout<< "Вы вышли за пределы игрового поля";
                    _getch();
                }
                else
                {
                map[x][y] = ' ';
                x--;
                map[x][y] = 'T';
                }
            }
            else
            {
                cout << "Вы ввели неверную клавишу!\n";
                _getch();
            }
            
} // конец цикла while
 
int string; // переменная представляющая строки
int column; // переменная представляющая столбцы
char map2[13][30];
column = 15;
for (string = 2; string < 12; string++)
{
    map2[string][column]    =   string-1;
    
}
 
    _getch();
    return 0;
}
Добавлено через 11 минут
Не могу в массиве сделать рамки. И можете подсказать второе поле сделано верно?

Добавлено через 2 часа 15 минут
ап!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
11.01.2013, 23:22     Как сделать поле с "|", #, "-" и цифрами #2
зачем вы уже установленным значениям массива снова устанавливаете новое значение?
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
char map[15][30] = {
        "  0123456789     0123456789 ",
        " #----------#   #----------#",
        "0|          |  0|          |",
        "1|          |  1|          |",
        "2|          |  2|          |",
        "3|          |  3|          |",
        "4|          |  4|          |",
        "5|          |  5|          |",
        "6|          |  6|          |",
        "7|          |  7|          |",
        "8|          |  8|          |",
        "9|          |  9|          |",
        " #----------#   #----------#" }; // двумерный массив для хранения игровой карты
 
 
// блок инициализации массива
// внешний цикл отвечает за строки
for (int i = 0; i< 15; i++)
{
    // внутренний цикл отвечает за столбцы
    for (int j = 0; j< 20; j++)
    {
        map[i][j] = ' ';
    }
}
VladikISiT
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 23
11.01.2013, 23:54  [ТС]     Как сделать поле с "|", #, "-" и цифрами #3
Поясните?
Смысл такой что надо сделать два игровых поля.
Одним управляю я. Как это написано в коде.
Другим управляет искусственный интелект. Сейчас на данной стадии я не могу понять как сделать два игровых поля.
Книжку читаю, точнее сайт и вот там задание для меня не понятное, посмотрев на структуру кода я смогу разобраться в дальнейшем его использовании

Добавлено через 2 минуты
Вот так надо или как? Я честно не могу на данный момент разобраться
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
char map[15][30] = {
        "  0123456789     0123456789 ",
        " #----------#   #----------#",
        "0|          |  0|          |",
        "1|          |  1|          |",
        "2|          |  2|          |",
        "3|          |  3|          |",
        "4|          |  4|          |",
        "5|          |  5|          |",
        "6|          |  6|          |",
        "7|          |  7|          |",
        "8|          |  8|          |",
        "9|          |  9|          |",
        " #----------#   #----------#" }; // двумерный массив для хранения игровой карты
 
 
// блок инициализации массива
// внешний цикл отвечает за строки
for (int i = 0; i< 15; i++)
{
    // внутренний цикл отвечает за столбцы
    for (int j = 0; j< 20; j++)
    {
        map[i+3][j+3] = ' ';
    }
}
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
12.01.2013, 00:11     Как сделать поле с "|", #, "-" и цифрами #4
разъясню вам более подробнее на примере:
C++
1
2
3
int i[4]={1,2,3,4};
 
for(int b=0;b<5;b++){i[b]=0;}
вот вы делаете тоже самое!
на выходе получаем что все элементы массива равны 0.
VladikISiT
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 23
12.01.2013, 00:18  [ТС]     Как сделать поле с "|", #, "-" и цифрами #5
Цитата Сообщение от Xipxop Посмотреть сообщение
разъясню вам более подробнее на примере:
C++
1
2
3
int i[4]={1,2,3,4};
 
for(int b=0;b<5;b++){i[b]=0;}
вот вы делаете тоже самое!
на выходе получаем что все элементы массива равны 0.
Ага, понял. А как можно сделать чтобы были рамки?
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
12.01.2013, 00:35     Как сделать поле с "|", #, "-" и цифрами #6
О каких именно рамках идет речь?
Приведите пример, как эти рамки должна на экран выводить... (имею ввиду что вы хотите, чтобы программа вам показала)
VladikISiT
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 23
12.01.2013, 00:45  [ТС]     Как сделать поле с "|", #, "-" и цифрами #7
В общем два массива и должны быть границы массива обозначены |,-, а по углам #.
И если что можете объяснить как сделать рядом еще массив.

Добавлено через 7 минут
В общем смысл такой, пока я учусь и у меня символ Т передвигается по области заданного массива с ограничениями. Вот и нужны границы этого массива сделать символами. Так же надо сделать второй справа массив для компьютера аналогичный дизайну этого
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
12.01.2013, 00:58     Как сделать поле с "|", #, "-" и цифрами #8
Как я понял вы взяли пример из сайта Шаталов.ру (или както там...)
Там создавали игру "Морской бой"

Так вот я понимаю хотите, воссоздать этот пример, (или следуя инструкции сделать свой).

Что вам сообщу, примеры преведенные на этом сайте хорошие, но есть одно но консоль (незнаю почему) выдает странности даже откомпилировав готовый пример этой программы.

Вывод:
Консоль не предназначенна для постоянных и частых обновлений, и вывода так сказать таблиц, которыми так манипулируют.

Выше мнение, имхо, но приведу доводы:
1)Даже сделав простой каркас танчиков.(просто вырисовка поля и "хождения" танка по нему, будут появляться баги консоли)(в приложении выложил)
2) я заметил, что консоль умеет копировать текст в конце столбцов...
Короче, я лично не сталбороться с этой фигней и стану учить directX или OpenGl, всеравно смысл построения игры одинаков.

приложение
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
#include <cstdlib>
#include <iostream>
#include <conio.h>  //_getch()
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int x=0,y=0,ch=0;
    bool exit;
    char map[10][10];
    
    for(int i=0; i<10; i++)
    {
        for(int b=0; b<10; b++)
        {
            map[i][b]=' ';
        }
    }
    map[0][0]='x';
    
    while(exit==true)
    {
        system("cls");
        for(int i=0;i<10;i++){for(int b=0;b<10;b++){cout << map[i][b];} cout << endl;}
        ch=_getch();
        switch(ch)
        {
            case 80: //ГўГ*ГЁГ§
                map[y][x]=' ';
                if(y<9){y++;}else{y=0;}
                map[y][x]='x';
            break;
            
            case 72: //ââåðõ
                map[y][x]=' ';
                if(y>0){y--;}else{y=9;}
                map[y][x]='x';
            break;
        }
    }
    
    //system("PAUSE");
    return 0;
}


Добавлено через 2 минуты
Если хотите убедиться в этом, то попробуйте просто сделать пустое поле.
Карта 10х10.
"игрок" ='X';
Отслеживать стрелки вниз и вверх.
при нажатии таковых менять расположение "игрока" вниз и верх

После этого вы увидите, что справа в консоле будет копироваться наш игрок!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2013, 20:25     Как сделать поле с "|", #, "-" и цифрами
Еще ссылки по теме:

Имеется строка "AAABBCCAA", нужно вывести на экран "3A2B2C2A", и так же сделать обратное действие C++
Как доказать, что при "а = b" на место "а" возвращается ссылка? C++
C++ Как сделать execl("my", "arg", argv)?

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

Или воспользуйтесь поиском по форуму:
VladikISiT
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 23
17.01.2013, 20:25  [ТС]     Как сделать поле с "|", #, "-" и цифрами #9
Спасибо. Да я хотел воссоздать пример. Но самому никак не получилось сделать границы
Yandex
Объявления
17.01.2013, 20:25     Как сделать поле с "|", #, "-" и цифрами
Ответ Создать тему
Опции темы

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