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?