|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
||||
|
||||
В этом движке нет какого-нибудь события типа OnCollision? Когда два спрайта пересекают друг друга.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#17
|
|||
|
|||
Цитата:
Код:
if Sprite is TBallSprite then begin if bump=false then if (collisionline(x1,x2,x,x+60,y1,y2,y+18,y+18)or collisionline(x1+10,x2+10,x,x+60,y1,y2,y+18,y+18)) then vector:=360-vector else if (collisionline(x1,x2,x,x+60,y1+10,y2+10,y,y)or collisionline(x1+10,x2+10,x,x+60,y1+10,y2+10,y,y)) then vector:=360-vector else begin if vector<=180 then vector:=180-vector else vector:=540-vector; end; dead; bump:=true; end; UPD а вот запостил, посмотрел на него и еще сократил на 2 строки Последний раз редактировалось Shpingalet, 13.09.2012 в 15:56. |
#18
|
||||
|
||||
Движок как называется? Должно быть DoCollision виртуальной, в нее и добавить нотификацию о событии.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#19
|
|||
|
|||
Цитата:
Код:
procedure TMapSprite.DoCollision(Sprite: TSprite; var Done: Boolean); ... if Sprite is TBallSprite then ... |
#20
|
||||
|
||||
Ну супер, вечером заценю твою игруху
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#21
|
|||
|
|||
Итак, решил я запилить меню в игре и сразу получил ошибку. Так как использую 2 формы впервые, причем форма с игрой у меня была написана раньше и обзывалась Form1, я ее переименовал в Form2, а форму с меню сделал и назвал Form1. Соответственно немножко подправил .dpr. Но при запуске пишет ошибку:
Что самое интересное, если не сбрасывая проект, запустить его еще раз, то появляется уже ошибка: И на фоне запускается игра... Не пойму где что не так? |
#22
|
||||
|
||||
Цитата:
|
#23
|
||||
|
||||
Посмотрел исходник, ошибка у тебя здесь:
Код:
procedure TForm1.FormCreate(Sender: TObject); begin Form1.Left:=(Screen.Width - Width) div 2;; Form1.Top:=(Screen.Height - Height) div 2; Form2.Left:=(Screen.Width - Width) div 2;; Form2.Top:=(Screen.Height - Height) div 2; Form2.Visible:=false; Form2.Hide; end; И вот ещё что: в Delphi-программах главной формой стаёт та, которая создаётся первой, в твоём случае это будет Form1 с меню, а не Form2 с игрой. |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Shpingalet (14.09.2012)
|
#24
|
|||
|
|||
Поправил все, теперь запускается. Теперь вопрос в том что если запустить игру, а потом выйти обратно в меню через esc или же тупо пропустив шарик, то хотя и форма с игрой закрывается, но DXDraw все еще продолжает работать. Мне же надо чтобы в обоих случаях сбрасывался DXTimer и DXDraw. Как это сделать?
|
#25
|
||||
|
||||
Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Shpingalet (17.09.2012)
|
#26
|
|||
|
|||
Добавил новых элементов. Все работает как надо, хочу только поменять момент паузы после смерти шарика. Никак не пойму куда запихнуть sleep чтобы у меня происходило следующее: смерть шарика -> перемещение шарика на стартовую позицию -> удаление спрайта жизни (сердечко) -> пауза. Сейчас у меня пауза работает ПЕРЕД удалением спрайта с жизнями.
|
#27
|
|||
|
|||
Насчет переименовать Form1->Form2->и т.д. посмотрите в сторону "IDE->Menu->Refactoring" - очень полезная весч
|