- Игра морской бой — как расставлять корабли
- Морской бой с визуальными компонентами
- Saved searches
- Use saved searches to filter your results more quickly
- malandrii/sea-battle-game-winforms
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
Игра морской бой — как расставлять корабли
Решил написать игру чтоб опыта набраться. Вот возникла проблема: в верху формы расположены 4 кнопки(4вида кораблей) и ниже расположено поле. каким способом можно размещать на таблице корабли?в смысле какой код,чтобы нажав на кнопку можно было переместить стрелочкой корабль на поле?
Игра морской бой: никак не придумаю как лучше реализовать корабли в игре
Пишу игру "Морской бой" на c# и никак не решу как лучше реализовать в программе корабли.
Морской Бой — как организовать поле и расстановку кораблей?
Добрый времени суток, необходимо создать игру "Морской Бой", извините за то, что вопрос возможно.
Морской бой — Как сделать единый обработчик нажатий на кнопки
Сам что-то не придумал.
Морской бой
Вот решил написать морской бой. Как всё это сделать примерно понимаю, но вот хочу посоветоваться с.
Хочу на форме нарисовать таблицу (DrawLine или что лучше подскажите?), сделать на таблице поля привязки(как их сделать тоже не знаю). Просто знаний у меня маловато,хочу набраться опыта.
Для начала можно не заморачиваться и делать минимально просто
В момент расстановки нужно просто нажимать мышкой на клетки поля. Если нажал левой мышкой, то считаем, что корабль ставится вертикально, а точка, куда нажали — это верхняя часть корабля. Если нажимаем правой мышкой — то горизонтально. Корабли ставятся в принудительном порядке — сначала 4-хпалубные, потом 3-х и т.п. При сбоку этом надо отображать картинку, какой тип корабля сейчас ставится.
Этот вариант для человека неудобен, но он тем не менее прост в реализации. А потом спокойно себе пиши логику игры. КОгда всё будет готово — можешь снова вернуться к технике расстановки кораблей. Когда ты миллион раз будешь расставлять их неудобным способом, у тебя у самогО в голове появится куча идей, как это делать более удобно
такой вопрос: как в этой игре создать проверку на правильное размещение кораблей ( они не должны касаться даже углами)?
Можно ли написать простую функцию, вычитающую расстояние между Rectanglами?
М. не надо ничего делать через rectangl’ы
У тебя должно быть две вещи (хз каким словом это правильно назвать):
1. Внутреннее представление игры (допустим, это массив 10 на 10, в элемент которого записан 0, если поле пустое, 1, если эту клетку занимает однопалубный корабль, 2 — если двухпалубный и т.п.). Представление может быть и другиим — ты волен выбирать так, как тебе удобнее делать
2. Пользовательское представление игры. Это то, что видит человек на экране. Всё пользовательское представление рисуется с внутреннего.
Все свои действия по проверке на пересечение, подсчёту количества живых/потомлпнных кораблей и т.п. ты делаешь на внутреннем представлении, т.к. его ты выбираешь так, чтобы на нём было максимально удобно делать эти действия из программы.
Теперь, отвечу на твой вопрос. К примеру, ты решил выбрать по внутреннее представление, которое я тебе описал. Допустим уже поставлен один корабль. Значит в твоём массиве уже заполнены элементы, отвечающие за те клетки, на которых находится твой корабль. Теперь человек ставит другой корабль. Перед тем, как «установить» корабль, ты должен во внутреннем представлении пройтись по всем клеткам, на которых будет «стоять» твой новый корабль и убедиться, что клетки не заняты (а так же не заняты соседние клетки). Если проверка обломалась — выдаёшь сообщение об ошибке и просишь поставить корабль по новой. Если проверка прошла — устанавливаешь корабль на доску — отмечаешь поля в своём массиве
Источник
Морской бой с визуальными компонентами
Доброго всем времени суток, уважаемые гуру программирования.
Я начал переделать игру Морской бой с визуальными компонентами из консольного приложения, т.е. сам алгоритм уже есть.
Проблема возникает на этапе создания поля. На данном этапе я создал 2 поле, каждое из которых состоит из 100 объектов PictureBox, т.е. в сумме 200 объектов, что, разумеется, ведет к огромному расширению кода. Само по себе это не было бы большой проблемой, но мне сложно представить, как можно мой алгоритм «привинтить» к данному полю относительно экономно.
Буду очень благодарен всем, кто попытается помочь!
С уважением, Letsifer.
Морской бой
Здравствуйте господа. Мне нужно сделать игру морской бой. Игровое поле- 10×10 Корабли на игровом.
Морской бой
Добрый день, форумчане! Такая проблема, на учебной практике резко с консольного c# перескочили на.
Морской бой
Добрый вечер, можете покидать ссылки на проекты игры Морской Бой любой сложности. Спасибо
Морской бой
Вопрос решен, можно удалить
А что вас смущает? Ну двести так двести. Для отображения используйте tableLayoutPanel1 — задайте нужное количество строк и столбцов, добавьте в него ваши контролы. Для удобства дальнейшего доступа к контролам сохраните их в отдельном массиве:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
private PictureBox[,] pictureBoxes = new PictureBox[10, 10]; public Form1() { InitializeComponent(); tableLayoutPanel1.ColumnCount = 10; tableLayoutPanel1.RowCount = 10; for (int y = 0; y 10; y++) { for (int x = 0; x 10; x++) { var pictureBox = new PictureBox(); pictureBoxes[y, x] = pictureBox; tableLayoutPanel1.Controls.Add(pictureBox); } } } // Где-то далее в программе pictureBoxes[3, 5].Image = Properties.Resources.image1;
оу-оу-оу, 200 PictureBox’ов. а не слишком ли много? Может проще заранее сделать графические тайлы всех кораблей, а потом просто один раз их нарисовать на единственном PictureBoxе и потом отмечать попадания?
@canopen, в какой место программы надо писать Ваш кусок? И нужно что-то ли еще? Объясните пошагово, пожалуйста. Просто я только начинаю работать в Windows Forms, и еще не имею опыта работы с ней, а практику учебную задали в ней делать. Вставил вот так — выдает 39 ошибок аж.
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
#pragma region Windows Form Designer generated code /// /// Обязательный метод для поддержки конструктора - не изменяйте /// содержимое данного метода при помощи редактора кода. /// void InitializeComponent(void) { this->label_player = (gcnew System::Windows::Forms::Label()); this->label_computer = (gcnew System::Windows::Forms::Label()); this->pole_player = (gcnew System::Windows::Forms::TableLayoutPanel()); this->pole_computer = (gcnew System::Windows::Forms::TableLayoutPanel()); private: PictureBox[,] pictureBoxes = new PictureBox[10, 10]; this->SuspendLayout(); pole_player.ColumnCount = 10; pole_player.RowCount = 10; for (int y = 0; y 10; y++) { for (int x = 0; x 10; x++) { var pictureBox = new PictureBox(); pictureBoxes[y, x] = pictureBox; pole_player.Controls.Add(pictureBox); } }
Источник
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Classic «Sea Battle» game on Windows Forms with Enemy bot
malandrii/sea-battle-game-winforms
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
«Sea Battle» on Windows Forms
Classic «Sea Battle» game on Windows Forms with Enemy bot
Go to Releases, choose the latest release and click the «sea-battle.exe» or just click here.
Place ships panel => choose ship size => mouse cursor on the field
Ships horizontality can be changed
Ships can be arranged randomly
After you’ve placed all the ships choose the enemy settings and press «Start Game»
Press on the enemy field button. You and enemy go one by one.
If the text of the button is dot — this cell is clear
If cross — you hit the enemy ship
Also status helps with that
As you hit an enemy ship — you continue your moves until you miss.
As the enemy ship is dead — all the cells around gets covered
Meanwhile, enemy-bot is attacking our field
Game stops as someone destroys all the enemy ships and you can see where they were located
Works the same with any ship (also understands if the cell was already shot and goes the opposite way)
This algorithm is the most effective way to play «Sea Battle» (usually people play the same way)
About
Classic «Sea Battle» game on Windows Forms with Enemy bot
Источник