|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.09.2011, 00:16 | #11 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Отпишу по этой заготовке:
Что мне не понравилось в коде : 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 раз вывод на канву) не знаю насчет работы со списком пуль - если сработали хоть частично сами - то молодец )) |
29.09.2011, 07:51 | #12 | |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
Цитата:
Что насчет с битмапами и их выгрузкой, приму к сведению Таймеры тоже пересмотрю. Что насчет if'ов переделаю их на case (Или можно проще?), Вот только вопрос так и остался, как сделать чтобы через определенные обасти игрок пройти не мог, например произвольный Эллипс на image при этом он может двигаться куда ему захочется, и он может быть не один?
Каждый день узнаю новое...
|
|
29.09.2011, 12:40 | #13 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Поищи примеры выполнения коллизии - обычно геометрический способ для 2д игр применяется по прямоугольным областям, по треугольникам, по точкам и прямым и другим, можно ещё по цвету, но проблема будет задавать цвета в программе, а потом ведь ещё могут и картинки поменяться... ну а вообще самый прикольный на мой взгляд способ - с помощью масок, но он довольно сложный (там тоже по цветам, только для каждого изображения строится маска, которая рисуется на битмап в памяти, при перекрытии масок получается коллизия объектов)
|
29.09.2011, 14:14 | #14 | |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
Так, исправил баг, который возникал при стрельбе в самом начале до нажатия стрелок. TbitMap теперь загружаются 1 раз в массив при инициализации формы, и дальше на них ссылается уже программа. Также реализовал очистку памяти от этих картинок. Сократил 3 таймера одним
Цитата:
Каждый день узнаю новое...
|
|
30.09.2011, 08:50 | #15 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Поищи примеры коллизии = поиск по форуму по словам коллизия, столкновение:
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 и много других тем, большинство с примерами кода |
30.09.2011, 13:20 | #16 |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
Phomm, спасибо.
Я вот посидел подумал, попробовал сделать Класс Код:
Код:
Код:
Попробую при перересовке image определять, проходимость точек.
Каждый день узнаю новое...
Последний раз редактировалось Anton911; 30.09.2011 в 13:52. Причина: Правка сообщения |
05.10.2011, 12:28 | #17 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Что-то забыл отписать тут :
Если Вы делаете так , как написано в коде выше - то гораздо логичнее сделать не класс, а record - тогда не понадобится не создавать, не удалять объекты. Если не планируется на Tpix повешать ещё какую-то функциональность, конечно. Ну а вообще, сей способ очень хитрый (знаю непонаслышке, сам пишу пиксельный движок) - буду надеяться, у Вас получится реализовать. Хотел бы посоветовать опять же все числа постараться вынести в константы или ещё куда - гибче будет. |
06.10.2011, 16:12 | #18 |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
Не пришлось мне даже создавать класс
просто сделал так Pixels:array[-30..641,-30..442] of integer; и тут уже можно хранить любые числа Кстате вот что у меня получилось (Залил архив). Я там создавал процедуры работы с NPC, научил их стрелять, но много чего надо доделать, коллизии получилось сделать, но я сделал чтобы они работали если юниты враждебны друг к другу, если они союзники то могут и сквозь друг друга ходить И поэтому иногда возникает иллюзия, что в юнит стреляют а у него не отнимается хп. Короче если кому интересно могу исходник выложить.)
Каждый день узнаю новое...
|
14.10.2011, 15:49 | #19 |
Пользователь Подтвердите свой е-майл
Регистрация: 28.03.2007
Сообщений: 52
|
Немного пиара и я думаю много пользы автору топика.
Я разрабатываю 2д движок и там есть пример игры, всё в исходниках, посмотри, многое уже реализовано. http://sites.google.com/site/boxdemi/ |
14.10.2011, 18:54 | #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 |