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

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

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

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

08.12.2013, 14:56. Просмотров 423. Ответов 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++
Для практики создайте программу рисующую на экране два поля для морского боя. Первое - игрока, второе - противника. Второе поле должно...

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

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

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

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

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

IDE Eclipse - подсказки при написании кода - C++
Не могу понять, есть ли в Eclipse такая функция, как подсказки при вводе текста, которые заключаются в выведении всех вариантов из уже...

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

в каком направлении действовать при написании программы - C++
дано задание: &quot;Проверить, является ли выражение, состоящее только из прописных букв заданной строки, палиндромом. Если да, то напечатать...

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

глюк при написании перегруженного ostream для класса - C++
Доброе время суток всем! Возникла проблема есть некий класс client смотреть ниже класс авто и класс персона Все отлично работало до того...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
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
217 / 217 / 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
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
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     Трудности при написании Морского боя
Ответ Создать тему
Опции темы

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