Die Resert() Methode

So, jetzt kann es ja passieren, dass jemand mehr als eine Runde hintereinander spielen möchte. Deswegen muss der Speicher wieder in einen Zustand gebracht werde, in dem der Rest des Codes wieder funktioniert. Dafür ist die Reset methode.

void MainGame::reset(){
    destroy_bitmap(FeldPic->get_Bild());
 
    BITMAP *Temp = createRectangle(490 + 90, 420 + 80, makecol(0,0,255));
    BITMAP *Temp2 = createCircle(70, makecol(255,0,255), makecol(0,0,255));
 
    for(int i = 0; i < 7;i++){
        for( int k = 0; k < 6;k++){
            Feld[i][k].Belegt = false;
            Feld[i][k].Player = 3;
            blit(Temp2, Temp, 0,0,i*70 + (i+1)*10,k*70 + (k+1)*10, 70, 70);
        }
    }
    destroy_bitmap(Temp2);
 
    FeldPic->BildLaden(Temp);
    FeldPic->ZielSetzen(Ziel);
    FeldPic->PositionSetzen((SCREEN_W-580)/2, SCREEN_H-500);
 
    PlayersTurn = 0;
    Gewinner = 3;
}

Was wir hier machen ist also, zuerst das Bild des Spielfeldes Löschen, dann neu erzeugen, und Feld wieder zuweisen. Außerdem leeren wir das 2D-Array im Speicher wieder, und setzen den Sieger auf unentschieden.