Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/64: Рейтинг темы: голосов - 64, средняя оценка - 4.92
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242

Реализация игры морской бой

28.05.2014, 01:54. Показов 14075. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите плз алгоритм написания морского боя и основные аспекты ...
мои мысли :
поле
Кликните здесь для просмотра всего текста

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

корабли
Кликните здесь для просмотра всего текста

Как сделать корабли ? что из себя представляют корабли различного размера ? если четырехпалубник, это 4 картинки однопалубных или одна большая картинка ? если одна большая картинка, как на ней фиксировать выстрелы ? если эту большую картинку распихать по гриду (можно ли вообще так, поместить 1 картинку в 4 ячейки ?), то какой событие будет срабатывать, клик на картинку или на ячейку грида ?

немного важного для меня оффтопа
Кликните здесь для просмотра всего текста

После того как построим поле с кораблями ( не важно каким способом ), стоит ли создать массив, в котором будут хранится -1, 0 и 1(не доступен, свободен, занят) ? Когда создаешь вариант игры с игроком и компьютером, как отследить какой вариант принят и как организовать код, чтобы не дублировать процедуры ? Если для этого использовать флаг, то каким его лучше сделать ? Если флаг разместить в классе и тоскать его по процедурам, не нарушает ли это принципов ООП ? Как из кода не получить костыль ?


Не по теме:

Как спойлерам дать заголовок ?

0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2014, 01:54
Ответы с готовыми решениями:

Простейшая реализация игры "Морской бой"
Пожалуйста, если у кого-нибудь есть, нужна игра Морской бой на C# в Windows Forms

Поле для игры морской бой
Нужно будет написать игру морской бой, хотел бы реализовать такое же поле как на скрине. Как это сделать?) Или может еще какие...

Для игры компьютера в морской бой реализовать стратегию в виде дерева
ребят помогите. Тема курсача "Морской бой" само приложение я написал но потом узнал что "Для игры компьютера реализовать стратегию в...

52
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
02.06.2014, 13:23
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
что это такое ?
Первая строчка добавляет по клетке с каждой стороны.
Вторая строчка отсекает ту часть прямоугольника, которая выходит за пределы поля.

Цитата Сообщение от Fene4ka_ Посмотреть сообщение
для того, чтобы это работало со взрывами, туда нада отправить координаты, а также размер отстреляного корабля, из-за этого может быть неоднозначно ...
Все данные уже передаются в метод: координаты и размер.
Надо только отослать "правильные" координаты, то есть первой палубы, как при размещении.
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
02.06.2014, 13:33  [ТС]
kolorotur, как узнать, что его пора топить ? как узнать какого он размера ?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
02.06.2014, 13:43
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
как узнать, что его пора топить ?
Все клетки, ему принадлежащие, помечены как подбитые.

Цитата Сообщение от Fene4ka_ Посмотреть сообщение
как узнать какого он размера?
Если выстрел попал, то начиная от текущей клетки делайте обход на 4 стороны и считайте клетки, принадлежащие кораблю.
Можно хранить отдельную структуру с информацией по кораблям, но это бе.

Подсчет количества палуб и сколько из них подбито можно совместить в одном методе.
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
02.06.2014, 13:53  [ТС]
kolorotur, а как быть, когда убиваешь корабль, попав не в край, а в середину ? как считать ?
0
C#,XNA Game Studio
 Аватар для WhiteMaster
36 / 36 / 8
Регистрация: 26.04.2014
Сообщений: 195
02.06.2014, 13:53
мне кажется что лучше усложнять структуру чем удлинять алгоритмы,в итоге мы несколько раз пересчитываем одни и те же значения, было бы неплохо взрывы в отдельном потоке анимировать ато на время взрыва наверняка подвисает
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
02.06.2014, 13:58  [ТС]
WhiteMaster, я еще не умею работать ни с потоками, ни с анимациями, я хотел, чтобы просто закрашивало соседние клетки во время взрыва
0
C#,XNA Game Studio
 Аватар для WhiteMaster
36 / 36 / 8
Регистрация: 26.04.2014
Сообщений: 195
02.06.2014, 14:02
Fene4ka_, тогда самое простое как сказал kolorotur, нужно делать обход от клеток вокруг, и , зная их Rectangle(Location,Size), cделать Graphics.FillRectangle(new SolidBrush(Color.ВашЦвет),ВашРектангл);
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
02.06.2014, 14:03
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
а как быть, когда убиваешь корабль, попав не в край, а в середину ? как считать ?
Цитата Сообщение от kolorotur Посмотреть сообщение
начиная от текущей клетки делайте обход на 4 стороны и считайте клетки, принадлежащие кораблю.
Цитата Сообщение от WhiteMaster Посмотреть сообщение
мне кажется что лучше усложнять структуру чем удлинять алгоритмы
В какой-то момент — да.
В данный момент проще работать с одним массивом.
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
02.06.2014, 19:03  [ТС]
kolorotur, я просто не понимаю, как сделать обход, когда от текущей клетки есть 1 вниз и 2 вверх от текущей клетки ...
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.06.2014, 12:19
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
я просто не понимаю, как сделать обход, когда от текущей клетки есть 1 вниз и 2 вверх от текущей клетки ...
Я же выше написал: от клетки с попаданием считайте соседние клетки со всех сторон.
Четыре цикла: обход влево от текущей точки до тех пор, пока не уткнетесь в границу поля или в клетку, не являющуюся кораблем. Потом то же самое вправо, вниз и вверх. На каждой успешной проверке увеличивайте счет палуб и если клетка помечена как подбитая, то в добавок увеличивайте количество попаданий.
В общем, делайте в точности то же самое, что делал бы компьютерный противник, сделав попадание и имея неограниченное количество выстрелов.
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
03.06.2014, 15:50  [ТС]
обновленная версия со взрывами, спс за помощь
Вложения
Тип файла: rar МорскойБой.rar (83.1 Кб, 92 просмотров)
0
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 1
24.11.2015, 00:12
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
обновленная версия со взрывами, спс за помощь
что значит в коде //убираем временные кораблики с поля? что за временные корабли?

Добавлено через 1 минуту
Fene4ka_, что значит в коде //убираем временные кораблики с поля? что за временные корабли?
0
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.11.2015, 03:11  [ТС]
Цитата Сообщение от DimonDe Посмотреть сообщение
что значит в коде //убираем временные кораблики с поля? что за временные корабли?
Добавлено через 1 минуту
Fene4ka_, что значит в коде //убираем временные кораблики с поля? что за временные корабли?
да я не помню уже ) смотреть надо, завтра гляну
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.11.2015, 03:11

Аналог игры "Морской бой"
Программа состоит из поля 5х5 клеток. При нажатии пользователя на каждую клетку программа фиксирует попадание или промах пользователя по...

Разработка класса "Корабль" для игры "Морской бой"
Всем доброго времени суток! Работаю над курсачом. Моя тема: Реализация игры Морской бой. Мне необходимо создать класс-корабль. Это будет...

Морской бой
Вопрос решен, можно удалить

Морской бой
Добрый день, форумчане! Такая проблема, на учебной практике резко с консольного c# перескочили на формы. И встала задача написать...

Морской бой
Добрый вечер, можете покидать ссылки на проекты игры Морской Бой любой сложности. Спасибо


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

Или воспользуйтесь поиском по форуму:
53
Ответ Создать тему
Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru