|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.05.2021, 10:16 | #1 |
Регистрация: 02.05.2021
Сообщений: 8
|
спрайты на Image-ах - Pac Man код в теме Delphi7 / как сделать игровое поле так, чтобы не столкнуться с преградами. Делфи
Как сделать стены, чтоб персонаж не проходил сквозь них? Использовала Image1(фон) и Image2 (персонаж). Помогите, пожалуйста.
|
02.05.2021, 10:49 | #2 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Да пусть попробует - расшибёт лоб и одумается
Кто же знает, что там намалёвано в Image1. Если стены фиксированной толщины по краям image1, то по x < Image1.left + d и х > (Image1.left+ Image1.width) -d. Если они - другого цвета, то по цвету пикселей. Речь идёт, я так понимаю, о самой примитивной 2D игре ? |
04.05.2021, 09:23 | #3 |
Регистрация: 02.05.2021
Сообщений: 8
|
Да. Но это курсовой проект, поэтому тут не должно быть ошибок. Все сайты просмотрела и нет информации как сделать игровое поле так, чтобы не столкнуться с преградами. Прикрепила фото самой формы при запуске и переходе к игре. Не совсем понимаю как сделать стены.
|
04.05.2021, 10:17 | #4 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,501
|
Персонаж движется не по картинкам, а по матрице, двухмерному массиву.
Преграды лишь отображение занятых частей матрицы, например там где еденицы, и пересместиться туда нельзя, а где нули туда перемещаться можно. Персонаж в свою очередь перемещается по другой матрице, или хранит информацию о своём местоположении в другой матрице. и каждый раз идёт запрос к матрице - можно ли туда переместиться. |
04.05.2021, 10:19 | #5 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Я не специалист по играм, но если бы мне пришлось прогить такую афигнею, у меня было бы 2 пути:
1. Кроме выведенного на экран Image, завёл бы в памяти массив запрещённых для персонажа позиций, где он стукался бы об стенки. Массив рассчитывается статически один раз при загрузке (стены ведь не двигаются?) . И при попытке войти на недопустимую точку она (попытка) бы игнорировалась. Возможно, с выдачей звукового сигнала "БУМ!" 2. Без дополнительного массива. Анализировать по цвету пикселей Bitmap этого Image, и если они отличаются от цвета фона (чёрный) - не пущать. Первый способ вроде быстрее, но при интерактивной игре скорость не сильно и нужна, человек - медленный. Так что я выбрал бы второй. Игрописатели, возможно, выдадут другие варианты. |
04.05.2021, 15:51 | #6 |
Регистрация: 02.05.2021
Сообщений: 8
|
Alar, Это всё понятно. Но как именно это сделать?
Уже не первый день ищу информацию об этом. Находила похожие игры, но там либо код переписан на другом языке, либо нет того, что нужно мне. digitalis, Хм...2 способ звучит круто, но как это сделать... Спасибо огромное за Вашу помощь |
04.05.2021, 15:52 | #7 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,547
|
Если лабиринт это лишь картинка, а цвет фона всегда точно известен (черный), то да, можно смотреть по цвету пикселя, если впереди персонажа есть хотя бы один не черный пиксель, значит не давать двигаться (не менять координату при нажатии кнопки движения).
E-Mail: arigato.freelance@gmail.com
|
04.05.2021, 16:01 | #8 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,501
|
|
04.05.2021, 16:25 | #9 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 627
|
У тебя картинка сохранена в файл как картинка, или рисуется их программы?
|
04.05.2021, 16:45 | #10 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,547
|
Не самый лучший способ строить спрайты на Image-ах. Но набросал пример по вашему заданию, вот код с движением, управлением и обработкой препятствий:
Код:
E-Mail: arigato.freelance@gmail.com
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите, пожалуйста. Код заменяет русские буквы на английские, как сделать, чтобы и наоборот так же делал? | КотикБегемотик | C# (си шарп) | 1 | 24.02.2021 12:20 |
Вызов процедуры в массиве. делфи. Как правильно вызвать процедуру и сделать так, чтобы результаты вписывались в memo1.Lines. | vallera | Помощь студентам | 1 | 30.05.2017 22:45 |
как сделать так чтобы при нажатии на ComboBox выводилось поле из таблицы DBGrid? | jawa250t | БД в Delphi | 4 | 21.04.2012 21:57 |
мой фотошоп - Как сделать так чтобы image принимал размеры той картинки которую я загружаю? | bill | Мультимедиа в Delphi | 9 | 26.05.2007 23:17 |