![]() |
|
Модераторы: Poseidon |
![]()
|
|
| MotokoK |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.10.2009 Репутация: нет Всего: нет |
Добрый вечер. Я только начала изучать делфи после Паскаля и сейчас пишу на нем курсовую, тема Арканойд.Без каких либо графических наворотов,просто игра прямо на форме.Столкнулась с многими сложнастями например с такой. Вот кусочек кода из самого начала.
В задумке по нажатие "Новая игра" у пользователя спрашивают имя,а послее ввода и нажатия на Enter запрос и поле ввода уничтожаются.Вот только вобще ничего не проиходит. |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
откуда взялась процедура Edit1KeyDown если Edit1 создается динамически?
|
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: нет Всего: 54 |
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
| MotokoK |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.10.2009 Репутация: нет Всего: нет |
ИванМ
Эм процедуру сама руками написала... |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
MotokoK, а связать ее с объектом?
|
|||
|
||||
| MotokoK |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.10.2009 Репутация: нет Всего: нет |
ИванМ
Спасибо большое,теперь умею связывать денамически созданые объекты с процедурами. Вот только не знаю как правильно их разрушать,потому что от edit1.destroy Ошибка. Подскажите пожалуйста как удалять обекты. Но в этом случае наверно InputQuery больше подходит.Но теперь еще больше вопросов.Задам попорядку.
Вобщем вопросы. Во-первых
Как сделать чтобы 1:Не выдавало ошибку при ведение мишки по форме до начала новой игры.А то ошибка потому что player еще не создан. 2:Убрать курсор мыши. 3:Привязать скорость к перемешению мыши.Т.е чтобы пластика двигалась с заданой скоростью. 4:Чтобы не выезжала за правый край формы. и вот тут чуть посложнее
Это очень упрошенный способ рекашета шарика от платформы,но существует формула arccos((x-0.5l)/0.5l), где l - общая длина платформы, а x - расстояние от левого края платформы до точки удара шарика. Но я немогупонять к чему прировнять arccos((x-0.5l)/0.5l). Получается нужно добавлять в класс шара переменную угла его отражения, и как тогда узнать х при столкновение. Очень прошу ответить на все вопросы.Думаю уже неделю на ними совсем ничего не выходит. |
||||||
|
|||||||
| ИванМ |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
Проверить два последних события OnMouseMove и высчитать разницу в координатах. В зависимости от нее создавать нужную скорость. с помощью условий if (здесь вообще не понятно в чем сложность) |
||||||||
|
|||||||||
| MotokoK |
|
||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.10.2009 Репутация: нет Всего: нет |
можно пример?
Понятно что с помощью if,я думала так
или
Но это не подходит. |
||||||||
|
|||||||||
| ИванМ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
Если чуть перефразировать
на такое:
то должно подойти. Это сообщение отредактировал(а) ИванМ - 14.3.2010, 23:10 |
||||
|
|||||
| MotokoK |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.10.2009 Репутация: нет Всего: нет |
Спасибо,так сработало.
Вот еще 2 вопроса. Как сделать так чтобы курсор не выходил за форму во время игры? И второй это про разрушения. У меня неполучается динамически удалять обекты.Например в момент проигрыша или при попадании шарика в кирпич.Как реализовать разрушение объектов? |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
||||
|
||||
| MotokoK |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.10.2009 Репутация: нет Всего: нет |
Я думаю это ошибка сзвязаня с тем что это массив и обрабатывается в цикле потоу что уничтажение шарика у меня получилось и все работает
А и еще на счет мышки есть такая проблема.Поскольку движения курсора приравнены к левой стороне игрока,то когда он упирается в правый край формы и уже не движется курсор еще может двигатся до края формы.Поэтому при движение обратно игрок движется не сразу. Это сообщение отредактировал(а) MotokoK - 18.3.2010, 21:12 |
||||
|
|||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
MotokoK, как мне представляется, ошибка происходит из-за того, что после уничтожении элемента массива к этому массиву снова идет обращение в цикле, и в т.ч. к тому элементу, который уже удален. Поэтому самый простой способ это после удаления элемента присвоить ему значение nil, а потом в цикле проверять, равен ли он nil или нет, и в зависимости от этого работать с ним или нет.
Что касается правой части экрана, то можно, например, сделать ограничение курсора не до правого края формы, а отнять от этого значения еще длину игрока. Это не очень, конечно, грамотный подход, но зато самый простой. Это сообщение отредактировал(а) ИванМ - 18.3.2010, 23:29 |
|||
|
||||
| MotokoK |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 28.10.2009 Репутация: нет Всего: нет |
Если имеется в виду вычитать ширину отсюда
то я не понимаю как это сделать,не совпадают же типы. А с этим
что делать после else т.е если wall[i]=nil Это сообщение отредактировал(а) MotokoK - 20.3.2010, 17:08 |
||||||
|
|||||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
||||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |