Algorithmus für Gewinner bei Tic Tac Toe



  • Hi,

    ich habe folgendene Algorithmus geschrieben, um zu testen, ob es einen Gewinner gibt:

    Spieler* Controller::checkField()
    {
      for(int i = 0; i < CONST__anzY; i++)
      {
          //Rechts
          if(this->model->getFeld(i, 0)->getPlayer() == this->model->getFeld(i, 1)->getPlayer()
          && this->model->getFeld(i, 0)->getPlayer() == this->model->getFeld(i, 2)->getPlayer()
          && this->model->getFeld(i, 0)->getPlayer() != NULL)
          {
            return this->model->getFeld(i, 0)->getPlayer();
          }
    
          //Runter
          for(int j = 0; j < CONST__anzX; j++)
          {
             if(this->model->getFeld(0, j)->getPlayer() == this->model->getFeld(1, j)->getPlayer()
             && this->model->getFeld(0, j)->getPlayer() == this->model->getFeld(2, j)->getPlayer()
             && this->model->getFeld(0, j)->getPlayer() != NULL)
             {
               return this->model->getFeld(0, j)->getPlayer();
             }
          }
      }
    
      // Diagonal
      if( this->model->getFeld(1, 1)->getPlayer() != NULL
       &&(this->model->getFeld(1, 1)->getPlayer() == this->model->getFeld(0, 0)->getPlayer()
       && this->model->getFeld(1, 1)->getPlayer() == this->model->getFeld(2, 0)->getPlayer())
      || (this->model->getFeld(1, 1)->getPlayer() == this->model->getFeld(0, 0)->getPlayer()
      &&  this->model->getFeld(1, 1)->getPlayer() == this->model->getFeld(2, 2)->getPlayer())
      )
      {
         return this->model->getFeld(1, 1)->getPlayer();  //1|1 ist in beiden Kombinationen vorhanden
      }
    
      return NULL;
    }
    

    Gibt es nicht eine Möglichkeit, den Code kürzer zu schreiben?
    Ich habe schon einiges versucht, bin aber nicht wirklich weiter gekommen.

    Programmierer123





  • Hallo

    Das hatten wir doch erst vor kurzen hier schon einmal.

    bis bald
    akari

    /Edit : Ist doch schön wenn noch jemand mitdenkt 😉



  • Wenn ich ehrlich bin, verstehe ich den Code in der Antwort nicht.

    Woher kommt die Nummerierung?
    Ich habe doch ein 2dimensionales Array...



  • Meinst du nicht, es wäre sinnvoller, in dem Thread zu fragen, wo auch die Antwort steht?


Anmelden zum Antworten