/** * Yhden kierroksen toteuttava metodi. * * @param eka Ensimmäinen tekoäly * @param toka Toinen tekoäly */ public void pelaaKierros(AI eka, AI toka) { Siirto ensimmaisen = eka.teeSiirto(); Siirto toisen = toka.teeSiirto(); jaaPisteet(ensimmaisen, toisen, eka, toka); eka.vastaanotaSiirto(toisen); toka.vastaanotaSiirto(ensimmaisen); }
/** * Viimeisen kierroksen peluuttaava metodi, joka ei pyydä enää uutta siirtoa tekoälyiltä. * * <p>Nollaa myös tekoälyt seuraavaa kierrosta varten. * * @param eka Ensimmäinen tekoäly * @param toka Toinen tekoly */ private void pelaaViimeinenKierros(AI eka, AI toka) { Siirto ensimmaisen = eka.teeSiirto(); Siirto toisen = toka.teeSiirto(); jaaPisteet(ensimmaisen, toisen, eka, toka); eka.palautaAlkuperainenTila(); toka.palautaAlkuperainenTila(); }
/** * Kierroksen pisteet jakava metodi. * * @param ensimmaisen Ensimmäisen tekoälyn siirto * @param toisen Toisen tekoälyn siirto * @param eka Ensimmäinen tekoäly * @param toka Toinen tekoäly */ private void jaaPisteet(Siirto ensimmaisen, Siirto toisen, AI eka, AI toka) { if (ensimmaisen == Siirto.YHTEISTYO && toisen == Siirto.YHTEISTYO) { eka.lisaaPisteita(yhteistyonPalkinto); toka.lisaaPisteita(yhteistyonPalkinto); } else if (ensimmaisen == Siirto.YHTEISTYO && toisen == Siirto.PETOS) { eka.lisaaPisteita(tyhmyrinRangaistus); } else if (ensimmaisen == Siirto.PETOS && toisen == Siirto.YHTEISTYO) { toka.lisaaPisteita(tyhmyrinRangaistus); } else { eka.lisaaPisteita(pettureidenKompromissi); toka.lisaaPisteita(pettureidenKompromissi); } }