Gewinner ermitteln

So weiter gehts mit dem Gewinner. Was müssen wir machen? Wir müssen überprüfen, ob jemand 4 Steine in einer Reihe hat, und müssen dem Programm das mitteilen. Aber halt. Wir müssen nicht das ganze Feld überprüfen, sondern wir können von dem Stein ausgehen, der als letztes gelegt wurde, da die anderen Steine schlecht ne 4er Reihe bilden können.

Der Code

void MainGame::GewinnerErmitteln(int LetzterSteinReihe, int LetzterSteinSpalte){
    int Reihe = 0;
    int Spalte = 0;
    int inReihe = 1;
 
 
	//waagerecht
	for(int i = -3;i < 4;i++){
		if( Feld[LetzterSteinSpalte+i][LetzterSteinReihe].Player==PlayersTurn &&
			Feld[LetzterSteinSpalte+i+1][LetzterSteinReihe].Player==PlayersTurn){
				inReihe++;
		}
	}
 
	if(inReihe >= 4){
		Gewinner = PlayersTurn;
		return;
	}
 
	inReihe = 1;
	//Vertical
	for(int i = -3;i < 4;i++){
		if( Feld[LetzterSteinSpalte][LetzterSteinReihe+i].Player==PlayersTurn &&
			Feld[LetzterSteinSpalte][LetzterSteinReihe+i+1].Player==PlayersTurn){
				inReihe++;
		}
	}
 
	if(inReihe >= 4){
		Gewinner = PlayersTurn;
		return;
	}
 
	inReihe = 1;
	//lu-ro
	for(int i = -3;i < 4;i++){
		if( Feld[LetzterSteinSpalte+i][LetzterSteinReihe+i].Player==PlayersTurn &&
			Feld[LetzterSteinSpalte+i+1][LetzterSteinReihe+i+1].Player==PlayersTurn){
				inReihe++;
		}
	}
 
	if(inReihe >= 4){
		Gewinner = PlayersTurn;
		return;
	}
 
	inReihe = 1;
	//lo-ru
	for(int i = -3;i < 4;i++){
		if( Feld[LetzterSteinSpalte+i][LetzterSteinReihe-i].Player==PlayersTurn &&
			Feld[LetzterSteinSpalte+i+1][LetzterSteinReihe-i-1].Player==PlayersTurn){
				inReihe++;
		}
	}
 
	if(inReihe >= 4){
		Gewinner = PlayersTurn;
		return;
	}
 
    //unentschieden
    inReihe = 0;
    for(Reihe = 0; Reihe < 6;Reihe++){
        for(Spalte = 0;Spalte < 7;Spalte++){
            if(Feld[Spalte][Reihe].Belegt == true){
                inReihe++;
        }
            else{
                inReihe--;
            }
        }
    }
 
    if(inReihe == 42){
        Gewinner = UNENTSCHIEDEN;
        return;
    }
}

Genau das oben gesagte wird hier gemacht. Aber wie? Zuerst wird das ganze in 4 Durchgänge eingeteilt, zuerst überprüfen wir, ob es in der Waagerechten 4 in einer Reihe gibt. Wir gehen dazu von -3 bis +3 um den Stein drum rum. Wenn ein Stein, sowie sein Nachbar die selbe Farbe haben, erhöhen wir den Zähler, Wenn der Zähler auf 4 ist, haben wir ne vollständige Kette.

Das selbe Prinzip wiederholt sich für die anderen Richtungen(Vertikal, Links unten nach rechts oben, und links oben nach rechts unten) Natürlich könnte es auch ein Unentschieden geben, das wird ermittelt, in dem Geschaut wird, ob das Feld Voll ist, nachdem kein Sieger festgestellt werden konnte. zurück weiter zu gewinnerAusgeben()