|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.10.2008, 15:28 | #1 |
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
Регистрация: 28.03.2008
Сообщений: 358
|
Пишу Pacman. Нужна помощь.
В общем пишу Pacman
Собираюсь не использовать ни одного изображения Всё с помощью Canvas И возникла такая проблема Всё начало ужасно мерцать Код:
Я думаю моя ошибка в том что я обновляю всё игровое поле в таймере В общем вопрос такой: Как мне сделать в данном коде Обновление вокруг клетки с Pacman'ом Если в коде что будет непонятно Спрашивайте Хотя всё построено довольно примитивно Одни циклы и условия... Вот сурсы и ехе: |
06.10.2008, 16:33 | #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. |
06.10.2008, 19:23 | #3 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
Посмотри здесь на форуме стр.2 - тему "Особенности программирования
движущихся объектов" и " Мастерская: Некоторые аспекты программирования".
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
07.10.2008, 00:36 | #4 |
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
Регистрация: 28.03.2008
Сообщений: 358
|
Костя спасибо
Только не Код:
Код:
|
07.10.2008, 09:28 | #5 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
Заводишь переменную которая определяет направление и предел движения
Код:
1-влево (х) 2-вверх (y) 3-вправо (x) 4-вниз (y) Далее в процессе игры проверяешь, если orientation = 1, то двигаешь персонажа влево и проверяешь не прошел ли он лимит if (x>=limit) then orientation:=0; Идентично с остальными направлениями. |
07.10.2008, 10:22 | #6 |
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
Регистрация: 28.03.2008
Сообщений: 358
|
Что то не особо понятно
Как я это передвижение буду рисовать? |
07.10.2008, 10:48 | #7 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
Эх моя вина, не рассказал до конца.
Нужно завести еще две переменные Код:
Код:
|
07.10.2008, 10:48 | #8 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
Сделай управление движения циклом. Допустим у тебя клетки 50 х 50.
Сделай цикл For i:= 1 to 10 do и в каждой итерации цикла добавляй приращение координат в нужном направлении на 5 pixels. За полный цикл получишь 5 * 10 = 50 - плавное перемещение на одну клетку. Ну, и естественно все изменения делать за пределами формы в буфере и только затем выводить на форму.
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
07.10.2008, 11:17 | #9 |
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
Регистрация: 28.03.2008
Сообщений: 358
|
Ладно придётся увеличить своё поле в несколько раз...
Чтоб были пиксели для перехода с одной клетки на другую... Потому что Вот уровень: Код:
Код:
Код:
Последний раз редактировалось AngelOfDeath; 07.10.2008 в 11:26. |
07.10.2008, 11:52 | #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 |