MateriaaliEval.java

package datastructureproject.luokat.evaluointi.osat;

import chess.model.Side;
import datastructureproject.luokat.ShakkiAly;
import datastructureproject.luokat.nappulat.*;

public class MateriaaliEval implements OsaEvaluaattori {
    private Side puoli;
    private double arvo;

    public MateriaaliEval(Side puoli) {
        this.puoli = puoli;
        this.arvo = 0;
    }

    public double materiaaliArvo(Nappula n) {
        if (n instanceof Kuningas) {
            return ShakkiAly.MAX;
        } else if (n instanceof Kuningatar) {
            return 18d;
        } else if (n instanceof Torni) {
            return 10d;
        } else if (n instanceof Lahetti || n instanceof Ratsu) {
            return 6d;
        } else if (n instanceof Sotilas) {
            return 2d;
        }
        
        return 0d;
    }
    
    @Override
    public void prosessoiNappula(Nappula n) {
        arvo += (n.getPuoli() == puoli ? +1d : -1d) * materiaaliArvo(n);
    }

    @Override
    public double getArvo() {
        return arvo;
    }
    
}