Затруднения |
MegaMen | Дата: Суббота, 07.02.2009, 20:18 | Сообщение # 16 |
Ранг 5
Группа: Проверенные
Сообщений: 47
Награды: 0
Репутация: 5
Статус: Offline
| Quote (Admin) Смотри событие onKeyDown у изображения такого собыия нет.. я думаю надо через форму.. а вот код: Code procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin case key of 'a' : image1.left := image1.left - 3; // двигаем влево 'd' : image1.left := image1.left + 3; // двигаем вправо 'w': image1.top := image1.top - 3; // двигаем наверх 's': image1.top := image1.top + 3; // вниз end; end; только не забывай что a,w,d,s могут быть и русские и другой раскладки... вот более рабочий код: Code procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin case key of 'a','A','ф','Ф' : image1.left := image1.left - 3; // двигаем влево 'd','D','в','В' : image1.left := image1.left + 3; // двигаем вправо 'w','W','ц','Ц': image1.top := image1.top - 3; // двигаем наверх 's','S','ы','Ы': image1.top := image1.top + 3; // вниз end; end;
Чтобы добиться цели, надо прежде всего её добиваться.
Сообщение отредактировал MegaMen - Суббота, 07.02.2009, 20:27 |
|
| |
|
Admin | Дата: Суббота, 07.02.2009, 20:24 | Сообщение # 17 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| А я про че!
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
MegaMen | Дата: Суббота, 07.02.2009, 20:29 | Сообщение # 18 |
Ранг 5
Группа: Проверенные
Сообщений: 47
Награды: 0
Репутация: 5
Статус: Offline
| ну может человек не поймет и будет искать событие не в том месте.. Добавлено (07.02.2009, 17:29) --------------------------------------------- p.s. keypress думаю лучше
Чтобы добиться цели, надо прежде всего её добиваться.
|
|
| |
|
GaNDyPaC | Дата: Суббота, 07.02.2009, 20:47 | Сообщение # 19 |
Ранг 4
Группа: Проверенные
Сообщений: 86
Награды: 0
Репутация: 1
Статус: Offline
| Спс!А как сделать чтоб противник двигался сам по себе куда хочет? Как другой картинке дать движение рандомно?
DELPHI USER
|
|
| |
|
MegaMen | Дата: Суббота, 07.02.2009, 20:53 | Сообщение # 20 |
Ранг 5
Группа: Проверенные
Сообщений: 47
Награды: 0
Репутация: 5
Статус: Offline
| Code procedure ImgFromTo(Img: TImage; Img2: TImage); begin if Img2.Left > Img.Left then Img2.Left := Img2.Left-1 else if Img2.Left < Img.Left then Img2.Left := Img2.Left+1;
if Img2.Top > Img.Top then Img2.Top := Img2.Top-1 else if Img2.Top < Img.Top then Img2.Top := Img2.Top+1; end; Code procedure TForm1.Timer1Timer(Sender: TObject); begin ImgFromTo(Image1,Image2); end; я думаю ты понял что куда Добавлено (07.02.2009, 17:50) --------------------------------------------- p.s. тут одна картинка движется к другой.. Добавлено (07.02.2009, 17:53) --------------------------------------------- чтобы рандомно, надо сделать так: Code procedure ImgRandom(Img: TImage); begin
Img.Left := Img.Left + Random(3)-6; Img.Top := Img.Top+ Random(3)-6;
end;
procedure TForm1.Timer1Timer(Sender: TObject); begin ImgRandom(Image1); end;
Чтобы добиться цели, надо прежде всего её добиваться.
|
|
| |
|
GaNDyPaC | Дата: Суббота, 07.02.2009, 21:03 | Сообщение # 21 |
Ранг 4
Группа: Проверенные
Сообщений: 86
Награды: 0
Репутация: 1
Статус: Offline
| Ошибка [Error] Unit2.pas(143): Undeclared identifier: 'FormKeyPress' [Error] Unit2.pas(143): ';' expected but '(' found [Error] Unit2.pas(146): ';' expected but ')' found [Error] Unit2.pas(149): Undeclared identifier: 'image9'
DELPHI USER
|
|
| |
|
Admin | Дата: Суббота, 07.02.2009, 21:06 | Сообщение # 22 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| MegaMen, не "-6" а "-1". Поясню. В таком варианте будет всегда двигаться влево и вверх. Максимум может выпасть 2 если от 2 отнять 1 (в моем варианте) то будет 1. Если выпадет 0 то будет -1. Вот и будет то туда то сюда дергаться. Randomize не забуть вызвать. Чтобы инициализировать генератор случайных чисел. Иначе выпадать будет одно и тоже.
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
Admin | Дата: Суббота, 07.02.2009, 21:07 | Сообщение # 23 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| GaNDyPaC, а ты че просто вставил процедуру?
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
GaNDyPaC | Дата: Суббота, 07.02.2009, 21:09 | Сообщение # 24 |
Ранг 4
Группа: Проверенные
Сообщений: 86
Награды: 0
Репутация: 1
Статус: Offline
| Нет я тыкал 2 раза на форму. Пробую код.Тоесть var key:char; И потом case key of Но при этом запускаеться.Я нажимаю влево,вправо ни чего нет.....
DELPHI USER
|
|
| |
|
MegaMen | Дата: Суббота, 07.02.2009, 21:15 | Сообщение # 25 |
Ранг 5
Группа: Проверенные
Сообщений: 47
Награды: 0
Репутация: 5
Статус: Offline
| Quote (Admin) MegaMen, не "-6" а "-1". Поясню. В таком варианте будет всегда двигаться влево и вверх. Максимум может выпасть 2 если от 2 отнять 1 (в моем варианте) то будет 1. Если выпадет 0 то будет -1. Вот и будет то туда то сюда дергаться. я на бум циферки написал...)) Quote (GaNDyPaC) Ошибка [Error] Unit2.pas(143): Undeclared identifier: 'FormKeyPress' [Error] Unit2.pas(143): ';' expected but '(' found [Error] Unit2.pas(146): ';' expected but ')' found [Error] Unit2.pas(149): Undeclared identifier: 'image9' в Object Inspector, в вкладке Events (События) ищешь OnKeyPress. Кликаешь 2 раза, создается процедура. Туда и надо. Добавлено (07.02.2009, 18:13) ---------------------------------------------
Quote (GaNDyPaC) var key:char; эта переменная идет вместе с процедурой OnKeyPress Добавлено (07.02.2009, 18:15) --------------------------------------------- p.s. ты когда тыкаешь 2 раза на форму, создаешь процедуру OnFormCreate, а надо OnKeyPress//
Чтобы добиться цели, надо прежде всего её добиваться.
|
|
| |
|
Admin | Дата: Суббота, 07.02.2009, 21:16 | Сообщение # 26 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| /publ/28-1-0-131 Тут описания основных свойств и событий формы. Может быть требуется объяснение зачем нужны события и как с ними обращаться? Про я думаю, что это понятно. Сам непомню, вроде когда изучал было понятно. Или это сейчас так кажется!
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
MegaMen | Дата: Суббота, 07.02.2009, 21:30 | Сообщение # 27 |
Ранг 5
Группа: Проверенные
Сообщений: 47
Награды: 0
Репутация: 5
Статус: Offline
| Quote (Admin) Может быть требуется объяснение зачем нужны события и как с ними обращаться? как видно требуются 2GaNDyPaC почитай.. как прочитаешь попробуй, если не получится отпишись что не получается и каковы твои действия...
Чтобы добиться цели, надо прежде всего её добиваться.
|
|
| |
|
GaNDyPaC | Дата: Суббота, 07.02.2009, 22:30 | Сообщение # 28 |
Ранг 4
Группа: Проверенные
Сообщений: 86
Награды: 0
Репутация: 1
Статус: Offline
| Окей.Просто я delphi учусь так,что много спрашиваю и пробую.А учителя в которые препадают мне pascal не знаю,а точнее плохо знают Delphi.Они больше на c++ сидят..... Короче попробую....
DELPHI USER
|
|
| |
|
Admin | Дата: Суббота, 07.02.2009, 22:46 | Сообщение # 29 |
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
| Это хорошо что спрашиваешь! Не будеш спрашивать ничего и не узнаешь. Помаленьку наберешься опыта, потом легче самому разбираться будет.
Не оказываю помощь через личные сообщения и ICQ
|
|
| |
|
MegaMen | Дата: Воскресенье, 08.02.2009, 19:55 | Сообщение # 30 |
Ранг 5
Группа: Проверенные
Сообщений: 47
Награды: 0
Репутация: 5
Статус: Offline
| Quote (GaNDyPaC) А учителя в которые препадают мне pascal не знаю,а точнее плохо знают Delphi.Они больше на c++ сидят..... а что же они вас c++ не учат? ведь когда знаешь хотябы один язык, второй уже учится без проблем.. Проверено... останется узнать только структуру программы, типы, объявления и синтаксис.. А остальное ты уже как-бы знаешь.. Все языки это связывает..
Чтобы добиться цели, надо прежде всего её добиваться.
|
|
| |
|