Другие языки программирования и технологии

Как сделать нарисованное поле интерактивным в C#?

Например, есть нарисованное поле для морского боя в Photoshop(Corel, Paint... не важно), как сделать его интерактивным (отрисовка полей попадание/промах, размещение спрайтов кораблей т. д.), с помощью каких элементов?
Uniti, XNA, DirecX ...
Морской бой, Терис, Змейка за два часа пишутся на Pascal или QBASIC
без всяких движков и конструкторов!
Почему то все начинающие игроделы (и не только игроделы)
начинают разрабатывать свою программу с интерфейса.
Накидать контролов на красивый фон и потом думать,
а что же делать дальше, что писать?
Концептуально неверно!

Разработка любой программы начинается с осмысливания того, как вы будете оперировать с данными. Научитесь в голове представлять весь процесс построения программы с нуля и работу с данными на уровне компьютера. Все абстрактно, все виртуально. Станьте самим компьютером!

Приведу пример рассуждения ...
Что есть морской бой? Это двумерный массив,
матрица 10х10 в которой содержатся числа
0- пустое поле
1-живая клетка корабля
2-подбитая клетка
3-клетка после выстрела (промах)
Размещая корабли на поле, мы заносим данные в массив
Что есть графический вывод на экран? Это слепок с матрицы.
Перебираем массив в цикле и отрисовываем, с использованием Bitmap,
игровое поле согласно нашего массива. Т. е. мы производим операции с данными в массиве, а событие таймера постоянно отрисовывает содержимое массива.
Можно конечно и контролы заполнять, но это тормоза - графические методы GDI+
гораздо эффективнее (я делал на Visual Basic .NET ради интереса анимацию движущихся объектов на форме средствами GDI+. 300 объектов - полет нормальный!)
Предвижу вопрос о кликах по клеткам, координатах ...
Легко. Есть событие возращающее координаты клика мышки. Координаты отрисовки каждой клетки игрового поля известны. Достаточно сопоставить координаты и вычислить в диапазон какой клетки попал клик.
.
Александр Тулинов
Александр Тулинов
95 176
Лучший ответ
Саня Александр Понятно что массив. Вопрос в том как нарисованное в массиве отрисовать. Игр раньше не делал (да и не самоцель это), да и с C# только знакомлюсь, хотя многое и понятно из Delphi, цель делая понять что к чему. Люди разные, кому-то достаточно прочитать, услышать и он всё поймёт, а кому-то всё становится яснее через практику (и я из последних).
Саня Александр С кликами по клеткам как раз всё понятно. Проблема с "оживлением поля" и спрайтами кораблей.
Саня Александр Я правильно понимаю что мне придётся, следуя совету, разбить рисунок игрового поля на элементы и отрисовать их в массиве? ..или существуют способы наложение массива на цельный (однородный) рисунок?
Саня Александр То же о кораблях... Спрайты кораблей тоже придётся делить на клетки или всё-таки как-то можно отрисовать в массиве целый рисунок?
Если там нет серьёзной анимации, то используй обработчик события Paint и там в объекте графики, который находится в e, рисуй.
Саня Александр Анимация проста, 2D спрайты состоящие из графических примитивов
с помощью игрового движка. unity например. и не так-то это просто. для простецкой игрушки вероятно какой-нибудь game maker будет проще, чем на c#
Саня Рудь
Саня Рудь
141
Aleksandr Sitnikov Боже, нельзя в C# видить один unity, это дико.
Саня Александр Вам может быть очень увлекательно спорить, но может кто-нибудь высказаться более содержательно и по делу?