![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
Регистрация: 28.03.2008
Сообщений: 358
|
![]()
В общем пишу Pacman
Собираюсь не использовать ни одного изображения Всё с помощью Canvas И возникла такая проблема Всё начало ужасно мерцать Код:
Я думаю моя ошибка в том что я обновляю всё игровое поле в таймере В общем вопрос такой: Как мне сделать в данном коде Обновление вокруг клетки с Pacman'ом Если в коде что будет непонятно Спрашивайте Хотя всё построено довольно примитивно Одни циклы и условия... Вот сурсы и ехе: |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
Так и думал, ты рисуешь сразу на форму. ЭТО НЕ ПРАВИЛЬНО!!! Никогда так не делай!
1. Удали все: DoubleBuffered:=True; 2. Заведи буфер 1. Думаю объяснений не требуется 2. В разделе глобальных переменных заведи переменную buf типа TBitMap; Код:
Код:
и в конце процедуры(таймера) canvas.draw(buf,0,0); Последний раз редактировалось Kostia; 06.10.2008 в 16:37. |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
![]()
Посмотри здесь на форуме стр.2 - тему "Особенности программирования
движущихся объектов" и " Мастерская: Некоторые аспекты программирования".
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
![]() |
![]() |
![]() |
#4 |
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
Регистрация: 28.03.2008
Сообщений: 358
|
![]()
Костя спасибо
Только не Код:
Код:
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
Заводишь переменную которая определяет направление и предел движения
Код:
1-влево (х) 2-вверх (y) 3-вправо (x) 4-вниз (y) Далее в процессе игры проверяешь, если orientation = 1, то двигаешь персонажа влево и проверяешь не прошел ли он лимит if (x>=limit) then orientation:=0; Идентично с остальными направлениями. |
![]() |
![]() |
![]() |
#6 |
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
Регистрация: 28.03.2008
Сообщений: 358
|
![]()
Что то не особо понятно
Как я это передвижение буду рисовать? |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
Эх моя вина, не рассказал до конца.
Нужно завести еще две переменные Код:
Код:
|
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
![]()
Сделай управление движения циклом. Допустим у тебя клетки 50 х 50.
Сделай цикл For i:= 1 to 10 do и в каждой итерации цикла добавляй приращение координат в нужном направлении на 5 pixels. За полный цикл получишь 5 * 10 = 50 - плавное перемещение на одну клетку. Ну, и естественно все изменения делать за пределами формы в буфере и только затем выводить на форму.
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
![]() |
![]() |
![]() |
#9 |
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
Регистрация: 28.03.2008
Сообщений: 358
|
![]()
Ладно придётся увеличить своё поле в несколько раз...
Чтоб были пиксели для перехода с одной клетки на другую... Потому что Вот уровень: Код:
Код:
Код:
Последний раз редактировалось AngelOfDeath; 07.10.2008 в 11:26. |
![]() |
![]() |
![]() |
#10 |
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
Регистрация: 28.03.2008
Сообщений: 358
|
![]()
Вот собрался сделать редактор карт...
Короче как сделать проверку клика на канве? пробовал такой метод: Код:
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. | SkyM@n | Фриланс | 3 | 29.12.2007 16:21 |
Нужна помощь!!! | Anil | Помощь студентам | 0 | 04.12.2007 17:32 |
Нужна помощь по Си. | Coach | Помощь студентам | 3 | 08.11.2007 01:08 |