![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
В общем. В лабеле появляется вопрос. Тыкни куда-то туда. И пользователь клацает. Та вот... Я без понятия как задать куда тыкать и как прописать условия.
Что то типа Кликни туда-то (в проге появляется координата) Затем пользователь кликает и программа определяет, если он попал на эту координату, то верно иначе не верно. Среда Delphi 10 |
|
#2
|
||||
|
||||
|
Верхний левый угол экрана это точка с координатами 0, 0.
|
|
#3
|
||||
|
||||
|
Цитата:
Код:
var iX, iY: integer; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Label2.Caption:= 'Координато: X ' + IntToStr(X) + ',Y ' + IntToStr(Y); end; procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (iX = X) and (iY = Y) then begin Label1.Caption:='Попал!'; iX:= Random(ClientWidth); iY:= Random(ClientHeight); end else Label1.Caption:= 'Промах...'; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Label1.Caption:= 'Тыкни: X ' + IntToStr(iX) + ',Y ' + IntToStr(iY); end; procedure TForm1.FormCreate(Sender: TObject); begin Randomize; iX:= Random(ClientWidth); iY:= Random(ClientHeight); Label1.Caption:= 'Тыкни: X ' + IntToStr(iX) + ',Y ' + IntToStr(iY); end; |
|
#4
|
|||
|
|||
|
Цитата:
Допустим, у меня есть картинка футбольного поля. И будет высвечиваться задание "нажмите на центр поля". В центре поля координат больше 20. Этот код будет отлавливать координаты вокруг координат центра поля? |
|
#5
|
||||
|
||||
|
Цитата:
если курсор на "краске"- жим в кружке,иначе не попал. Пересмотрите ТЗ, маловато инфы |
|
#6
|
|||
|
|||
|
Какую инфу дать?
Есть футбольное поле. У него есть центр. Цвет ВСЕХ линий на поле - Белый. Остальное поле - Зелёное. Моя задача: Высвечивается вопрос:"Где находится центр поля?" При нажатии на центр должно высвечиваться сообщение 'Верно' Иначе 'Не верно'. Моя проблема: Я не могу(не знаю как) записать все пиксели(координаты) этого кружка (цента поля) в массив и чтобы при нажатии на поле с массива т.е. проверялось if массив с координатами then 'Верно' else 'Не верно'. Мне предлагали через оператор for выделить квадрат и занести все координаты в массив и там проверить цвет если нажат был белый то верно иначе не верно. Но как этого сделать, я не знаю. На русском языке, пожалуйста ибо что такое ТЗ я тоже не знаю. |
|
#7
|
||||
|
||||
|
Цитата:
тогда в вашем случае самое простое решение: бросьте поверх вашего "Есть футбольное поле" пустые имиджы с размерами, совпадающими с габаритами "ВСЕХ линий" и больше для определения жима в районе "этого кружка (цента поля)" ничего и не нужно, событие произойдёт автоматом -) |
|
#8
|
|||
|
|||
|
Цитата:
Вот мой пример. Только надо сделать так, чтобы в условии было не 1 координата и через or другая, а сразу много. Я думал в массив это всё и через массив сравнивать есть такие коры или нет. Только как это точно записать я не знаю. Код:
procedure TForm4.Image1Click(Sender: TObject);
var P: TPoint;
begin
GetCursorPos(P);
P := Form4.ScreenToClient(P);
if (P.X=447) AND (P.Y=392) then ShowMessage('Верно! Это центр поля!')
else ShowMessage ('Не верно. Это не центр поля');
end; |