Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/67: Рейтинг темы: голосов - 67, средняя оценка - 4.54
3 / 3 / 0
Регистрация: 10.02.2009
Сообщений: 38

Игра морской бой - как расставлять корабли

03.05.2009, 20:18. Показов 13926. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил написать игру чтоб опыта набраться. Вот возникла проблема: в верху формы расположены 4 кнопки(4вида кораблей) и ниже расположено поле. каким способом можно размещать на таблице корабли?в смысле какой код,чтобы нажав на кнопку можно было переместить стрелочкой корабль на поле?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.05.2009, 20:18
Ответы с готовыми решениями:

Игра морской бой: никак не придумаю как лучше реализовать корабли в игре
Пишу игру "Морской бой" на c# и никак не решу как лучше реализовать в программе корабли.

Морской Бой - как организовать поле и расстановку кораблей?
Добрый времени суток, необходимо создать игру "Морской Бой", извините за то, что вопрос возможно уже был задан. Вопрос такой как создать...

Морской бой - Как сделать единый обработчик нажатий на кнопки
Сам что-то не придумал...

56
3 / 3 / 0
Регистрация: 10.02.2009
Сообщений: 38
18.06.2009, 19:23  [ТС]
Студворк — интернет-сервис помощи студентам
в с++ не разбираюсь, в C# бы подсказал
0
3 / 3 / 0
Регистрация: 10.02.2009
Сообщений: 38
18.06.2009, 19:47  [ТС]
Вот тебе моя функция)) попробуй только разобраться.
ЗЫ я там использовал глобальные функции, их в текст не вложил
Вложения
Тип файла: rar EnemyShot.rar (2.1 Кб, 74 просмотров)
1
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
19.06.2009, 16:28
И все-таки может кто помочь заставить свою функцию рисовать прямоугольник? или через такие функции можно только числовые значения передавать?
Visual C++

подробнее в предыдущем моем посте

alexeev, если время будет, можешь на C# написать функцию, которая принимает 2 координаты, и рисует по ним rectangle
именно свою функцию а не pictureBox2_Paint. Возможно такое вообще?)
0
3 / 3 / 0
Регистрация: 10.02.2009
Сообщений: 38
19.06.2009, 16:51  [ТС]
Цитата Сообщение от EatingPeopleIsFun Посмотреть сообщение
alexeev, если время будет, можешь на C# написать функцию, которая принимает 2 координаты, и рисует по ним rectangle
именно свою функцию а не pictureBox2_Paint. Возможно такое вообще?)
у меня несколько функций, рисующих корабли:
при расстановке дружественных кораблей,
при авторасстановке вражеских кораблей(тут они рисуются только в случае проигрыша машины, но в массив Rectangle[] заносятся)
при стрельбе машиной.
какую именно функцию ты не можешь написать?
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
20.06.2009, 17:51
создал кнопку "Новая игра" при нажатии на нее:
-создается матрица 10х10,
-вызывается функция, расставляет в матрице корабли, получается что-то вроде
2 -1 1 -1 0 0 0 0 0 0
2 -1 -1 -1 0 -1 -1 -1 -1 0
-1 -1 -1 -1 -1 -1 2 2 -1 0
1 -1 2 2 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 0 -1 3 -1
0 -1 3 3 3 -1 -1 -1 3 -1
0 -1 -1 -1 -1 -1 1 -1 3 -1
0 -1 -1 -1 0 -1 -1 -1 -1 -1
0 -1 1 -1 -1 -1 -1 -1 -1 -1
0 -1 -1 -1 -1 4 4 4 4 -1

дальше хочу сделать функцию которая бы мне нарисовала rectangl'ы на pictureBox'е, соответств. этой матрице . Но не могу на ней оформить правильно DrawRectangle();
вот вроде всё)

Добавлено через 13 часов 44 минуты 40 секунд
alexeev, напиши пжл функцию, которая будет просто тупо рисовать 1 прямоугольник размером 20 на 20, в координатах 0,0 черным цветом.
чето я вообще запутался)

Добавлено через 4 часа 11 минут 0 секунд
и не при загрузке формы,а допустим при нажатии на кнопку "button1".
0
3 / 3 / 0
Регистрация: 10.02.2009
Сообщений: 38
20.06.2009, 22:07  [ТС]
Цитата Сообщение от EatingPeopleIsFun Посмотреть сообщение
создал кнопку "Новая игра" при нажатии на нее:
-создается матрица 10х10,
-вызывается функция, расставляет в матрице корабли, получается что-то вроде
2 -1 1 -1 0 0 0 0 0 0
2 -1 -1 -1 0 -1 -1 -1 -1 0
-1 -1 -1 -1 -1 -1 2 2 -1 0
1 -1 2 2 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 0 -1 3 -1
0 -1 3 3 3 -1 -1 -1 3 -1
0 -1 -1 -1 -1 -1 1 -1 3 -1
0 -1 -1 -1 0 -1 -1 -1 -1 -1
0 -1 1 -1 -1 -1 -1 -1 -1 -1
0 -1 -1 -1 -1 4 4 4 4 -1
Тут все верно - у меня тоже такая функция, рендумом расставляющая корабли(если ты конечно проверяешь, не соприкасаются ли корабли).

