Конференция "Игры" » Помогите с игрой! [Delphi, Windows]
 
  • ufowOw © (20.08.10 22:20) [0]
    Вобщем нужно чтобы в крестиках-ноликах в случайных компонентах 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;



    Это чтобы защита от повторных нажатий была. =)
  • ufowOw © (21.08.10 01:29) [3]
    case i of
    begin ///тут ругается panel1.Caption := a[1]; panel1.enabled := false; end;

  • ufowOw © (21.08.10 22:53) [4]
    Удалено модератором
    Примечание: Создание пустых сообщений
  • @!!ex © (23.08.10 02:38) [5]
    Как страшно жить...
    а зачем коробка передач от ВАЗа используется для прикручивания руля к вертолету??
  • antonn © (23.08.10 14:02) [6]
    да ладно, в моих первых крестиках-ноликах в качестве массивов веса следующего хода юзались три или четыре Стрингрида (как и само поле видимое), а в качестве линейных массивов с сортироваными выборками - пачка ТМемо. visible:=false у них, конечно, но работало :))
 
Конференция "Игры" » Помогите с игрой! [Delphi, Windows]
Есть новые Нет новых   [134427   +37][b:0][p:0.001]