Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
KaKTyc_MyTareH
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 18
1

Сделать так, чтобы при щелчке мышью на одной из фигурок управление передавалось на эту фигуру

26.03.2011, 12:32. Просмотров 1593. Ответов 10
Метки нет (Все метки)

здравствуйте, надеюсь на помощь, вопрос такой
Дано игровое поле на катором расположено 20 фигурок (поле сделано в графическом редакторе), делать ход нужно одной из этих фигурок (фигурки тоже сделаны в графическом редакторе), вопрос в том как сделать чтобы при щелчке мышью на одной из фигурок управление передавалось на эту фигуру, т.е. если нужно сдвинуть первую фигуру, то щелкаем по ней и управляем ей, если же фигуру под номером 2, то после щелчка мыши по 2ой фигурке управление передавалось ей.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2011, 12:32
Ответы с готовыми решениями:

Как сделать так, чтобы в JTextField при нажатие кнопки передавалось ее значение?
Нужно очень, помогите пожалуйста

Как сделать так чтобы value в форме стирался, при щелчке мыши по полю
Господа, здравствуйте ! Подскажите пожалуйста как можно реализовать чтобы в форме удалялся value...


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

Или воспользуйтесь поиском по форуму:
10
sanya923
69 / 69 / 43
Регистрация: 26.01.2011
Сообщений: 160
26.03.2011, 13:01 2
Запихнуть каждую фигурку в Image. Если у вас, например, курсор над 7-ой фигурой, то вы к ней и обратитесь.
0
KaKTyc_MyTareH
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 18
26.03.2011, 13:36  [ТС] 3
фигуры через Image и сделаны, чтобы ими управлять кнопки сделаны, там для движения фигуры шаг задан в виде
Delphi
1
2
3
4
5
6
if(k1.Left-66)>=460 then
if not ((k1.left-66=526) and (k1.top=455)) then
if not ((k1.left-66=526) and (k1.top=521)) then
if not ((k1.left-66=526) and (k1.top=191)) then
if not ((k1.left-66=526) and (k1.top=125)) then
k1.Left:=k1.Left-66;
где k1- это имя фигуры
и вот нужно сделать так чтобы при выборе определенной фигуры она двигалась по этому же условию, т.е. чтобы "k1" поменялось на "k2" например
0
sanya923
69 / 69 / 43
Регистрация: 26.01.2011
Сообщений: 160
26.03.2011, 15:11 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Image2: TImage;
    procedure Button1Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Figura: TImage;
 
implementation
 
{$R *.dfm}
 
//кнопка для смещения вправо
procedure TForm1.Button1Click(Sender: TObject);
begin
  Figura.Left:=Figura.Left+10;  
end;
 
//выбор 1-ой фигуры кликом по ней
procedure TForm1.Image1Click(Sender: TObject);
begin
  Figura:=Image1;
end;
 
//выбор 2-ой фигуры кликом по ней
procedure TForm1.Image2Click(Sender: TObject);
begin
  Figura:=Image2;
end;
 
end.
1
KaKTyc_MyTareH
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 18
30.03.2011, 09:58  [ТС] 5
спасибо за помощь)
ещё вот вопрос, как я уже говорил поле сделано графически, состоит оно из клеток, можно ли как нибудь задать клеткам поля значения вида А[i,j], ну т.е. чтобы ячейки были сделаны как двумерныймассив? если можно то как?
0
Евгений В
890 / 652 / 131
Регистрация: 01.03.2010
Сообщений: 1,241
30.03.2011, 10:45 6
KaKTyc_MyTareH,
Твой вопрос похоже полностью пересекается с темой Создать класс шахматной фигуры, присвоить ей картинку и разместить ее на доске
Но если ты не хочешь использовать поле из Panel, как в этой ссылке сделано, а хочешь рисовать его, то вместо массива из TPanel можно сделать массив из TImage. Из этого массива сделай поле, совпадающее с картинкой. Идея в том, что пустой Image прозрачный, и его не видно будет на твоем графическом поле.
0
KaKTyc_MyTareH
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 18
30.03.2011, 12:33  [ТС] 7
вот это как раз и нужно через TImage, только не пойму это мне номера ячеек например [1,1] [1,2] в имени элемента TImage нужно писать или где?
0
DedBoroda
ComfyMobile
88 / 88 / 8
Регистрация: 04.11.2010
Сообщений: 376
30.03.2011, 13:35 8
это пятнашки?
0
KaKTyc_MyTareH
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 18
30.03.2011, 13:41  [ТС] 9
нет, игра 20 кур и 2 лисы
0
reb00t365
7 / 7 / 2
Регистрация: 04.03.2011
Сообщений: 58
30.03.2011, 20:06 10
KaKTyc_MyTareH,
Юзай статические массивы, типа figure[k], где k номер фигуры...
0
KaKTyc_MyTareH
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 18
30.03.2011, 21:36  [ТС] 11
reb00t365,
несовсем понял о чем ты, но помоему это не то=) нужен именно двумерный массив, просто это первое что я пишу на делфи, работу уже скоро сдавать надо, а я запарился на том как сделать массив, вот Евгений В, говорил нащет TImage, я их расставил, как вы и говорили когда они пустые- они прозрачные, но как мне теперь все это обозначить в массив?
0
30.03.2011, 21:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.