Kolko i krzyzyk

dział ogólny

Kolko i krzyzyk

Nowy postprzez maniek » sobota, 6 czerwca 2009, 13:06

Witam
jestem w trakcie robienie programu Kolko i krzyzyk: 9 Buttonow a w kazdym z nich nastepujacy kod:
Kod: Zaznacz cały
if (Button2->Caption=="")
{Button2->Caption="X";}
if (Button1->Caption=="")
{Button1->Caption="O";}
else {if (Button3->Caption=="")
{Button3->Caption="O";}
else {if (Button4->Caption=="")
{Button4->Caption="O";}
else {if (Button5->Caption=="")
{Button5->Caption="O";}
else {if (Button6->Caption=="")
{Button6->Caption="O";}
else {if (Button7->Caption=="")
{Button7->Caption="O";}
else {if (Button8->Caption=="")
{Button8->Caption="O";}
else {if (Button9->Caption=="")
{Button9->Caption="O";}
else {Application->MessageBox("Koniec", "Koniec", MB_OK);

w takiej sytuacji program dziala poprawnie, ale jest glupi bo nie blokuje przeciwnika wiec od paru dni walcze
z nastepujacym kodem:
Kod: Zaznacz cały
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (Button2->Caption=="")
{Button2->Caption="X";}

if (Button1->Caption=="X" && Button2->Caption=="X")              //poziom 1
{Button3->Caption="O";}                 //poziom 1
else {if (Button1->Caption=="X" && Button3->Caption=="X")        //poziom 1
      {Button2->Caption=="O";}          //poziom 1
      else {if (Button2->Caption=="X" && Button3->Caption=="X")  //poziom 1
           
            {Button1->Caption=="O";}    //poziom 1

       if (Button4->Caption=="X" && Button5->Caption=="X")        //poziom 2
            {Button6->Caption=="O";}          //poziom 2
            else {if (Button4->Caption=="X" && Button6->Caption=="X")  //poziom 2
                  {Button5->Caption=="O";}    //poziom 2
                  else {if (Button5->Caption=="X" && Button6->Caption=="X")  //poziom 2
                  {Button4->Caption=="O";}    //poziom 2

else {if (Button7->Caption=="X" && Button8->Caption=="X")              //poziom 3
      {Button9->Caption="O";}                 //poziom 3
      else {if (Button7->Caption=="X" && Button9->Caption=="X")        //poziom 3
            {Button8->Caption=="O";}          //poziom 3
            else {if (Button8->Caption=="X" && Button9->Caption=="X" )  //poziom 3
                  {Button7->Caption=="O";}    //poziom 3

else {if (Button1->Caption=="X" && Button4->Caption=="X")              //pion 1
      {Button7->Caption="O";}                 //pion 1
      else {if (Button1->Caption=="X" && Button7->Caption=="X")        //pion 1
            {Button4->Caption=="O";}          //pion 1
            else {if (Button4->Caption=="X" && Button7->Caption=="X")  //pion 1
                  {Button1->Caption=="O";}    //pion 1

else {if (Button2->Caption=="X" && Button5->Caption=="X")              //pion 2
     
      {Button8->Caption="O";}                 //pion 2
      else {if (Button2->Caption=="X" && Button8->Caption=="X")        //pion 2

            {Button5->Caption=="O";}          //pion 2
            else {if (Button5->Caption=="X" && Button8->Caption=="X")  //pion 2
                 
                  {Button2->Caption=="O";}    //pion 2

else {if (Button3->Caption=="X" && Button6->Caption=="X")              //pion 3
     
      {Button9->Caption="O";}                 //pion 3
      else {if (Button3->Caption=="X" && Button9->Caption=="X")        //pion 3
            {Button6->Caption=="O";}          //pion 3
            else {if (Button6->Caption=="X" && Button9->Caption=="X")  //pion 3
                  {Button3->Caption=="O";}    //pion 3

else {if (Button1->Caption=="X" && Button5->Caption=="X")              //skos 1
      {Button9->Caption="O";}                 //skos 1
      else {if (Button1->Caption=="X" && Button9->Caption=="X")        //skos 1
            {Button5->Caption=="O";}          //skos 1
            else {if (Button5->Caption=="X" &&Button9->Caption=="X")  //skos 1
                  {Button1->Caption=="O";}    //skos 1

else {if (Button3->Caption=="X" &&Button5->Caption=="X")              //skos 2
      {Button7->Caption="O";}                 //skos 2
      else {if (Button3->Caption=="X" && Button7->Caption=="X")        //skos 2

            {Button5->Caption=="O";}          //skos 2
            else {if (Button5->Caption=="X"&&Button7->Caption=="X")  //skos 2

                  {Button3->Caption=="O";}    //skos 2



if (Button1->Caption=="")
{Button1->Caption="O";}
else {if (Button3->Caption=="")
{Button3->Caption="O";}
else {if (Button4->Caption=="")
{Button4->Caption="O";}
else {if (Button5->Caption=="")
{Button5->Caption="O";}
else {if (Button6->Caption=="")
{Button6->Caption="O";}
else {if (Button7->Caption=="")
{Button7->Caption="O";}
else {if (Button8->Caption=="")
{Button8->Caption="O";}
else {if (Button9->Caption=="")
{Button9->Caption="O";}
else {Application->MessageBox("Koniec", "Koniec", MB_OK);
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}

Z tym kodem w kazdym buttonie program blokuje 2 figury z rzedu ale za 3 razem jak klikne button to nie stawia "O"
Jakies pomysly co jest nie tak?
Avatar użytkownika
maniek
Bladawiec
Bladawiec
 
Posty: 5
Dołączył(a): sobota, 23 maja 2009, 10:18
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Kolko i krzyzyk

Nowy postprzez beherit » czwartek, 11 czerwca 2009, 13:56

Kiedyś napisałem sobie Kółko i Krzyżyk w wersji sieciowej przy użyciu socketów :P Oto wragment sprawdzania kto wygrał wywoływane na serwerze.

Kod: Zaznacz cały
void __fastcall TServerGameForm::WynikExecute(TObject *Sender)
{
  AnsiString graczO="Gracz "+NickPrzeciwnika->Text+" wygraÅ‚!\n";
  AnsiString graczX="Gratuluje!\nPokonaÅ‚eÅ› gracza "+NickPrzeciwnika->Text+"!\n";

  //wyniki dla X
  if ((Button1->Caption=="X")&&(Button2->Caption=="X")&&(Button3->Caption=="X"))
  {
    Application->MessageBox(
    graczX.c_str(),
    "WygraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();

  }
  if ((Button4->Caption=="X")&&(Button5->Caption=="X")&&(Button6->Caption=="X"))
  {
    Application->MessageBox(
    graczX.c_str(),
    "WygraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button7->Caption=="X")&&(Button8->Caption=="X")&&(Button9->Caption=="X"))
  {
    Application->MessageBox(
    graczX.c_str(),
    "WygraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button1->Caption=="X")&&(Button4->Caption=="X")&&(Button7->Caption=="X"))
  {
    Application->MessageBox(
    graczX.c_str(),
    "WygraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
    if ((Button2->Caption=="X")&&(Button5->Caption=="X")&&(Button8->Caption=="X"))
  {
    Application->MessageBox(
    graczX.c_str(),
    "WygraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button3->Caption=="X")&&(Button6->Caption=="X")&&(Button9->Caption=="X"))
  {
    Application->MessageBox(
    graczX.c_str(),
    "WygraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button1->Caption=="X")&&(Button5->Caption=="X")&&(Button9->Caption=="X"))
  {
    Application->MessageBox(
    graczX.c_str(),
    "WygraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button3->Caption=="X")&&(Button5->Caption=="X")&&(Button7->Caption=="X"))
  {
    Application->MessageBox(
    graczX.c_str(),
    "WygraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }

  //wyniki dla O
  if ((Button1->Caption=="O")&&(Button2->Caption=="O")&&(Button3->Caption=="O"))
  {
    Application->MessageBox(
    graczO.c_str(),
    "PrzegraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button4->Caption=="O")&&(Button5->Caption=="O")&&(Button6->Caption=="O"))
  {
    Application->MessageBox(
    graczO.c_str(),
    "PrzegraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button7->Caption=="O")&&(Button8->Caption=="O")&&(Button9->Caption=="O"))
  {
    Application->MessageBox(
    graczO.c_str(),
    "PrzegraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button1->Caption=="O")&&(Button4->Caption=="O")&&(Button7->Caption=="O"))
  {
    Application->MessageBox(
    graczO.c_str(),
    "PrzegraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
    if ((Button2->Caption=="O")&&(Button5->Caption=="O")&&(Button8->Caption=="O"))
  {
    Application->MessageBox(
    graczO.c_str(),
    "PrzegraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button3->Caption=="O")&&(Button6->Caption=="O")&&(Button9->Caption=="O"))
  {
    Application->MessageBox(
    graczO.c_str(),
    "PrzegraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button1->Caption=="O")&&(Button5->Caption=="O")&&(Button9->Caption=="O"))
  {
    Application->MessageBox(
    graczO.c_str(),
    "PrzegraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }
  if ((Button3->Caption=="O")&&(Button5->Caption=="O")&&(Button7->Caption=="O"))
  {
    Application->MessageBox(
    graczO.c_str(),
    "PrzegraÅ‚eÅ›!",
    MB_OK);
    NewGame->Execute();
  }       
}
//---------------------------------------------------------------------------


Oczywiście plansza wygląda tak:

Button1 | Button2 | Button3
Button4 | Button5 | Button6
Button7 | Button8 | Button9
Obrazek
Avatar użytkownika
beherit
Homos antropiczny
Homos antropiczny
 
Posty: 62
Dołączył(a): poniedziałek, 16 lutego 2009, 19:55
Lokalizacja: Jarocin
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 10
Kompilator: C++Builder XE5
Gadu Gadu: 0
    NieznanyNieznana

Re: Kolko i krzyzyk

Nowy postprzez maniek » piÄ…tek, 19 czerwca 2009, 20:07

wlasnie tak
dzieki
Avatar użytkownika
maniek
Bladawiec
Bladawiec
 
Posty: 5
Dołączył(a): sobota, 23 maja 2009, 10:18
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości