Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/46: Рейтинг темы: голосов - 46, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26

Картинка которая двигается за курсором!

22.10.2013, 22:09. Показов 9505. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день , делал вот свою курсовую игру , игра типа " поймать все что падает " , и столкнулся с проблемой.
Когда курсор попадает на Image , он не видит координаты , то есть выходит так :
Delphi
1
2
3
4
5
procedure TMainForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
car.Left:=x;
end;
что мой "машина" останавливается , по скольку координаты нету , когда курсор над Image.
Но , если я нажимаю на пустом месте формы ЛКМ , и держу ее то "машина" двигается , даже если курсор находится на Image.
для ясности скину весь код игры которую я нашел в интернете .
Может кто знает , как сделать что бы моя "машина" двигалась за курсором по ОХ , при этом без рывков ?
Вложения
Тип файла: zip race.zip (31.4 Кб, 32 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.10.2013, 22:09
Ответы с готовыми решениями:

Lable не двигается вместе с курсором при перетаскивании его на Panel
Lable не двигается вместе с курсором при перетаскивании его на Panel. Проект прилагается.

Картинка не двигается
Привет,привет.Хм возникла проблемка с кодом: package Game; import java.awt.Color; import java.awt.Dimension; import...

Картинка не двигается влево
Помогите, пожалуйста разобраться, не пониманию, почему первая картинка не двигается влево. HTML: <div id="cats"> ...

53
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26
23.10.2013, 00:18  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Lirrk Посмотреть сообщение
Теперь вернитесь к новому проекту и на форму бросьте имиджлист

Добавлено через 38 секунд
он в закладке Win32

Добавлено через 1 минуту
в его свойставх установите максимальный размер картинки

Добавлено через 14 секунд
он у вас 32

Добавлено через 41 секунду
там параметры высота и ширина надеюсь по английски знаете как?
По стандарту стояло 16 , нужно изменить высоту и ширину на 32 ?
0
Заблокирован
23.10.2013, 00:20
в драйвингстиле поставьте транспарент. Чтоб вырезался чёрный фон
затем щёлкните по компоненту. Откроется окно. там адд и загрузите вашу картинку. Она встанет под индексом 0

Добавлено через 41 секунду
ну конечно, иначе картинка не встанет в полный размер

Добавлено через 46 секунд
Ну и в проекте у формы есть MouseMove
1
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26
23.10.2013, 00:21  [ТС]
Цитата Сообщение от Lirrk Посмотреть сообщение
в драйвингстиле поставьте транспарент. Чтоб вырезался чёрный фон
затем щёлкните по компоненту. Откроется окно. там адд и загрузите вашу картинку. Она встанет под индексом 0

Добавлено через 41 секунду
ну конечно, иначе картинка не встанет в полный размер

Добавлено через 46 секунд
Ну и в проекте у формы есть MouseMove
эт сделал
0
Заблокирован
23.10.2013, 00:24
Кстати. я имиджлист переименовал в IL1

Добавлено через 28 секунд
Delphi
1
2
3
4
5
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 IL1.Draw(Form1.Canvas,X-16,Y-16,0,True);
end;
Добавлено через 14 секунд
Это всё, запускайте проект

Добавлено через 45 секунд
там машинка стиратся не будет. но всему своё время

Добавлено через 20 секунд
тепрь машинка двигается? И имиджей никаких

Добавлено через 26 секунд
Остальные картинки загрузите туда-же но потом

Добавлено через 52 секунды
Я вам расскажу что нужно делать, чтобы не было мельканий и чтобы машинка оставалась одной
1
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26
23.10.2013, 00:24  [ТС]
Цитата Сообщение от Lirrk Посмотреть сообщение
Кстати. я имиджлист переименовал в IL1

Добавлено через 28 секунд
Delphi
1
2
3
4
5
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 IL1.Draw(Form1.Canvas,X-16,Y-16,0,True);
end;
Добавлено через 14 секунд
Это всё, запускайте проект

Добавлено через 45 секунд
там машинка стиратся не будет. но всему своё время

Добавлено через 20 секунд
тепрь машинка двигается? И имиджей никаких

Добавлено через 26 секунд
Остальные картинки загрузите туда-же но потом
Ну теперь я вижу как картинка бегает за мышкой , и след ее движения
0
Заблокирован
23.10.2013, 00:27
В принципе можете нарисовать фон какой угодно. Жорогу, поле с травкой. Можно тайлы сделать

Добавлено через 35 секунд
ну теперь надо след убрать

Добавлено через 25 секунд
И займёмся битмапом

Добавлено через 42 секунды
его нужно объявить, создать, и при выходе из программы уничтожить
1
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26
23.10.2013, 00:27  [ТС]
Цитата Сообщение от Lirrk Посмотреть сообщение
В принципе можете нарисовать фон какой угодно. Жорогу, поле с травкой. Можно тайлы сделать

Добавлено через 35 секунд
ну теперь надо след убрать
правда я загружал в имейджлист 6 картинок, и у меня только моя картинка под номером 0 , бегает за мышкой, а как сделать что бы след стирался, я так понял уже простым .Reflesh . Repeint тут не обойтись ?
0
Заблокирован
23.10.2013, 00:32
Объявляем
Var
B1:TBitmap;

Добавлено через 2 минуты
Щас я у себя состряпаю, чтоб легче было обьяснять
1
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26
23.10.2013, 00:32  [ТС]
Цитата Сообщение от Lirrk Посмотреть сообщение
Объявляем
Var
B1:TBitmap;
сделал
0
Заблокирован
23.10.2013, 00:58
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, ExtCtrls;
 
type
  TForm1 = class(TForm)
    IL1: TImageList;
    Timer1: TTimer;
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  B1,B2:TBitmap;
  X_,Y_:Integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
X_:= X;
Y_:= Y;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Self.DoubleBuffered := true;//Âêëþ÷àåì äâîéíóþ áóôåðèçàöèþ ôîðìû
B1:=TBitmap.create;
B1.Width:=Form1.ClientWidth;
B1.Height:=Form1.ClientHeight;
B2:=TBitmap.create;
B2.Width:=Form1.ClientWidth;
B2.Height:=Form1.ClientHeight;
 
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
B1.Free;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 B1.Canvas.Draw(0,0,B2);
 IL1.Draw(B1.Canvas,X_-16,Y_-16,0,True);
 Form1.Invalidate;
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.Canvas.Draw(0,0,B1);
end;
 
end.
Добавлено через 23 секунды
На форму таймер воткните
1
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26
23.10.2013, 00:58  [ТС]
Цитата Сообщение от Lirrk Посмотреть сообщение
Объявляем
Var
B1:TBitmap;

Добавлено через 2 минуты
Щас я у себя состряпаю, чтоб легче было обьяснять
Вы все еще со мной ?
0
Заблокирован
23.10.2013, 00:59
и интервал сделайте 15 ни или какой захотите

Добавлено через 25 секунд
а куда я денусь?
1
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26
23.10.2013, 01:14  [ТС]
Цитата Сообщение от Lirrk Посмотреть сообщение
и интервал сделайте 15 ни или какой захотите

Добавлено через 25 секунд
а куда я денусь?
так, теперь как я понял, следа у меня нет ? а фон чисто белый ?
0
Заблокирован
23.10.2013, 01:19
фон можете сделать какой хотите

Добавлено через 28 секунд
можете даже картинку нарисовать

Добавлено через 1 минуту
Вот в таймер воткните
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//
 B1.Canvas.Draw(0,0,B2);
 If X_-16 <= 0 then X_:= 16;
 if X_+16 >= B2.Width then X_:= B2.Width - 16;
 IL1.Draw(B1.Canvas,X_-16, B1.Height-32,0,True);
 Form1.Invalidate;
end;
И посмотрите что будет
1
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26
23.10.2013, 01:22  [ТС]
Цитата Сообщение от Lirrk Посмотреть сообщение
фон можете сделать какой хотите

Добавлено через 28 секунд
можете даже картинку нарисовать

Добавлено через 1 минуту
Вот в таймер воткните
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//
 B1.Canvas.Draw(0,0,B2);
 If X_-16 <= 0 then X_:= 16;
 if X_+16 >= B2.Width then X_:= B2.Width - 16;
 IL1.Draw(B1.Canvas,X_-16, B1.Height-32,0,True);
 Form1.Invalidate;
end;
И посмотрите что будет
Да это то как я и хотел изначально, но я так понимаю с перерисовкой , вряд ли я смогу это вставить в тот код что у меня был ?
0
Заблокирован
23.10.2013, 01:25
Рисовать надо на B2

Добавлено через 52 секунды
А нафиг вам нужен тот код?
1
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26
23.10.2013, 01:26  [ТС]
Цитата Сообщение от Lirrk Посмотреть сообщение
Рисовать надо на B2

Добавлено через 52 секунды
А нафиг вам нужен тот код?
Реализация падения картинок, или вы еще не все секреты поведали ?
0
Заблокирован
23.10.2013, 01:30
какой рисунок хотите?

Добавлено через 17 секунд
Да точно так же

Добавлено через 12 секунд
У нас же таймер есть

Добавлено через 56 секунд
Сколько там у вас картинок? Я так понимаю у каждой своя скорость?

Добавлено через 1 минуту
Скажем так. у вас есть игровое поле, то есть дорога. Размер картинок 32
1
0 / 0 / 0
Регистрация: 03.04.2013
Сообщений: 26
23.10.2013, 01:30  [ТС]
Цитата Сообщение от Lirrk Посмотреть сообщение
какой рисунок хотите?

Добавлено через 17 секунд
Да точно так же

Добавлено через 12 секунд
У нас же таймер есть
Не ну смотрите , суть игры такова , уровни у нас есть, но это не сложно, я просто с каждый следующим уровнем добавляю скорость .
Важно то что у меня должны падать картинки, ну изображения, там допустим "кексы" и я их ловлю, в момен столкновения картинки закрепленной к курсору и кекса, у меня засчитывается очко, ну просто игра.
Вот и я вся проблема заключается в реализации падения случайно моих кексов ,
0
Заблокирован
23.10.2013, 01:38
Значит нужно сначала чётко размеры определить

Добавлено через 1 минуту
я и говорю , скажем у вас ширина поля 16 клеток по 32 пикселя

Добавлено через 51 секунду
В любой из 16 клеток в самом верхнем ряду может появится тот или иной блин. как вы называете

Добавлено через 2 минуты
тут очень просто всё. сначала один попробуйте

Добавлено через 3 минуты
Ты вообще знаешь что такое массив и запись?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2013, 01:38

Картинка img не двигается
Здравствуйте!Я только учусь, поэтому строго попрошу не судить.Решил сделать слайдер на сайт. Нашел видео на youtube, где показывается, как...

Drag n drop рядом с курсором картинка
Как сделать чтобы при перетаскивании, вместо плюсика была своя картинка. Прикрепил изображения, (1) как сейчас, (2) как хотелось бы.

Как сделать кнопку которая рандомно двигается ?
Всем привет ) в чем суть, 1- мне нужно чтобы кнопка на форме двигалась сама по себе как ей вздумается, 2- нужно чтобы при активации...

Как вращать картинку в delphi, которая двигается командой Timer
Прошу помочь мне. Буду благодарен, за каждый ответ. Суть задачи такова, надо создать псевдо-анимацию, которая выполняется с помощью...

Плитка, которая передвигается курсором мыши
Не могу понять какой скрипт используется для сайта http://www.k2.pl/#!/en/awards/mode/tiles/ Благодаря этого скрипта, курсором мыши...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru