-
Вобщем нужно чтобы в крестиках-ноликах в случайных компонентах panel свойство Caption менялось на 'o' как только ставиш 'x' ,помогите реализовать? была такая задумка типа:
if panel1.caption:='' then begin
panel1.Caption:='x';
panel3.Caption:='o';
end;
но думаю с этим очень легко запутаться,подскажите как лучше сделать? -
Алексей Генадьевич (21.08.10 00:50) [1]Можно попробовать так:var
a: array[1..9] of char;
procedure XO;
begin
//если все поля заполнены, то конец игры
if (a[1]<>'')and(a[2]<>'')and(a[3]<>'')and(a[4]<>'')and(a[5]<>'')and(a[6]<>'')and(a [8]<>'')and(a[9]<>'') then begin
ShowMessage('Game Over');
exit;
end;
while (a[i]<>'') do i := random(9)+1;
a[i] := 'o';
panel1.Caption := a[1];
panel2.Caption := a[2];
panel3.Caption := a[3];
panel4.Caption := a[4];
panel5.Caption := a[5];
panel6.Caption := a[6];
panel7.Caption := a[7];
panel8.Caption := a[8];
panel9.Caption := a[9];
end;
В OnClick каждой панели делаешь следующее (пример для панели1):procedure Form1.Panel1OnClick(Sender: TObject);
begin
Panel1.Caption := 'x';
XO;
Panel1.Enabled := false;
end;
Код очень сыроват и не очень красивый, но ты учишься, как я понял, и так будет нагляднее. -
Алексей Генадьевич (21.08.10 00:57) [2]*Поправочка:
В OnClick каждой панели делаешь следующее (пример для панели1):procedure Form1.Panel1OnClick(Sender: TObject);
begin
a[1] := 'x';
Panel1.Caption := a[1];
XO;
Panel1.Enabled := false;
end;
и в процедуре XO поменяй:panel1.Caption := a[1];
...
panel9.Caption := a[9];
наcase i of
1: begin panel1.Caption := a[1]; panel1.enabled := false; end;
2: begin panel2.Caption := a[2]; panel2.enabled := false; end;
...
9: begin panel9.Caption := a[9]; panel9.enabled := false; end;
end;
Это чтобы защита от повторных нажатий была. =) -
case i of
begin ///тут ругается panel1.Caption := a[1]; panel1.enabled := false; end; -
Удалено модератором
Примечание: Создание пустых сообщений -
@!!ex © (23.08.10 02:38) [5]Как страшно жить...
а зачем коробка передач от ВАЗа используется для прикручивания руля к вертолету?? -
antonn © (23.08.10 14:02) [6]да ладно, в моих первых крестиках-ноликах в качестве массивов веса следующего хода юзались три или четыре Стрингрида (как и само поле видимое), а в качестве линейных массивов с сортироваными выборками - пачка ТМемо. visible:=false у них, конечно, но работало :))