Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 23

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

11.01.2013, 22:48. Показов 3777. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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 минут
ап!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.01.2013, 22:48
Ответы с готовыми решениями:

Как мне программно добавить поле в таблице и сделать поле ключевым
1. Как мне программно добавить поле в таблице и сделать поле ключевым? 2. Как программно организовать связь данных между двумя таблицами?

У меня в игре змейка поле заполнено буквой a. Как сделать поле пустым?
# include &lt;iostream&gt; # include &lt;windows.h&gt; # include &lt;time.h&gt; # include &lt;conio.h&gt; using namespace std; int snake_size, change_x,...

Как в access сделать чтобы подстановка в поле определялась выбранным значением в предыдущем поле
Добрый день! Подскажите пожалуйста каким образом решить данную задачку. Допустим есть поле &quot;тип операции&quot; с выпадающим...

8
 Аватар для Xipxop
481 / 9 / 6
Регистрация: 28.12.2011
Сообщений: 151
11.01.2013, 23:22
зачем вы уже установленным значениям массива снова устанавливаете новое значение?
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] = ' ';
    }
}
0
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 23
11.01.2013, 23:54  [ТС]
Поясните?
Смысл такой что надо сделать два игровых поля.
Одним управляю я. Как это написано в коде.
Другим управляет искусственный интелект. Сейчас на данной стадии я не могу понять как сделать два игровых поля.
Книжку читаю, точнее сайт и вот там задание для меня не понятное, посмотрев на структуру кода я смогу разобраться в дальнейшем его использовании

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

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

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

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

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

Выше мнение, имхо, но приведу доводы:
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';
Отслеживать стрелки вниз и вверх.
при нажатии таковых менять расположение "игрока" вниз и верх

После этого вы увидите, что справа в консоле будет копироваться наш игрок!
1
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 23
17.01.2013, 20:25  [ТС]
Спасибо. Да я хотел воссоздать пример. Но самому никак не получилось сделать границы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.01.2013, 20:25
Помогаю со студенческими работами здесь

Как сделать цикл одновременно с цифрами и буквами
Всем привет) Есть один вопрос, как сделать цикл одновременно с цифрами и буквами, очень нужно)

Как можно сделать такую рамку с цифрами
Пришел макет от дизайнера, у него там куча блоков с рамками продолжением цифр и букв, причем эти буквы и цифры должны обтекаться текстом....

Как сделать пробел между цифрами и текстом
Как сделать пробел с помощью регулярного выражения между цифрами и текстом. Например &quot;01Растениеводство&quot; сделать разделение меду...

Как сделать раскрывающий текст не треугольниками как цифрами
Как сделать так чтобы вместо треугольник были цифры? &lt;details&gt; &lt;summary&gt;1. Что такое TOEFL?&lt;/summary&gt; ...

Как сделать значение с двумя цифрами после запятой?
Нашел способ как сделать перевод из textbox3 из string в float Convert.ToSingle(textBox3.Text) Но тогда при вводе значения...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru