Другие языки программирования и технологии
Как сделать нарисованное поле интерактивным в C#?
Например, есть нарисованное поле для морского боя в Photoshop(Corel, Paint... не важно), как сделать его интерактивным (отрисовка полей попадание/промах, размещение спрайтов кораблей т. д.), с помощью каких элементов?
Uniti, XNA, DirecX ...
Морской бой, Терис, Змейка за два часа пишутся на Pascal или QBASIC
без всяких движков и конструкторов!
Почему то все начинающие игроделы (и не только игроделы)
начинают разрабатывать свою программу с интерфейса.
Накидать контролов на красивый фон и потом думать,
а что же делать дальше, что писать?
Концептуально неверно!
Разработка любой программы начинается с осмысливания того, как вы будете оперировать с данными. Научитесь в голове представлять весь процесс построения программы с нуля и работу с данными на уровне компьютера. Все абстрактно, все виртуально. Станьте самим компьютером!
Приведу пример рассуждения ...
Что есть морской бой? Это двумерный массив,
матрица 10х10 в которой содержатся числа
0- пустое поле
1-живая клетка корабля
2-подбитая клетка
3-клетка после выстрела (промах)
Размещая корабли на поле, мы заносим данные в массив
Что есть графический вывод на экран? Это слепок с матрицы.
Перебираем массив в цикле и отрисовываем, с использованием Bitmap,
игровое поле согласно нашего массива. Т. е. мы производим операции с данными в массиве, а событие таймера постоянно отрисовывает содержимое массива.
Можно конечно и контролы заполнять, но это тормоза - графические методы GDI+
гораздо эффективнее (я делал на Visual Basic .NET ради интереса анимацию движущихся объектов на форме средствами GDI+. 300 объектов - полет нормальный!)
Предвижу вопрос о кликах по клеткам, координатах ...
Легко. Есть событие возращающее координаты клика мышки. Координаты отрисовки каждой клетки игрового поля известны. Достаточно сопоставить координаты и вычислить в диапазон какой клетки попал клик.
.

Морской бой, Терис, Змейка за два часа пишутся на Pascal или QBASIC
без всяких движков и конструкторов!
Почему то все начинающие игроделы (и не только игроделы)
начинают разрабатывать свою программу с интерфейса.
Накидать контролов на красивый фон и потом думать,
а что же делать дальше, что писать?
Концептуально неверно!
Разработка любой программы начинается с осмысливания того, как вы будете оперировать с данными. Научитесь в голове представлять весь процесс построения программы с нуля и работу с данными на уровне компьютера. Все абстрактно, все виртуально. Станьте самим компьютером!
Приведу пример рассуждения ...
Что есть морской бой? Это двумерный массив,
матрица 10х10 в которой содержатся числа
0- пустое поле
1-живая клетка корабля
2-подбитая клетка
3-клетка после выстрела (промах)
Размещая корабли на поле, мы заносим данные в массив
Что есть графический вывод на экран? Это слепок с матрицы.
Перебираем массив в цикле и отрисовываем, с использованием Bitmap,
игровое поле согласно нашего массива. Т. е. мы производим операции с данными в массиве, а событие таймера постоянно отрисовывает содержимое массива.
Можно конечно и контролы заполнять, но это тормоза - графические методы GDI+
гораздо эффективнее (я делал на Visual Basic .NET ради интереса анимацию движущихся объектов на форме средствами GDI+. 300 объектов - полет нормальный!)
Предвижу вопрос о кликах по клеткам, координатах ...
Легко. Есть событие возращающее координаты клика мышки. Координаты отрисовки каждой клетки игрового поля известны. Достаточно сопоставить координаты и вычислить в диапазон какой клетки попал клик.
.

Саня Александр
Понятно что массив. Вопрос в том как нарисованное в массиве отрисовать. Игр раньше не делал (да и не самоцель это), да и с C# только знакомлюсь, хотя многое и понятно из Delphi, цель делая понять что к чему. Люди разные, кому-то достаточно прочитать, услышать и он всё поймёт, а кому-то всё становится яснее через практику (и я из последних).
Саня Александр
С кликами по клеткам как раз всё понятно. Проблема с "оживлением поля" и спрайтами кораблей.
Саня Александр
Я правильно понимаю что мне придётся, следуя совету, разбить рисунок игрового поля на элементы и отрисовать их в массиве? ..или существуют способы наложение массива на цельный (однородный) рисунок?
Саня Александр
То же о кораблях... Спрайты кораблей тоже придётся делить на клетки или всё-таки как-то можно отрисовать в массиве целый рисунок?
Если там нет серьёзной анимации, то используй обработчик события Paint и там в объекте графики, который находится в e, рисуй.
Саня Александр
Анимация проста, 2D спрайты состоящие из графических примитивов
с помощью игрового движка. unity например. и не так-то это просто. для простецкой игрушки вероятно какой-нибудь game maker будет проще, чем на c#
Aleksandr Sitnikov
Боже, нельзя в C# видить один unity, это дико.
Саня Александр
Вам может быть очень увлекательно спорить, но может кто-нибудь высказаться более содержательно и по делу?
Похожие вопросы
- В какой программе можно сделать свою первую интерактивное кино - игру?
- как сделать де кодировщик символа в C++?
- Как сделать добавление удаление редактирование EF C#
- Как сделать многопоточное воспроизведение звука в c#
- c++. нужно нарисовать такую матрицу.
- Вопрос от ламера. Как нарисованную полностью страницу сайта сделать в HTML?
- Как вырезать интерактивную карту определенного района?
- C#. Как сделать, чтобы программа проверяла тип введённой переменной?
- Не могу сделать калькулятор C++
- Как сделать Random в C#