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

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

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

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

08.12.2013, 14:56. Просмотров 398. Ответов 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... иначе реализовать взаимодействие с кораблями пользователя не получиться...
или получиться?
Миниатюры
Трудности при написании Морского боя  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 14:56     Трудности при написании Морского боя
Посмотрите здесь:

в каком направлении действовать при написании программы C++
Построение квадратного поля для морского боя C++
глюк при написании перегруженного ostream для класса C++
Трудности при создании класса C++
Code::Blocks 12.11 - ошибки при написании Hello, World C++
C++ Создать два поля для морского боя
C++ Ошибка при написании аллокатора
Как разместить два игровых поля морского боя в ряд по горизонтали? C++
Написание ИИ для Морского Боя C++
IDE Eclipse - подсказки при написании кода C++
Ошибка при написании функции с неизвестным числом параметров C++
C++ Написать программу, при написании используйте функции

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,298
09.12.2013, 17:50     Трудности при написании Морского боя #2
Цитата Сообщение от Kapitoxapux Посмотреть сообщение
for (int i=0; i<x; i++)
* * * * delete [] Poligon_1[i];
* * * * * * delete []Poligon_1;
* * return Poligon_1;
а что ты пытаешься вернуть?
ты память то уже удалил
Aloir
 Аватар для Aloir
216 / 216 / 13
Регистрация: 17.12.2010
Сообщений: 689
09.12.2013, 18:25     Трудности при написании Морского боя #3
и вообще если пишется без классов, то лучше вынести поле в глобальную переменную.

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

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
а что ты пытаешься вернуть?
ты память то уже удалил
так а чё делать? ставить в конце проги? попробую
ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,298
09.12.2013, 20:11     Трудности при написании Морского боя #5
Цитата Сообщение от Kapitoxapux Посмотреть сообщение
так а чё делать? ставить в конце проги? попробую
не знаю
я бы выделил память в Main и там же удалял или статический массив а передавал бы в функцию адрес массива
как то так
C++
1
Arena(int a, int b, int c, int d,char ** map)
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 который в том ужасном поле графическом стоит... разве что сделать функцию прототипом внизу. тогда будет видно??? в любом случае это уже не важно пожалуй, потому как буду статичный пробовать юзать. а вот насчёт передачи адреса массива в функцию... это мне дня на два с моими темпами!!
спс за помощь!
Yandex
Объявления
09.12.2013, 20:20     Трудности при написании Морского боя
Ответ Создать тему
Опции темы

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