![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
В этом движке нет какого-нибудь события типа OnCollision? Когда два спрайта пересекают друг друга.
|
|
#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 виртуальной, в нее и добавить нотификацию о событии.
|
|
#19
|
|||
|
|||
|
Цитата:
Код:
procedure TMapSprite.DoCollision(Sprite: TSprite; var Done: Boolean); ... if Sprite is TBallSprite then ... |
|
#20
|
||||
|
||||
|
Ну супер, вечером заценю твою игруху
![]() |
|
#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" - очень полезная весч
![]() |