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

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

Восстановить пароль Регистрация
 
Kapitoxapux
1 / 1 / 0
Регистрация: 08.12.2013
Сообщений: 14
08.12.2013, 14:56     Трудности при написании Морского боя #1
Пишу курсовик на тему морской бой. в среде 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... иначе реализовать взаимодействие с кораблями пользователя не получиться...
или получиться?
Миниатюры
Трудности при написании Морского боя  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
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
Сообщений: 688
09.12.2013, 18:25     Трудности при написании Морского боя #3
и вообще если пишется без классов, то лучше вынести поле в глобальную переменную.

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

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
а что ты пытаешься вернуть?
ты память то уже удалил
так а чё делать? ставить в конце проги? попробую
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
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     Трудности при написании Морского боя
Ответ Создать тему
Опции темы

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