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

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

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

Трудности при написании Морского боя - C++

08.12.2013, 14:56. Просмотров 453. Ответов 5
Метки нет (Все метки)

Пишу курсовик на тему морской бой. в среде VS 2010. проект пишется в Win32. идёт очень плохо по ряду причин, одна из которых моя необразованность. потому прошу помощи кому не сложно. сразу скажу классы использовать нельзя потому что мы их не проходили. это как предистория.
теперь по теме. я написал функцию для размещения кораблей игроком на поле. двумерный динамический массив и работа с ним. но. теперь когда я принялся за написание "стрельбы" компьютером мне нужно как то обращаться к этому массиву, а область видимости ставит палки в колёса. я не вижу в main своего массива прописанного в функции над main. скажите что можно сделать в такой ситуации? переписать код из функции в тело не вариант иначе код увеличиться в несколько раз. я использовал довольно большую конструкцию из символов для "графики" в консоли. не хотелось бы каждый раз ставить всю эту одороблу в код. просто описать массив над main и над функцией?
сама функция:
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
char **Arena(int a, int b, int c, int d)
{
    const int x=10,y=10;
    char **Poligon_1 = new char *[x]();
        for (int i=0; i<x; i++)
            {
                Poligon_1[i]= new char[y]();
            }
 
    Poligon_1[a][b] = '*';
    Poligon_1[c][d] = '*';
                if (a==c && b<d)
                        {
                            do
                                {
                                    Poligon_1[a][b++] = '*';
                                }
                            while(b<d);
                        }
                    if (a==c && b>d)
                                    {
                                        do
                                            {
                                                Poligon_1[a][b--] = '*';
                                            }
                                        while(b>d);
                                    }
                    if (b==d && a<c)
                        {
                            do
                                {
                                    Poligon_1[a++][b] = '*';
                                }
                            while (a<c);
                        }
                    if (b==d && a>c)
                                    {
                                        do
                                            {
                                                Poligon_1[a--][b] = '*';
                                            }
                                        while (a>c);
                                    }
    system("cls");
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<"   | A | B | C | D | E | F | G | H | I | J |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<" 1 | "<<Poligon_1[0][0]<<" | "<<Poligon_1[0][1]<<" | "<<Poligon_1[0][2]<<" | "<<Poligon_1[0][3]<<" | "<<Poligon_1[0][4]<<" | "<<Poligon_1[0][5]<<" | "<<Poligon_1[0][6]<<" | "<<Poligon_1[0][7]<<" | "<<Poligon_1[0][8]<<" | "<<Poligon_1[0][9]<<" |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<" 2 | "<<Poligon_1[1][0]<<" | "<<Poligon_1[1][1]<<" | "<<Poligon_1[1][2]<<" | "<<Poligon_1[1][3]<<" | "<<Poligon_1[1][4]<<" | "<<Poligon_1[1][5]<<" | "<<Poligon_1[1][6]<<" | "<<Poligon_1[1][7]<<" | "<<Poligon_1[1][8]<<" | "<<Poligon_1[1][9]<<" |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<" 3 | "<<Poligon_1[2][0]<<" | "<<Poligon_1[2][1]<<" | "<<Poligon_1[2][2]<<" | "<<Poligon_1[2][3]<<" | "<<Poligon_1[2][4]<<" | "<<Poligon_1[2][5]<<" | "<<Poligon_1[2][6]<<" | "<<Poligon_1[2][7]<<" | "<<Poligon_1[2][8]<<" | "<<Poligon_1[2][9]<<" |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<" 4 | "<<Poligon_1[3][0]<<" | "<<Poligon_1[3][1]<<" | "<<Poligon_1[3][2]<<" | "<<Poligon_1[3][3]<<" | "<<Poligon_1[3][4]<<" | "<<Poligon_1[3][5]<<" | "<<Poligon_1[3][6]<<" | "<<Poligon_1[3][7]<<" | "<<Poligon_1[3][8]<<" | "<<Poligon_1[3][9]<<" |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<" 5 | "<<Poligon_1[4][0]<<" | "<<Poligon_1[4][1]<<" | "<<Poligon_1[4][2]<<" | "<<Poligon_1[4][3]<<" | "<<Poligon_1[4][4]<<" | "<<Poligon_1[4][5]<<" | "<<Poligon_1[4][6]<<" | "<<Poligon_1[4][7]<<" | "<<Poligon_1[4][8]<<" | "<<Poligon_1[4][9]<<" |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<" 6 | "<<Poligon_1[5][0]<<" | "<<Poligon_1[5][1]<<" | "<<Poligon_1[5][2]<<" | "<<Poligon_1[5][3]<<" | "<<Poligon_1[5][4]<<" | "<<Poligon_1[5][5]<<" | "<<Poligon_1[5][6]<<" | "<<Poligon_1[5][7]<<" | "<<Poligon_1[5][8]<<" | "<<Poligon_1[5][9]<<" |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<" 7 | "<<Poligon_1[6][0]<<" | "<<Poligon_1[6][1]<<" | "<<Poligon_1[6][2]<<" | "<<Poligon_1[6][3]<<" | "<<Poligon_1[6][4]<<" | "<<Poligon_1[6][5]<<" | "<<Poligon_1[6][6]<<" | "<<Poligon_1[6][7]<<" | "<<Poligon_1[6][8]<<" | "<<Poligon_1[6][9]<<" |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<" 8 | "<<Poligon_1[7][0]<<" | "<<Poligon_1[7][1]<<" | "<<Poligon_1[7][2]<<" | "<<Poligon_1[7][3]<<" | "<<Poligon_1[7][4]<<" | "<<Poligon_1[7][5]<<" | "<<Poligon_1[7][6]<<" | "<<Poligon_1[7][7]<<" | "<<Poligon_1[7][8]<<" | "<<Poligon_1[7][9]<<" |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<" 9 | "<<Poligon_1[8][0]<<" | "<<Poligon_1[8][1]<<" | "<<Poligon_1[8][2]<<" | "<<Poligon_1[8][3]<<" | "<<Poligon_1[8][4]<<" | "<<Poligon_1[8][5]<<" | "<<Poligon_1[8][6]<<" | "<<Poligon_1[8][7]<<" | "<<Poligon_1[8][8]<<" | "<<Poligon_1[8][9]<<" |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    cout<<"   |   |   |   |   |   |   |   |   |   |   |\n";
    cout<<" 10| "<<Poligon_1[9][0]<<" | "<<Poligon_1[9][1]<<" | "<<Poligon_1[9][2]<<" | "<<Poligon_1[9][3]<<" | "<<Poligon_1[9][4]<<" | "<<Poligon_1[9][5]<<" | "<<Poligon_1[9][6]<<" | "<<Poligon_1[9][7]<<" | "<<Poligon_1[9][8]<<" | "<<Poligon_1[9][9]<<" |\n";
    cout<<"___|___|___|___|___|___|___|___|___|___|___|\n";
    for (int i=0; i<x; i++)
        delete [] Poligon_1[i];
            delete []Poligon_1;
    return Poligon_1;
}
в main просто вставляю конструкцию:
C++
1
2
3
cout<<"Введите положение ...\n";
    cin>>c>>d;
    Arena(a,b,c,d);
