Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

На чём лучше отрисовывать

57K
24 марта 2010 года
BiTOk
2 / / 24.03.2010
Доброе время суток. Мне надо написать игру, смысл игры - снизу летает нечто и стреляет по тому, что вылезает сверху) Каждая пуля - поток, каждый "враг" - поток. Есть реализация на Цпп, весь вывод на консоли. Необходимо переписать под C# (с использованием GUI), логику реализовал, но столкнулся с проблемой - на чём рисовать врагов и пули? Пробовал рисовать прямо на форме, но возникает проблема с определением столкновения пули и врага (хотел проверять просто по цвету пикселя, в который перейдёт пуля на следующем шаге, но цвет получить так и не удалось)). Что посоветуете?
297
26 марта 2010 года
koodeer
1.2K / / 02.05.2009
Как я понимаю, для отрисовки игры будет использоваться GDI. Это конечно не айс, но для получения опыта можно (сам так делал).

Сделать можно так: кидаем на форму PictureBox. Создаём Bitmap. На это битмапе и рисуем. Можно попиксельно - метод SetPixel, можно создать Graphics - Graphics.FromImage, и уже на нём рисовать методами Draw и Fill. Главное - после каждой отрисовки свойству Image нашего пикчабокса присваивать получившийся битмап: pictureBox1.Image = bitmap.

Цвет пиксела на битмапе получаем методом GetPixel.


(А можно хранить координаты пуль и целей в какой-нибудь коллекции, и проверять их, а не цвет пиксела).
253
26 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: koodeer

Сделать можно так: кидаем на форму PictureBox. Создаём Bitmap. На это битмапе и рисуем. Можно попиксельно - метод SetPixel, можно создать Graphics - Graphics.FromImage, и уже на нём рисовать методами Draw и Fill.


Попиксельно :eek: И копировать изображения тоже? :) Думаю, лучше всего посмотреть в сторону API - а конкретно BitBlt. Благо пользоваться GDI довольно просто.

Цитата: koodeer

Главное - после каждой отрисовки свойству Image нашего пикчабокса присваивать получившийся битмап: pictureBox1.Image = bitmap.


Тогда уж не после каждой отрисовки, а по таймеру либо по OnIdle приложения.

297
26 марта 2010 года
koodeer
1.2K / / 02.05.2009
Цитата: Proger_XP
Попиксельно :eek: И копировать изображения тоже? :)


Ну, если нужно нарисовать несколько пуль в виде точек, то SetPixel вполне годится :)

5
26 марта 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Proger_XP
Попиксельно :eek: И копировать изображения тоже? :) Думаю, лучше всего посмотреть в сторону API - а конкретно BitBlt. Благо пользоваться GDI довольно просто.

Зачем пользоваться GDI есть прямо под попой есть GDI+?
1) дотнет сам умеет копировать
2) для обработки битмапов можно (нужно!) пользоваться методом LockBits.

Топикстартеру: анализировать логику на основе интерфейса плохо. Коллизии нужно расчитывать самостоятельно, математика там несложная.

307
26 марта 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: BiTOk
Доброе время суток. Мне надо написать игру, смысл игры - снизу летает нечто и стреляет по тому, что вылезает сверху) Каждая пуля - поток, каждый "враг" - поток. Есть реализация на Цпп, весь вывод на консоли. Необходимо переписать под C# (с использованием GUI), логику реализовал, но столкнулся с проблемой - на чём рисовать врагов и пули? Пробовал рисовать прямо на форме, но возникает проблема с определением столкновения пули и врага (хотел проверять просто по цвету пикселя, в который перейдёт пуля на следующем шаге, но цвет получить так и не удалось)). Что посоветуете?



а простите, при чем тут "на чем рисовать" и "столкновение врага с пулей"? рисовать на битмапе или пиксмапе, а уже этот самы мап рисовать на форму. а столкновение врага и пути это уже дело геометрии, а не отрисовки! да и собственно если есть уже реализация на "цпп", то какие проблемы с этим самым столкновением? сделайте аналогично, бо врядли оно у вас там реализовано через указатели на функцию, и множественное наследование от специализированных шаблонов, а значит проблем с переносом особых быть не может.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог