Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2015, 19:26   #1
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию Морской Бой С++

Здравствуйте,подскажите пожалуйста,есть поле 10х10 на нем корабли,как обычно,Как привязать корабль к координатам?в смысле вот есть трех палубный и в него попадают что бы показало что он ранен, трижды что он был уничтожен.
и еще подскажите пожалуйста я хочу использовать графику,и хочу сделать все поле в клеточку,как присвоить каждой клеточке свое расположение(координаты массива), или стоит рисовать их по отдельности?
как взаимодействовать с полем противника при обстреле,в контейнерном классе хранить?
Буду благодарен за любые идеи,подсказки,советы.
Sterben вне форума Ответить с цитированием
Старый 27.12.2015, 20:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я увы не знаю правильный ответ на твой вопрос, но я бы не делал анализатор уничтоженных кораблей. ИМХО проще описать матрицу, в которых некоторые ячейки будут просто содержать палубу. Попадание во все палубы корабля просто бы отмечал на карте без пояснения что это полное потопление.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2015, 20:10   #3
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию

Спасибо,думаю так и сделаю.а может вы знаете,что бы реализовать выстрел по полям мне надо поле Компьютера и поле пользователя запихнуть в контейнерный класс и там уже выполнять действия ?

Последний раз редактировалось Sterben; 27.12.2015 в 20:13.
Sterben вне форума Ответить с цитированием
Старый 27.12.2015, 21:29   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да я бы с классами не заморачивался вообще.
Матрица. Пара функций (расстановка кораблей и функция выстрела)
Ну и функция отображения на экране конечно.
Самое сложное: функция расстановки кораблей. Тут придется больше всего кода написать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.01.2016, 13:16   #5
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
По умолчанию

Stilet, AI расстановки кораблей реализовать просто, если начинать расставлять корабли по уменьшающей (4-х палубные, 3-х, ...). После добавления каждого корабля на карту, заштриховывать поля вокруг него, и переходить к расстановке следующего, с условием, что есть место для его добавления, иначе, нужно откатить последний добавленный корабль, пока не появится место для добавления корабля, и переходить к расстановке, пока все корабли не будут расставлены...
Alexan-Dwer вне форума Ответить с цитированием
Старый 12.01.2016, 14:23   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Как вы думаете, чем автору темы легче всего отображать корабли на экране?
8Observer8 вне форума Ответить с цитированием
Старый 12.01.2016, 15:02   #7
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
По умолчанию

8Observer8, не совсем понятен вопрос.

Если имеется ввиду, как отрисовывать сами корабли, то я бы выводил коричневые квадраты, вместо синих, для своих кораблей, красные для раненных и черные для убитых; синий квадрат - пустая клетка, синий с черный с точкой - выстрел мимо...

Или речь не об этом?
Alexan-Dwer вне форума Ответить с цитированием
Старый 13.01.2016, 00:20   #8
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Цитата:
Сообщение от Alexan-Dwer Посмотреть сообщение
8Observer8, не совсем понятен вопрос.

Если имеется ввиду, как отрисовывать сами корабли, то я бы выводил коричневые квадраты, вместо синих, для своих кораблей, красные для раненных и черные для убитых; синий квадрат - пустая клетка, синий с черный с точкой - выстрел мимо...

Или речь не об этом?
Нет, я про то, какими средствами рисовать квадраты (или картинки вставлять): GDI WinAPI, DirectX и т.д. Чем бы вы рисовали?

Мне кажется, лучше не монотонные квадраты выводить, а нарисовать заранее в Paint'е.

Последний раз редактировалось 8Observer8; 13.01.2016 в 00:22.
8Observer8 вне форума Ответить с цитированием
Старый 13.01.2016, 06:16   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Я не понимаю, зачем путать игровую матрицу с её отрисовкой? Игровая матрица - 10х10 (типа int) заполнена нулями. Заполняется кораблями с цифрами:

1 - однопалубный;
2 - двухпалубный;
3 - трёхпалубный;
4 - четырёхпалубный

10 - подбита одна из палуб
20 - буль-буль.

А как это всё отрисовать? Да хоть как. Хоть просто на Bitmap, а хоть и в 3D.

Можно усложнить игру, например у каждого корабля есть зона поражения.

Четырёхпалубный, стреляет на всё игровое поле.
Трёхпалубный, в радиусе 8 клеток.
Двухпалубный, в радиусе 6 клеток.
Однопалубный, в радиусе 3 клеток.

Выбираем с какого корабля стреляем и куда.
Победу можно определять так. Если у противника ни один живой корабль не может своими выстрелами достать живой корабль игрока, то победа - игрока.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 13.01.2016 в 06:29.
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.01.2016, 10:04   #10
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Цитата:
Я не понимаю, зачем путать игровую матрицу с её отрисовкой?
Цитата:
А как это всё отрисовать? Да хоть как. Хоть просто на Bitmap, а хоть и в 3D.
Я не предлагал путать матрицу с отрисовкой. Просто спросил, что автору темы будет проще освоить, чтобы вывести квадратик на экран.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c# морской бой Илья2014 Помощь студентам 2 20.05.2014 11:02
Морской бой на С# M@@Shk@ Помощь студентам 1 05.06.2012 20:35
Морской бой на С++ Vacilica Помощь студентам 3 22.01.2011 23:15
морской бой zxcc Помощь студентам 1 05.05.2010 16:51
Морской Бой Fanga C++ Builder 3 30.03.2010 17:03