и вся чудесная конструкция работает. думаю теперь понятно зачем хочу обращаться к Poligon_1... иначе реализовать взаимодействие с кораблями пользователя не получиться...
или получиться?
0
Миниатюры
Трудности при написании Морского боя  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 14:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Трудности при написании Морского боя (C++):

Написание ИИ для Морского Боя - C++
Добрый день,помогите с написание АИ для морского боя , все сделал кроме АИ)Мы знаем размер поля количество кораблей и длина их так как это...

Построение квадратного поля для морского боя - C++
Здравствуйте. Такой вопрос - Как сделать так чтобы поле для морского боя было не прямоугольное когда мы создаем массив 10*10 а квадратным? ...

Создать два поля для морского боя - C++
Для практики создайте программу рисующую на экране два поля для морского боя. Первое - игрока, второе - противника. Второе поле должно...

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

Трудности в написании программы СИ++ - C++
Привет всем обитателям форума, уже несколько дней мучаюсь с написанием программы,программа работает, но всё никак не могу сделать так,...

Ошибка при написании аллокатора - C++
Всем привет! При написании собственного аллокатора столкнулся с ошибкой, указанной на скрин-шоте... Выкладываю файл с кодом... ...

5
ValeryS
Модератор
6794 / 5202 / 499
Регистрация: 14.02.2011
Сообщений: 17,452
09.12.2013, 17:50 #2
Цитата Сообщение от Kapitoxapux Посмотреть сообщение
for (int i=0; i<x; i++)
* * * * delete [] Poligon_1[i];
* * * * * * delete []Poligon_1;
* * return Poligon_1;
а что ты пытаешься вернуть?
ты память то уже удалил
1
Aloir
219 / 219 / 13
Регистрация: 17.12.2010
Сообщений: 704
09.12.2013, 18:25 #3
и вообще если пишется без классов, то лучше вынести поле в глобальную переменную.

