Поэтому я создаю редактор карт для этой маленькой игры под названием "Cataclysm". Кодирование в сторону (так как это не проблема). Использует ли ящик для каждой плитки даже хорошую идею?
Есть ли у вас какие-либо другие идеи, которые упрощают работу как на моем, так и на моем ПК? (Используя визуальную студию, наблюдается заметное замедление при перемещении или обработке всех 144 иллюстраций для квадранта 12x12 файла карты)
Еще одна идея, которую я имел, - это просто собрать картинку для карты, а затем набить ее в один кадр, но как бы отредактировать отдельные плитки таким образом? Поместите растровое изображение над ним и проверьте, какая плитка для мыши включена, когда вы нажимаете?
Спасибо за ваши предложения!
Редактировать: это редактор, а не отдельная игра!
Нет, я бы сказал, что вам лучше не использовать отдельные элементы управления ящиками, если вы можете помочь. Каждый из этих элементов управления потребляет ресурсы, и слишком много может замедлить ваше приложение.
Существует предел процесса в 10 000 оконных дескрипторов. На данный момент вы далеко не исчерпали этот предел. Но что, если вы решите сделать карту (значительно) более крупной в более поздней версии игры? Кроме того, неплохой дизайн подходит к пределу. Существует также системный предел в 32 тыс., Поэтому чем больше ручек, потребляемых одним приложением (до предела 10 тыс.), Тем меньше доступно для других приложений.
Просто используйте клиентскую область формы как поверхность рисования (вам вообще не нужны кадры с картинками). Напишите код, который делит его на соответствующие сегменты, а затем рисует ваши изображения в каждом из этих разделов. Обращайтесь к событию формы MouseClick, выполните тестовый тест, чтобы увидеть, где пользователь нажал, и сопоставьте это с одним из ваших сегментов.
В 2D изометрических играх, которые я использую, используется один картинный ящик. Что я сделал, так это то, что я взял местоположение X и Y мыши и разделил его по высоте и ширине плитки. Преобразуйте это число в int (отбрасывая десятичные значения). Это должно дать вам точную черепицу. Но вам может потребоваться немного сыграть с формулой, если вы не используете местоположение мыши на самом изображении. Итак, при щелчке мыши вы получаете плитку, которую пользователь щелкнул, и просто нарисуйте новое изображение плитки в этом месте.
Если вы хотите делать игры с использованием С#, почему бы не использовать XNA? Это очень хороший фреймворк, и вы получаете много учебников по нему.
http://en.wikipedia.org/wiki/Microsoft_XNA
http://www.microsoft.com/en-za/download/details.aspx?id=23714