private void valitseSiirto(Kentta kentta, int syvyys, int pelinumero) {
        if(matintarkastaja.matti(kentta, omaPelinumero)) {
            nykyinenArvo += laskeMattipainotus(syvyys);
            return;
        }
        if(matintarkastaja.matti(kentta, vaihdaPelinumero(omaPelinumero))) {
            nykyinenArvo -= laskeMattipainotus(syvyys);
            return;
        }
        if(syvyys == 4) {
            nykyinenArvo += kentta.arvo(omaPelinumero) - kentta.arvo(vaihdaPelinumero(omaPelinumero));
            return;
        }
        
        Siirrettava siirrettava;
        Siirto siirto;
        Nappulahallinta nappulahallinta = new Nappulahallinta(pelinumero, kentta);
        
        while(nappulahallinta.nappuloitaJaljella()) {
            siirrettava = nappulahallinta.seuraava();

            while(siirrettava.siirtojaJaljella()) {
                Kentta kentta2 = kentta.kopioi();
                siirto = siirrettava.seuraavaSiirto();
                
                if(parasSiirto == null) parasSiirto = siirto;

                kentta2.teeSiirto(siirto);

                valitseSiirto(kentta2, syvyys+1, vaihdaPelinumero(pelinumero));
                if(syvyys == 0) {
                    if(nykyinenArvo > parasArvo) {
                        parasArvo = nykyinenArvo;
                        parasSiirto = siirto;
                    }
                    nykyinenArvo = alkuarvo;
                }
            }
        }
        
    }