|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.01.2007, 15:38 | #1 | |
Форумчанин
Регистрация: 20.12.2006
Сообщений: 135
|
Уроки по созданию игр для новичков...
В этом уроке я научу вас как можно передвигать обьекты по форме с помощью клавиш...
-------------------------- Начнём. 1)Создайте новый проект File> New> Application 2)Теперь киньте на форму объект TShape 3)После этого выбираем в Object TreeView форму (Form1) 4)В Object inspector на вкладке Events ищем свойство OnKeyDown и щёлкаем на него 2 раза. 5)В созданной процедуре пишем код (я рекомендую вам не просто копировать а понять как это работает!) Цитата:
--------------------------- Попробуйте сами написать движение вниз, вправо, влево... Позже и это будет показано!
writeln('Hello Dude!!!');
|
|
12.01.2007, 21:52 | #2 | |
Форумчанин
Регистрация: 20.12.2006
Сообщений: 135
|
Урок #2 Двигаем фигуру как хотим!!!
Добавьте в свою программу этот код и ваша фигура будет двигаться по всей форме! Цитата:
writeln('Hello Dude!!!');
|
|
24.01.2007, 23:18 | #3 |
Форумчанин
Регистрация: 20.12.2006
Сообщений: 135
|
Урок №3
-------------------- Как вы уже поняли фигура может двигаться куда попало...даже за пределы формы... а это не очень то и хорошо =)... Давайте вместе напишем код который будет ограничевать движение фигуры влево и вправо... --------------------- Попробуйте написать вашу программу вот так: Код:
и уже TShape не будет убегать за границы формы! Но будет двигаться только влево и вправо...попробуйте сделать самостоятельно так чтобы TShape не выходил за границы формы сверху и снизу + самостоятельно разберите код...возникнут вопросы задавайте их в этой теме... ---------------------
writeln('Hello Dude!!!');
Последний раз редактировалось execom; 26.03.2007 в 12:47. |
27.01.2007, 21:58 | #4 |
аккаунт недоступен
Форумчанин
Регистрация: 23.01.2007
Сообщений: 107
|
Вопросы по уроку №3
Сначала хотелось бы сказать спасибо модератору за эту тему т.к. лично мне она очень помогает. =)
Теперь, собственно, к вопросам.() 1. Я не понял смысла этого кода, можешь объяснить?. У меня по оси x объект стал двигаться быстрее, а когда начинал выходить за пределы формы двигался с обычной скоростью. Не надо ли вставить что-то подобное ,чтобы он не мог выйти за пределы формы: Код:
Код:
2. Можно по-подробнее о событии OnKeyDown ? В частности что за параметры передаются переменными Key, Shift?
ввел пароль, который мне не известен
Последний раз редактировалось Beermonza; 01.07.2010 в 15:51. |
28.01.2007, 08:39 | #5 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Key - код клавиши, UNICOD вроде передаётся.
Shift - передаётся состояние клавишь Shift, Alt, Ctrl (нажаты или нет) Нажми f1 (справка в делфе) и введи OnKeyDown,TWinControl там полностью описание есть + есть ссылка Virtual Key codes - там тоже много полезного. |
28.01.2007, 14:00 | #6 |
Пользователь
Регистрация: 08.01.2007
Сообщений: 41
|
немного усложнив эту конструкцию становится интереснее
Код:
таймер для избежания падения фокуса на какой-нить из контролов, потом стрелочка ваша ездить не будет. в конечном итоге ваша стрелочка будет бегать по клеточному полю и принажатии на пробел будет закрашивать клеточки цветом. ах да! на форму кинуть панель а на неё paintbox не забудте и image -- ваша стрелочка! зы-Shift это прежде всего множество из (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble), обращаться надо к ним через квадратные скобочки -- if shift = [ssShift] then ... if shift = [ssShift,ssAlt] then... пробуй Последний раз редактировалось psyke; 28.01.2007 в 14:21. |
25.02.2007, 12:20 | #7 |
Пользователь
Регистрация: 22.01.2007
Сообщений: 25
|
У меня назрел такой вопрос: при движении объекта с помощью клавиш появляется такой эффект, что, когда я зажимаю кнопку (например стрелочку), то объект сдвинется на n пикселов (где n это шаг, который задаётся заранее), затем остановится на, приблезительно, 0.5 с, а потом начинает нормально двигаться. Разумеется в игре такое движение неприемлемо, и хотелось бы знать как это устранить.
И второй вопрос заключается в том, что двигается объект слишком отрывисто (я предполагаю, что это из-за медленного действия компьютера, несмотря на то, что у меня очень мощная машина). Хотелось бы узнать, как сделать движение более плавным. |
26.02.2007, 01:31 | #8 |
Форумчанин
Регистрация: 01.12.2006
Сообщений: 241
|
причина задержки скорее всего в настройках винды (есть иакой параметр - сколько времени держиться клавиша зажатой прежде чем применить к ней залипание) Выход я вижу в том что бы отключить опцию в настройках виндовс (скорее всего через реестр), а по выходу из игры снова включать. Или создать обработчик OnKeyDown, который приводит логическую переменную движения в соответствуующую сторону в True и OnKeyUp - все переменные движения в False, а движения обрабатывать в таймере.
А торможением возможно называешь мерцание объекта, если да попробуй использоватьпараметр Form1.AlphaBlend:=True;
Програмисты - единственные люди, которым платят за исправления их же ошибок
|
02.03.2007, 16:26 | #9 | |
Средний прогер
Форумчанин
Регистрация: 16.01.2007
Сообщений: 123
|
Цитата:
Посмотри там последний пост, мож подойдет... |
|
04.03.2007, 08:46 | #10 | |
Пользователь
Регистрация: 22.01.2007
Сообщений: 25
|
Цитата:
Далее назрел вопрос. Как сделать, чтобы можно было вставить в программу какой-то код (не в процедуры, которые находятся в модуле). Например, я сделал пятнашки и нужно, чтобы условие победы отслеживалось не при каком-то событии, а постоянно. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хорошие уроки | Render | Общие вопросы Delphi | 9 | 15.09.2012 07:13 |
Акцесс вопросы новичков | Yaga | Помощь студентам | 4 | 02.06.2008 00:16 |
Учебники для новичков в програмировании | Рар | Общие вопросы Delphi | 6 | 08.01.2007 08:07 |