Цитата Сообщение от EatingPeopleIsFun Посмотреть сообщение
alexeev, напиши пжл функцию, которая будет просто тупо рисовать 1 прямоугольник размером 20 на 20, в координатах 0,0 черным цветом.
чето я вообще запутался)
Вот ты заносишь к примеру свой однопалубный корабль в Rectangle[].
C#
1
2
3
ExtForm[count] = new Rectangle(x * 20, y * 20, 20, 20);
//x,y - Random, вот и заносишь в массив такой прямоугольник 20х20.
count++;//инкремент счетчика
массив готов. Можешь вызвать после этого PictureBox1.Invalidate();
соответственно ты должен в обработчике событий PictureBox1_Handler вызвать
C#
1
grfx.FillRectangle(Brushes.Black, ExtForm);
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
20.06.2009, 23:13
у меня это получится примерно так?

C++
1
2
3
4
void Paint_Ship(){   
  int x=1;int y=1;
      System::Drawing::Rectangle^ ExtForm = gcnew Rectangle(x*20,y*20,20,20);
      pictureBox1->Invalidate(); }
а в событии pictureBox1_Paint
указать
C++
1
 e->Graphics->FillRectangle(Brushes::White,ExtForm);
так? если да, то пишет что ExtForm необъявленная переменная.
или я чего то не понял? pictureBox1_Handler что -то другое?

Добавлено через 29 минут 59 секунд
кроме тебя тут похоже никого не осталось больше)
0
3 / 3 / 0
Регистрация: 10.02.2009
Сообщений: 38
21.06.2009, 15:43  [ТС]
Сделай ExtForm глобальной
0
3 / 3 / 0
Регистрация: 10.02.2009
Сообщений: 38
23.06.2009, 16:13  [ТС]
Подскажите, как использовать задержку? к примеру функция delay(int seconds), которую можно было бы вставлять в любую функцию
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
24.06.2009, 02:42
System.Threading.Thread.Sleep(Int32)
1
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
24.06.2009, 15:55
но она немножко странно работает
задерживает не в том месте где поставил
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
24.06.2009, 16:09
иногда)

Действительно на C# писать в десятки раз быстрее чем на C++, по крайней мере в данном случае, вот приложил, то что получилось.

-Компьютер без интеллекта, стреляет рандомно).
-Корабли расставляются рандомно (так по заданию)

-Столкнулся с проблемой, думаю над тем как обрисовывать точками подбитые корабли противника, однопалубники, понятно, а как остальные? примерно понял, но получается очень уж объемно, подскажите алгоритм?)
Вложения
Тип файла: rar Морской_бой.rar (67.2 Кб, 121 просмотров)
0
3 / 3 / 0
Регистрация: 10.02.2009
Сообщений: 38
24.06.2009, 22:59  [ТС]
Цитата Сообщение от EatingPeopleIsFun Посмотреть сообщение
-Столкнулся с проблемой, думаю над тем как обрисовывать точками подбитые корабли противника, однопалубники, понятно, а как остальные? примерно понял, но получается очень уж объемно, подскажите алгоритм?)
у тебя должна быть проверка, убил/подбил корабль. далее если убил, то в цикле вокруг него обрисовываешь поля
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
25.06.2009, 03:10
немножко не так сделал, сделал проверку матрицы на наличие "5" - подбитых кораблей, если "5". обрисовать вокруг. и там корректировочки небольшие) всё работает) попозже сделаю главное меню и т.п., выложу готовое.
0
3 / 3 / 0
Регистрация: 10.02.2009
Сообщений: 38
28.06.2009, 21:35  [ТС]
вот какая проблем: попадает комп в мой корабль, рисую на поле попадание(к примеру), далее PictureBox1.Invalidate(), далее Thread.Stop(1000). И вот что получается - сначала выполняется задержка, а уж потом обновляется форма! как выйти из положения?
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
29.06.2009, 02:27
Вставте между ними Application.DoEvents()
1
3 / 3 / 0
Регистрация: 10.02.2009
Сообщений: 38
02.07.2009, 09:39  [ТС]
Выложил новую версию игры в "бета тестировании". Жду ваших отзывов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.07.2009, 09:39

Морской бой
Вот решил написать морской бой. Как всё это сделать примерно понимаю, но вот хочу посоветоваться с вами по некоторым вопросам. 1) Как...

Морской Бой
Вопрос в том как сделать меню какоенибудь чтоб выбор в игре был пример 1-палубные и двух палобные там две три чтоб ставить можно было +...

Морской бой
Здраствуйте. Простите пожалуйста, немогли бы вы мне помочь в поиске компонента C# для реализации поля в морском бое. Никак не могу найти...

Морской бой
Ребят, а как написать код, чтоб корабли в притык нельзя было ставить?! Зарание спасибо! вот мой код(недоделаный): using System; using...

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


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

Или воспользуйтесь поиском по форуму:
57
Ответ Создать тему
Новые блоги и статьи
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru