![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Отпишу по этой заготовке:
Что мне не понравилось в коде : 1.какие-то числа, много разных, лучше их вынести константы(например, 367и 220) или поля структур (например, 4 из расчета новых координат переменной cld , это , надеюсь не чистая копипаста из примера про облака ??), или рассчитывать (например, граничные 210 и 368 - основываются на 367 и 220, т.е. ширине и высоте) 2. куча ифов, где кейсы надо, хотя и тут можно логику пересмотреть и упростить так, чтобы Вам самому, в первую очередь, понятно было 3. прога неустанно жрет ресурсы - пули создают битмап но не уничтожают его, если пули ещё не уничтожены соответствующей процедурой, то они не освобождаются (пример - закрыли прогу быстрее чем пуля долетела до края), сам битмап игрока тоже не особождается; из этой же оперы - битмап игрока грузится постоянно из файла - Вы так и не сделали централизованное хранилище графики (да хотя бы переменные tbitmap для всех картинок, их загрузку на формкреэйт и освобождение на формдестрой), он позволит задавать графику простым копированием ссылки : igrok.bmp := graphicsarray[gigrok]; bullet.bmp := graphicsarray[gbullet]; 4. три ненужных таймера - вполне можно обойтись и одним (совет - выкиньте таймеры, процедуры с которыми они были ассоциированы назовите как-нибудь понятно и в единственном таймере поставьте вызов их всех трех) 5. тут уже к логике вопрос - чувак бегает по 8 направлениям а стреляет только по 4 - нестыковочка )) понравилось : сразу написана двойная буферизация (не свойство формы, а рисование в памяти и 1 раз вывод на канву) не знаю насчет работы со списком пуль - если сработали хоть частично сами - то молодец )) |
![]() |
![]() |
![]() |
#12 | |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
![]() Цитата:
![]() ![]() ![]() Что насчет с битмапами и их выгрузкой, приму к сведению ![]()
Каждый день узнаю новое...
|
|
![]() |
![]() |
![]() |
#13 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Поищи примеры выполнения коллизии - обычно геометрический способ для 2д игр применяется по прямоугольным областям, по треугольникам, по точкам и прямым и другим, можно ещё по цвету, но проблема будет задавать цвета в программе, а потом ведь ещё могут и картинки поменяться... ну а вообще самый прикольный на мой взгляд способ - с помощью масок, но он довольно сложный (там тоже по цветам, только для каждого изображения строится маска, которая рисуется на битмап в памяти, при перекрытии масок получается коллизия объектов)
|
![]() |
![]() |
![]() |
#14 | |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
![]()
Так, исправил баг, который возникал при стрельбе в самом начале до нажатия стрелок. TbitMap теперь загружаются 1 раз в массив при инициализации формы, и дальше на них ссылается уже программа. Также реализовал очистку памяти от этих картинок. Сократил 3 таймера одним
![]() Цитата:
![]()
Каждый день узнаю новое...
|
|
![]() |
![]() |
![]() |
#15 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Поищи примеры коллизии = поиск по форуму по словам коллизия, столкновение:
http://programmersforum.ru/showthread.php?t=160866 http://programmersforum.ru/showthread.php?t=159219 http://programmersforum.ru/showthread.php?t=149414 http://programmersforum.ru/showthread.php?t=148637 http://programmersforum.ru/showthread.php?t=130409 и много других тем, большинство с примерами кода |
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
![]()
Phomm, спасибо.
Я вот посидел подумал, попробовал сделать Класс Код:
Код:
Код:
Попробую при перересовке image определять, проходимость точек.
Каждый день узнаю новое...
Последний раз редактировалось Anton911; 30.09.2011 в 13:52. Причина: Правка сообщения |
![]() |
![]() |
![]() |
#17 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Что-то забыл отписать тут :
Если Вы делаете так , как написано в коде выше - то гораздо логичнее сделать не класс, а record - тогда не понадобится не создавать, не удалять объекты. Если не планируется на Tpix повешать ещё какую-то функциональность, конечно. Ну а вообще, сей способ очень хитрый (знаю непонаслышке, сам пишу пиксельный движок) - буду надеяться, у Вас получится реализовать. Хотел бы посоветовать опять же все числа постараться вынести в константы или ещё куда - гибче будет. |
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
![]()
Не пришлось мне даже создавать класс
![]() просто сделал так Pixels:array[-30..641,-30..442] of integer; и тут уже можно хранить любые числа ![]() Кстате вот что у меня получилось (Залил архив). Я там создавал процедуры работы с NPC, научил их стрелять, но много чего надо доделать, коллизии получилось сделать, но я сделал чтобы они работали если юниты враждебны друг к другу, если они союзники то могут и сквозь друг друга ходить ![]()
Каждый день узнаю новое...
|
![]() |
![]() |
![]() |
#19 |
Пользователь Подтвердите свой е-майл
Регистрация: 28.03.2007
Сообщений: 52
|
![]()
Немного пиара и я думаю много пользы автору топика.
Я разрабатываю 2д движок и там есть пример игры, всё в исходниках, посмотри, многое уже реализовано. http://sites.google.com/site/boxdemi/ |
![]() |
![]() |
![]() |
#20 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
![]()
ухтыблин! классная игруха! =)))
скачал, поиграл, понравилось! главное - довели до играбельности! это важно. мне понравился "режим бога" - я когда-нибудь сдохну? )) и понравился "лазер" - зажать пробел )) хотя я не очень разделяю ваше мнение по поводу сколько раз надо попасть, чтобы убить... но можно сделать два режима - как сейчас или убивать с двух-трех попаданий. вообщем вижу в этой игрухе потенциал =) |
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Игрушка | madkot | Помощь студентам | 2 | 08.06.2011 19:05 |
Графика (стрельба из пушки по цели) перевести код с Турбопаскаля в Pascal ABC | DANTES68 | Помощь студентам | 0 | 07.04.2011 22:27 |
Игрушка на С/С++ | jewel | Помощь студентам | 2 | 28.11.2010 23:10 |
Игрушка | Nester | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 4 | 15.01.2009 19:02 |