а вообще сказать преподу, что ты вундеркинд, и сам выучил классы и пишешь с помощью классов =)
1
Kapitoxapux
1 / 1 / 0
Регистрация: 08.12.2013
Сообщений: 14
09.12.2013, 20:06  [ТС] #4
Цитата Сообщение от Aloir Посмотреть сообщение
и вообще если пишется без классов, то лучше вынести поле в глобальную переменную.
мне на курсах так и посоветовали... сделать массив не динамичным а статичным и вынести его в глобалку. буду пробовать. я признаться думал что статичным массивом подобную задачу нельзя реализовывать..

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
а что ты пытаешься вернуть?
ты память то уже удалил
так а чё делать? ставить в конце проги? попробую
0
ValeryS
Модератор
6794 / 5202 / 499
Регистрация: 14.02.2011
Сообщений: 17,452
09.12.2013, 20:11 #5
Цитата Сообщение от Kapitoxapux Посмотреть сообщение
так а чё делать? ставить в конце проги? попробую
не знаю
я бы выделил память в Main и там же удалял или статический массив а передавал бы в функцию адрес массива
как то так
C++
1
Arena(int a, int b, int c, int d,char ** map)
0
Kapitoxapux
1 / 1 / 0
Регистрация: 08.12.2013
Сообщений: 14
09.12.2013, 20:20  [ТС] #6
Цитата Сообщение от ValeryS Посмотреть сообщение
не знаю
я бы выделил память в Main и там же удалял или статический массив а передавал бы в функцию адрес массива
как то так
C++
1
Arena(int a, int b, int c, int d,char ** map)
я пробовал дин. писать в main, но тогда в функции не было видно моего Poligon_1 который в том ужасном поле графическом стоит... разве что сделать функцию прототипом внизу. тогда будет видно??? в любом случае это уже не важно пожалуй, потому как буду статичный пробовать юзать. а вот насчёт передачи адреса массива в функцию... это мне дня на два с моими темпами!!
спс за помощь!
0
09.12.2013, 20:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2013, 20:20
Привет! Вот еще темы с ответами:

Трудности при создании класса - C++
Делаю приложения на Windows Forms. Надо сделать иерархию классов. В абстрактом классе описал нужные поля, но при попыте скомпилировать...

Написать программу, при написании используйте функции - C++
Помогите, пожалуйста, реализовать сортировку в этом задании. Программу написал, но как отсортировать не совсем понимаю. #include...

Code::Blocks 12.11 - ошибки при написании Hello, World - C++
Ребят вчера поставила Code::Blocks, всё норм создаю проект win 32, добавляю новый файл с++, и при компиляции простого кода...примитивного ...

Передача параметров указателями при написании функций - C++
Как написать вот такую программу : Вычислить и запомнить суммы положительных элементов каждой строки матрицы a(10,20), b(15,10)....


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

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

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