Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2014, 23:22   #1
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию Выстрел при нажатии на пробел

Пытаюсь разобраться с созданием игр. Бросил на форму TImage. Image1 перемещается по всей форме кнопками клавиатуры
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
case key of
vk_LEFT:if Image1.Left> 0 then Image1.Left:=Image1.Left-5;
VK_RIGHT:if Image1.Left<Form1.ClientWidth-Image1.Width-5 then Image1.Left:=Image1.Left+5;
vk_UP:if Image1.Top> 0 then Image1.Top:=Image1.Top-5;
VK_DOWN:if Image1.Top<Form1.ClientHeight-Image1.Height-5 then Image1.Top:=Image1.Top+5;
end;
end;
Теперь нужно сделать чтобы при нажатии на пробел происходил выстрел. Пуля должна лететь от средины TImage вправо. Я так понимаю что с помощью Canvas нужно нарисовать точку, или маленький круг и заставить его лететь вправо. Но как это сделать? Может кто пример даст? Помогите пожалуйста.
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 07.05.2014, 23:39   #2
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

[QUOTE]Может кто пример даст?[/QUOTE
Пример чего конкретно? Как нарисовать круг, или как его сдвинуть? Движения, это анимация. Анимация состоит из кадров. Кадры сменяются с течением времени, а значит в коде должен быть счётчик времени. Итог:
1) Таймер.
2) Image1.Canvas (все свойства есть в интернете)
3) фантазия.
doktor255 вне форума Ответить с цитированием
Старый 08.05.2014, 00:04   #3
demiancz
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 246
По умолчанию

Допустим я так делаю. Хотя может быть лучше будет и прямоугольник делать, а не элипс
Код:
Canvas.Ellipse(Image1.Left+32,Image1.Top+16,Image1.Left+64,Image1.Top+32);
Как заставить лететь вправо?
Смотреть фильмы HD Фильмы для планшетов
demiancz вне форума Ответить с цитированием
Старый 08.05.2014, 00:08   #4
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

В делфи ничего не летает. Можно анимировать изображение. Как анимировать, я уже написал. В каждом последующем кадре закрашивай предыдущее изображение фоновым цветом, и отрисовывай новое изображение со сдвигом в сторону движения.
doktor255 вне форума Ответить с цитированием
Старый 08.05.2014, 00:09   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...добавить в координаты дельту, а по клавишам изменять ее (инкремент/декремент). При необходимости по вертикали, добавляем дельту по Y.

Фон очищать при новой прорисовке.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 08.05.2014, 00:17   #6
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Пример анимации
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  p: Tpoint;
begin
 Timer1.Interval := 1;
 Randomize;
 p.X := Random(60);
 p.Y := Random(60);
 Image1.Canvas.FillRect(Canvas.ClipRect);
 Image1.Canvas.Ellipse(p.X - 15, p.Y - 15, p.X + 15, p.Y + 15);
end;
doktor255 вне форума Ответить с цитированием
Старый 08.05.2014, 11:08   #7
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Вообще-то, есть специальная тема, где собирается подобный учебный материал
http://programmersforum.ru/showthread.php?t=1206
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение при наведении и при нажатии Danik25 HTML и CSS 0 11.02.2014 18:38
Выстрел! Arsenx777 Мультимедиа в Delphi 6 01.04.2011 21:52
ормируется объект размером 30х30 и он должен при нажатии на клавишу,двигаться в 8ми направлениях..а при н Krasoto4ka Помощь студентам 0 22.05.2010 17:41
Как заменить обычний пробел на неразрывный пробел Jaroslav Microsoft Office Excel 2 05.05.2010 11:57
при клике на форму должен происходить выстрел (звук) wolf950 Помощь студентам 2 25.11.2008 15:51