#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren