class Bout {

    private Prisoner prisoner1;
    private Prisoner prisoner2;
    
    public Bout(Prisoner prisoner1, Prisoner prisoner2) {
        this.prisoner1 = prisoner1;
        this.prisoner2 = prisoner2;
    }
       
    public void play() {
        String prisoner1Move = prisoner1.move();
        String prisoner2Move = prisoner2.move();
        int prisoner1Score = getScore(prisoner1Move, prisoner2Move);
        int prisoner2Score = getScore(prisoner2Move, prisoner1Move);
        prisoner1.addToScore(prisoner1Score);
        prisoner2.addToScore(prisoner2Score);
        prisoner1.memoriseHistory(prisoner2Move);
        prisoner2.memoriseHistory(prisoner1Move);
    }

    private int getScore(String oneMove, String otherMove) {
        if (oneMove.equals("COOPERATE")) {
            if (otherMove.equals("COOPERATE")) {
                return 3; // reward for mutual cooperation
            }
            return 0; // you're a sucker
        } else { // oneMove is "DEFECT"
            if (otherMove.equals("DEFECT")) {
                return 1; // punish for mutual distrust
            }
            return 5; // win the temptation score for suckering the other guy
        }
    }

}
