![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Заблокирован
Форумчанин
Регистрация: 27.04.2008
Сообщений: 103
|
![]()
короче, делаю игру и застрял...
пожалуйста, помогите... ...слушайте, вот в чем причина, я отображаю рисунок (TBitMap) все нормально, но когда я его двигаю от него остается след. как избежать этого? я пишу на Delphi. Последний раз редактировалось Beermonza; 16.10.2008 в 23:12. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
перед отображением нового кадра(движение картинки) нужно очистить то, что уже было нарисовано.
Form1->Canvas->Brush->Color=0xFFFFFF; Form1->Canvas->FillRect(Rect(0,0,ClientWidth,Clie ntHeight)); Последний раз редактировалось Kostia; 15.10.2008 в 14:10. |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
![]()
Каким методом происходит передвижение?
Стандартный подход следующий - запоминаешь фон,куда будет выводиться рисунок.Размер фона равен размеру рисунка.Выводишь рисунок.Перед очередным передвижением "затираешь" рисунок запомненым фоном,снова запоминаешь фон в новом положении рисунка и выводишь рисунок.Далее все повторяется.
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
![]() |
![]() |
![]() |
#4 |
Заблокирован
Форумчанин
Регистрация: 27.04.2008
Сообщений: 103
|
![]()
ловите код...
mess.. mess.. mess.. mess.. message. (пись.. пись.. пись.. пись.. письмо) |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 28.11.2006
Сообщений: 14
|
![]()
Перерисовать нужно основную канву перед вызовом процедуры перемещения.
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
![]()
To CyberOrcX
Пытался разобраться в твоем коде, признаюсь, потом отказался. Слишком много лишнего наворочено в коде для такой простой задачи - вывести на экран звездолет, чтобы он постреливал изредка.Поэтому вот тебе пример простого решения этой задачи.Используем три событийных процедуры формы : FormActivate - строим объекты типа TBitMap для наших персонажей - это звездолет,снаряд и фон(космос где происходят события).Я для эфекта добавил еще небольшой взрыв при самоуничтожении снарядов.Заполняем TBitMap-ы нашими персонажами (картинками).Здесь же строим буфер Buff, где будем производить все изменения.Определяем размеры Buff и задаем начальные координаты звездолета и снаряда. В FormPaint выводим кртинку на форму(на экран). В FormKeyDown управляем сдвигом звездолета и задаем выстрел. Две дополнительные процедуры MovePlayer и MoveBullet формируют движение соответствующих образов.ВСЕ. Все предельно упрощено и, думаю, понятно.Сравни со своим кодом. Но и это не предел.Если использовать вместо статических рисунков спрайты, то даже такую примитивную стрелялку можно значительно оживить добавив в нее динамичности. Попробую позже показать это на примере. Info: Абривеатура SSh - спейс шутер (стрелялка в космосе). Совет : старайся всегда присваивать осмысленные названия.А то космический корабль у тебя почему-то называется Player, хотя насколько я понимаю Игрок вообще-то находится по другую сторону дисплея.
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
![]() |
![]() |
![]() |
#7 |
Заблокирован
Форумчанин
Регистрация: 27.04.2008
Сообщений: 103
|
![]()
мне 15 лет.
|
![]() |
![]() |
![]() |
#8 | ||
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
2DeKot
Цитата:
2CyberOrcX Цитата:
|
||
![]() |
![]() |
![]() |
#9 | |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
![]() Цитата:
To CyberOrcX А это обещаная динамическая стрелялка.Постарайся разберись с кодом - там все вроде бы не сложно.Добавь сюда кактх нибудь падающих астероидов или космических кораблей, сделай взрывы при столкновении с ними.Добавить интерфейса чуть-чуть - там меню, счетчики и т.п. Получится полноценная простенькая игрушка.Если все таки будут сложности - спрашивай. Отвечу про все , что смогу.
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
|
![]() |
![]() |
![]() |
#10 |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
![]()
Где в SpaceShutter код, который затирает старое изображение корабля и выводит новое? Никак не могу разобраться.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
GDI | EdNovice | Win Api | 4 | 12.02.2008 09:14 |
GDI plus API | delphi_coder | Win Api | 1 | 28.09.2007 12:41 |
У меня свой сайт я хочу зделать онлайн игру! помогите те кто умеет делать флеш игры! | Denfer | Свободное общение | 1 | 07.08.2007 14:06 |