![]() |
|
![]() ![]() ![]() |
|
Lehon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
Добрый день. Подскажите пожалуйста, как сделать так, что бы при нажатии стрелок обьект (например обычная кнопка) перемещался по форме? И вообще как назначать приложению кнопки? (Если нажата W то, если -> то...).
(Гугл не рулит. Точнее рулит под dos приложения. Исходники обычной тупой змейки даже под консоль...) +вопрос который я задавал ранее, но мне не ответили... Не могу задать переменные сразу на всю программу. Вот:
[C++ Error] Unit1.cpp(11): E2451 Undefined symbol 'Edit1' [C++ Error] Unit1.cpp(12): E2451 Undefined symbol 'Edit2' [C++ Error] Unit1.cpp(17): E2303 Type name expected [C++ Error] Unit1.cpp(17): E2238 Multiple declaration for 'z' [C++ Error] Unit1.cpp(13): E2344 Earlier declaration of 'z' [C++ Error] Unit1.cpp(18): E2303 Type name expected и т.д. однотипные ошибки, затем [C++ Warning] Unit1.cpp(46): W8004 'z3' is assigned a value that is never used [C++ Warning] Unit1.cpp(46): W8004 'z2' is assigned a value that is never used [C++ Warning] Unit1.cpp(46): W8004 'z1' is assigned a value that is never used и тд Это сообщение отредактировал(а) Lehon - 7.10.2009, 19:16 |
|||
|
||||
SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
||||
|
||||
Lehon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
Внутрь кнопки? Так потому и хочу сразу задать глобальные переменные - слишком неэкономично в каждой кнопке писать переменные.
|
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Можно создать класс для глобальных переменных. И глобальным сделать один его экземпляр.
Вы сначала попробуйте змейку написать хоть под ДОС. Поверьте двигать кнопку намного проще, чем написать змейку. |
|||
|
||||
Lehon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
"Вы сначала попробуйте змейку написать хоть под ДОС. Поверьте двигать кнопку намного проще, чем написать змейку."
Ну, мне кнопка и нужна ) А не змейка. Я не понимаю ничего в консольном программировании, пусть это и один и тот же с++, мне именно приложение нужно ) С кнопкой двигающийся стрелками. "Можно создать класс для глобальных переменных. И глобальным сделать один его экземпляр." Попробую... |
|||
|
||||
Usper |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 13.4.2007 Репутация: 15 Всего: 15 |
Переменные можно объявить и глобально вне класса, однако присваивать им значения надо в конструкторе формы:
А двигать кнопку так: Разместить на форме кнопку, свойство формы KeyPreview установить в true, в обработчик FormKeyDown формы написать код:
Это сообщение отредактировал(а) Usper - 8.10.2009, 16:01 -------------------- На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник. |
||||
|
|||||
Lehon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
Благодарю, Помогло! )
ПС Вроде бы движение кнопки билдер нереализует. Шейпы двигаются, баттоны нет. Это сообщение отредактировал(а) Lehon - 8.10.2009, 15:43 |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
||||
|
||||
Usper |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 13.4.2007 Репутация: 15 Всего: 15 |
В примере было почему-то Key==0; надо, конечно же, Key=0; и вообще эту строчку можно выкинуть
![]() А кнопка нормально двигается. Это сообщение отредактировал(а) Usper - 8.10.2009, 16:03 -------------------- На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник. |
|||
|
||||
Lehon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
Еще вопрос!
![]() Вот код. Компилятор ругается (и правильно делает) на то что я вписал кеи в таймер, а так же не понимает что на месте x как раз должно быть имя члена Тшейп. Вопрос в том как правильно написать что б все работало? А именно: 1. Если жмем кнопку *** то на месте х в Shape1->x; Ставиться Top либо Left; Следовательно, в зависимости от того какую кнопку мы нажали, шейп раз в **милисекунд сдвигается в ту сторону какую кнопку мы нажали. 2. Как сдвигать не на ++ а на +20 к примеру? (У меня такое не работает...).
[C++ Error] Unit1.cpp(34): E2451 Undefined symbol 'Key' [C++ Error] Unit1.cpp(38): E2316 'x' is not a member of 'TShape' |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Ох...
![]() Лучше скажите, что вы хотите при помощи таймера сделать? Добавлено через 3 минуты и 40 секунд Если я правильно понял, то заведите 2 переменные в классе: DirectionX и DirectionY По перехвату соответствующей кнопки заносите в них значение сдвига, например: нажата кнопка влево - DirectionX=-1, кнопка вправо - DirectionX = 1 и т.п. Можно еще фичу сделать: Нажали кнопку влево - уменьшили DirectX на 1, а вправо - увеличили. Тогда скорость движения менять будем. А по таймеру - просто прибавляем к Left - DirectionX, а к Top DirectionY |
|||
|
||||
Lehon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
Вообще я хотел научиться управлять клавишами обьектом, а теперь уже захотел написать змейку ) Таймер - обеспечение постоянного движения с постоянной скоростью, желательно так: каждые 0,5 или 1 секунду (пока не решил) происходит сдвиг на 1 длину сегмента змейки ( в моем случае 20). А стрелками теперь я задаю лишь направление движения по идее...
Про DirectionX и Y непонял, но попробую... Это сообщение отредактировал(а) Lehon - 8.10.2009, 16:50 |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
||||
|
||||
Lehon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
"Если не поняли, то как вы собираетесь пробовать? На вкус?
Лучше скажите что непонятно - дабы не плодить лишнего кода. " Да, ни на вкус ни на цвет не получилось ) Гугл вообще мне директх предлагает ))) Мне непонятно что за переменные такие DirectionX и Y и как вообще это запрогать. Я работал раньше тока с дабле и инт... Прогаю 3или 4ый день всего ) |
|||
|
||||
Usper |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 13.4.2007 Репутация: 15 Всего: 15 |
Anikmar, предлагает создать переменные DirectionX и DirectionY и в обработчике FormKeyDown присваивать им соответствующие значения. А по таймеру, в соответствии со значениями в этих переменных, делать соответствующий сдвиг. Я в своё время при написании змейки тоже руководствовался похожим принципом, только у меня была одна переменная (см. вложение). За код прошу не пинать, писалось всё на заре программерской деятельности
![]() Это сообщение отредактировал(а) Usper - 16.10.2009, 07:45 Присоединённый файл ( Кол-во скачиваний: 54 ) ![]() -------------------- На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |