Kolko i krzyzyk ;/

0

Witam panów...

Pisze do was z problemem z którym męcze sie bardzo długo :-8 (Wesoledi najlepiej wie :) )

Moje pytanie brzmi:

Jak w najprostszy sposób zrobić wykrywanie zwycięstwa Kólka lub Krzyzyka..??

Wiem że to żenujące, że pytam o takie rzeczy ale wybaczcie...

0
procedure tMain.CheckIt;
begin

// Sprawdzenie wszystkich moźliwych kombinacji wygranej (metodą czołgową :()


  if (b4.Caption = 'X') and (b5.Caption = 'X') and   {   }
     (b6.Caption = 'X') or (b4.Caption = 'O') and    {###}
     (b5.Caption = 'O') and (b6.Caption = 'O')then   {   }
      begin win:=true;Winner;exit;end;

  if (b1.Caption = 'X') and (b2.Caption = 'X') and   {###}
     (b3.Caption = 'X') or (b1.Caption = 'O') and    {   }
     (b2.Caption = 'O') and (b3.Caption = 'O')then   {   }
      begin win:=true;Winner;exit;end;

  if (b1.Caption = 'X') and (b5.Caption = 'X') and   {#  }
     (b9.Caption = 'X') or (b1.Caption = 'O') and    { # }
     (b5.Caption = 'O') and (b9.Caption = 'O')then   {  #}
      begin win:=true;Winner;exit;end;

  if (b1.Caption = 'X') and (b4.Caption = 'X') and   {#  }
     (b7.Caption = 'X') or (b1.Caption = 'O') and    {#  }
     (b4.Caption = 'O') and (b7.Caption = 'O')then   {#  }
      begin win:=true;Winner;exit;end;

  if (b7.Caption = 'X') and (b8.Caption = 'X') and   {   }
     (b9.Caption = 'X') or (b7.Caption = 'O') and    {   }
     (b8.Caption = 'O') and (b9.Caption = 'O')then   {###}
      begin win:=true;Winner;exit;end;

  if (b3.Caption = 'X') and (b6.Caption = 'X') and  {  #}
     (b9.Caption = 'X') or (b3.Caption = 'O') and   {  #}
     (b6.Caption = 'O') and (b9.Caption = 'O') then {  #}
      begin win:=true;Winner;exit;end;

  if (b3.Caption = 'X') and (b5.Caption = 'X') and  {  #}
     (b7.Caption = 'X') or (b3.Caption = 'O') and   { # }
     (b5.Caption = 'O') and (b7.Caption = 'O') then {#  }
      begin win:=true;Winner;exit;end;

  if (b2.Caption = 'X') and (b5.Caption = 'X') and  { # }
     (b8.Caption = 'X') or (b2.Caption = 'O') and   { # }
     (b5.Caption = 'O') and (b8.Caption = '0')then  { # }
      begin win:=true;Winner;end;      

end;

b[numer] to obiekt typy TSpeedButton
Winner to procedura pokazująca MBox'a

0

No więc tak:

Zwycięstwo następuje wtedy gdy ustawiny linie prostą:
poziomą ,pionową,ukośną.

linia pozioma- punkty na jednej lini mąją stałą współrzędną y
linia pionowa- punkty na jednej lini mają stałą współrzędną x
linia ukośna - punkty mąją stałą sume lub różnice współrzędnych

teraz trzeba to tylko sprawdzić

Pozdrawiam.

0

No więc tak:

Zwycięstwo następuje wtedy gdy ustawiny linie prostą:
poziomą ,pionową,ukośną.

linia pozioma- punkty na jednej lini mąją stałą współrzędną y
linia pionowa- punkty na jednej lini mają stałą współrzędną x
linia ukośna - punkty mąją stałą sume lub różnice współrzędnych

teraz trzeba to tylko sprawdzić

Pozdrawiam.

Czyżbyś nie zauważył mojego kodu, jest tu od dwóch godzin !!

0

Sorry nie analizowałem go.

0

Milka, popatrz na górę, jest tam taki napis:

4programmers.net :: Forum :: <font size="18">C/C++/Java</span>

0

Milka, popatrz na górę, jest tam taki napis:

4programmers.net :: Forum :: C/C++/Java

to akurat wydaje mi sie malo istotne - nawet czlowiek z IQ 80 poradzi sobie z przetlumaczeniem tego na C/C++/Java... - Milka po prostu zaprezentowal algorytm - rownie dobrze mogl to zrobic w pseudokodzie lub na schematach ablokowych - liczy sie idea a nie jezyk...

0

Zakładajśc że pole gry wyglada tak:

678
345
012

ciało funkcji:

for(int i=0; i<9; i+=3){
  if(pole[i]==pole[i+1] && pole[i+1]==pole[i+2]){  // sprawdza linie poziome
    YouWin()//odpowiednia funkcja
    return;
  }
}

for(int i=0; i<3; i++){
  if(pole[i]==pole[i+3] && pole[i+3]==pole[i+6]){ // sprawdza linie pionowe
    YouWin()//odpowiednia funkcja
    return;
  }
}


  if(pole[0]==pole[4] && pole[4]==pole[8]){ // sprawdza linie ukośne
    YouWin()//odpowiednia funkcja
    return;
  }



  if(pole[2]==pole[4] && pole[4]==pole[6]){ // sprawdza linie ukośne
    YouWin()//odpowiednia funkcja
    return;
  }

i tak na koniec:
założyłem że pole gry to tablica

int pole[9]

najlepiej aby pole puste to było 0, krzyzyk to 1, a kółko 2.
Tylko jedno ale, w każdej pętli musisz umieścić takie coś:

if(!pole[i])return;

aby przerwać sprawdzanie (bo poco sprawdzać) jeśli któreś pole jest puste

0

my_nick: schowałbyś się z takimi tekstami i nie wychodził przez tydzień (albo dłużej jak ci się spodoba).

<font size="4"> Wiesz do czego jest skrót CTRL+H ???? </span>

Niepotrzebnie ale się wytłumaczę. Ja sam pisze w Delphi, a C++ używam tylko do pisania w OGL'u. Więc kodzik podałem w Delphi, a jego zamienienie na posatać kodu do BCB to kilka użyć w/w skrótu.

<font size="6">ŻeGnAm pANIE My_NiCk</span>

0

my_nick: schowałbyś się z takimi tekstami i nie wychodził przez tydzień (albo dłużej jak ci się spodoba).

<font size="4"> Wiesz do czego jest skrót CTRL+H ???? </span>

Niepotrzebnie ale się wytłumaczę. Ja sam pisze w Delphi, a C++ używam tylko do pisania w OGL'u. Więc kodzik podałem w Delphi, a jego zamienienie na posatać kodu do BCB to kilka użyć w/w skrótu.

<font size="6">ŻeGnAm pANIE My_NiCk</span>

oj kurde on chciał dobrze ;-)

dziękuje wszystkim

1 użytkowników online, w tym zalogowanych: 0, gości: 1