Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

11.01.2013, 22:48. Просмотров 482. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2013, 22:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать поле с "|", #, "-" и цифрами (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

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

Добавлено через 7 минут
В общем смысл такой, пока я учусь и у меня символ Т передвигается по области заданного массива с ограничениями. Вот и нужны границы этого массива сделать символами. Так же надо сделать второй справа массив для компьютера аналогичный дизайну этого
0
Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 151
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';
Отслеживать стрелки вниз и вверх.
при нажатии таковых менять расположение "игрока" вниз и верх

После этого вы увидите, что справа в консоле будет копироваться наш игрок!
1
VladikISiT
0 / 0 / 0
Регистрация: 12.11.2012
Сообщений: 23
17.01.2013, 20:25  [ТС] #9
Спасибо. Да я хотел воссоздать пример. Но самому никак не получилось сделать границы
0
17.01.2013, 20:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2013, 20:25
Привет! Вот еще темы с ответами:

Как сделать "Старт", "Пауза", Стоп"? - C++
Доброго времени суток, как сделать так, чтобы при нажатии на кнопку начиналось цикличное действие (рисование например) и продолжалось бы...

Реализовать структуру "Анкета" с полями "Фамилия", "Пол" и "Адрес" - C++
Здравствуйте. Проходим тему Структуры, не могу понять, как определить количество, само задание: #include &lt;iostream&gt; #include...

по строкам.замените в слове сочетание "му" на "а" , а букву "ы" на "ца". очень нужно - C++
замените в слове сочетание &quot;му&quot; на &quot;а&quot; , а букву &quot;ы&quot; на &quot;ца&quot;. очень нужно Добавлено через 21 час 4 минуты неужели никто не знает...

Создать иерархию классов "Фирма", "Бухгалтер", "Сотрудник", "Зарплата" - C++
Само по себе понятие &quot;зарплата&quot; не особенно конкретное: оно включает и почасовую, и ставочную зарплату, и комиссионные, и процент с продаж....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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