MaskinSpiller.java [Last ned]

/* 
 *  Klasse for å representere en "maskinspiller".
 *
 */
 
public class MaskinSpiller extends Object {
 
  private static final int MOTSPILLER = Brett.SPILLER1;
  private static final int MASKIN     = Brett.SPILLER2;
 
  private Brett B;
 
 
  public MaskinSpiller(Brett B) {
    this.B = B;
  }
 
 
  // Maskinen skal utføre et trekk.
  public void trekk() {
    int max = 0;
    int mr = 0;
    int mk = 0;
 
    for (int r=0; r<B.sidelengde(); r++)
      for (int k=0; k<B.sidelengde(); k++) {
        int v = nytte(r, k);
        if (v > max ||
            (v == max && B.nærmereMidten(r, k, mr, mk))) {
          max = v;
          mr = r;
          mk = k;
        }
      }
 
    B.trekk(mr, mk, MASKIN);
  }
 
 
  // Hvor viktig er en bestemt celle for maskinen?
  private int nytte(int r, int k) {
    if (!B.ledigRute(r,k))
      return 0;
    else {
      int maskinNytte = nytteForSpiller(r, k, MASKIN);
      int motstanderNytte = nytteForSpiller(r, k, MOTSPILLER);
      return Math.max(maskinNytte, motstanderNytte);
    }
  }
 
 
  // Hvor viktig er en bestemt celle for en spiller?
  private int nytteForSpiller(int r, int k, int s) {
    return (int) (Math.pow(10, B.maxSekvens(r, k, B.DIAGONALOPPHØYRE, s)) +
            Math.pow(10, B.maxSekvens(r, k, B.DIAGONALOPPVENSTRE, s)) +
            Math.pow(10, B.maxSekvens(r, k, B.HORISONTAL, s)) +
            Math.pow(10, B.maxSekvens(r, k, B.VERTIKAL, s)));   
  }
 
}
 
Kildekode blir vist ved hjelp av GeSHi.