[C/C++] Auswertung eines Arrays

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von dreamax, 8. März 2009 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 8. März 2009
    Auswertung eines Arrays

    Aslo ich arbeite derzeit an einem ganz primitiven und einfachem Spiel mit dem namen 3Gewinnt bei dem ein Spielbrett mit 5 Schächten und 7 Zeilen vorhanden ist. Dies habe ich dann mit einem Array welches den namen 'feld' trägt wie folg deklariert: int feld[5][7]; so das passt soweit dann auch. Als weiteren schritt habe ich dann erstmal mit der Prozedur init(); alle felder auf '0' gesetzt:
    Code:
    void init(){
     for(int i=0;i<5;i++){
     for(int j=0;j<7;j++){
     feld[i][j]=0;
     }
     }
     }
    Das funktioniert auch einwandfrei.. Je nach dem welcher Spieler an der Reie ist wird dann das jeweilige Array Feld auf '1' bzw '2' gesetzt. Nun scheitere ich aber an der Auswertung die wenn das komplette Feld voll ist erscheinen soll. Dies will ich mit einer Funktion punkte(int spieler); umsetzten die je nach übergebenen Spieler das ganze Array horizontal und vertikal nach 3er Ketten absuchen soll.

    Hier mal ein Auswertungs Beispiel:

    Code:
     #x#x#x#x#o#
     #x#x#o#x#x#
     #o#o#x#x#x#
     #o#o#o#o#o#
     #x#o#x#x#o#
     #o#o#x#x#x#
     #x#o#x#o#x#
     ###########
    Spieler1 (in diesem fall x): punkte(1); //6 dreier Ketten
    Spieler2 (in diesem fall o): punkte(2); //6 dreier Ketten
    Achso vllt sollte ich ncoh sagen das man wenn man eine Eie voll mit x bzw o hat man horizontal so 3 Punkte erhält da es ja 3 3er Ketten sind und vertikal bis zu 5Punkte abstauben kann da dies nun mal 5 3er Ketten sind.


    Mein versuch dies zu Lösen war folgender:
    Code:
    int punkte(int spieler){
     //horizontal
     int ges;
     ges=0;
     for(int j=0;j<5;j++){ 
     if(feld[j][0]==spieler && feld[j][1]==spieler && feld[j][2]==spieler) ges++;
     if(feld[j][1]==spieler && feld[j][2]==spieler && feld[j][3]==spieler) ges++;
     if(feld[j][2]==spieler && feld[j][3]==spieler && feld[j][4]==spieler) ges++;
     }
     //vertikal
     for(int i=0;i<7;i++){
     if(feld[0][i]==spieler && feld[1][i]==spieler && feld[2][i]==spieler) ges++;
     if(feld[1][i]==spieler && feld[2][i]==spieler && feld[3][i]==spieler) ges++;
     if(feld[2][i]==spieler && feld[3][i]==spieler && feld[4][i]==spieler) ges++;
     if(feld[3][i]==spieler && feld[4][i]==spieler && feld[5][i]==spieler) ges++;
     if(feld[4][i]==spieler && feld[5][i]==spieler && feld[6][i]==spieler) ges++;
     }
     return ges;
     }
    Was aber falsche Ergebnis liefert (Spieler1:5 Speiler2:4)
    Hoffe irgendwer kann mir da mal bisschen helfen..

    mfg
     

  2. Anzeige
  3. #2 9. März 2009
    AW: Auswertung eines Arrays

    Bei deiner ersten Schleife fehlt eine Berechnung, und bei deiner 2. Schleife müsste es eigentlich abstürzen, da es über den Wert 4 (0 - 4 = 5) hinausgeht.
     

  4. Videos zum Thema
Die Seite wird geladen...