1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54:
| static int züge=0; // Anfangszüge, wird nach jedem Zug erhöht static final int MaxFaktor2 = 10; // für 2er Reihen static final int MinFaktor2 = 10; static final int MaxFaktor3 = 200; // für 3er Reihen static final int MinFaktor3 = 200;
...
static int zähleNachbarn(int i, int j, int di, int dj) { // i,j Koordinaten di dj SteigungsRichtungen(0,1,-1) für Diagonalen usw. int num = 0; char Player = SpieleramZug(züge); // Spieler am Zug in Abhängigkeit von den zügen for (int x=0; x<4; x++) { if (Feld[i+x*di][j+x*dj]==Player) num++; } return num; // return vom selben Spieler belegte Felder in Reihe }
...
public static int bewerteZug() { char Player=SpieleramZug(züge); // Bewerte Spieler der am Zug ist int min2er = 0; int max2er = 0; // Reihen zählen int min3er = 0; int max3er = 0; for(int i=0; i<6; i++) { for(int j=0; j<7; j++) { if(Player==Computer) { // Bewertung Computer if( j<=3) { // noch ausbaufähig zu einer 4er Reihe? if(zähleNachbarn(i, j, 0, 1)==4) // Gewinn return Integer.MAX_VALUE; if(zähleNachbarn(i, j, 0, 1)==3) max3er++; // Reihen zählen if(zähleNachbarn(i, j, 0, 1)==2) max2er++; } .... Diagonalen,Spalten } if(Player==Spieler) { // Bewertung Spieler if( j<=3) { // noch ausbaufähig? rechts if(zähleNachbarn(i, j, 0, 1)==4) //Gewinn return Integer.MIN_VALUE; if(zähleNachbarn(i, j, 0, 1)==3) min3er++; if(zähleNachbarn(i, j, 0, 1)==2) min2er++; } .... Diagonalen,Spalten } } } if(Player== Computer) return max2er*MaxFaktor2+max3er*MaxFaktor3; // Bewertungspunkte else return min2er*MinFaktor2+min3er*MinFaktor3; } |