private void fight() {
        if (info.getRound() < 3) {
            cpu.generateWeapon(1, info.getRound());
        } else {
            cpu.generateWeapon(difficulty, info.getRound());
        }

        int result = comparator.compare(user.getWeapon(), cpu.getWeapon());
        if (!info.matchOver()) {
            resultsList.setModel(roundResults);
            switch (result) {
                //user wins
                case (1):
                    roundResults.addElement("Round " + info.getRound() + ":\t User Wins");
                    break;
                //tie
                case (0):
                    roundResults.addElement("Round " + info.getRound() + ":\t It's a tie!");
                    break;
                //user loss
                case (-1):
                    roundResults.addElement("Round " + info.getRound() + ":\t CPU Wins");
                    break;
            }

            info.updateScores(result);
            info.updateMatchInfo(user.getWeapon(), cpu.getWeapon());

            extraTextField.setText("Your Wins: " + info.scores.getWins() + "\t CPU Wins: "
                    + info.scores.getLosses() + "\t Ties: " + info.scores.getTies());

            cpu.appendWeapon(user.getWeapon());

            cpuWeapons.addElement(cpu.getWeapon().toFullString());
            userWeapons.addElement(user.getWeapon().toFullString());

            userThrowsList.setModel(userWeapons);
            cpuThrowsList.setModel(cpuWeapons);
            resultsList.setModel(roundResults);

            if (cpu.getPredictedWeapon() == null) {
                predictionTextField.setText("");
            } else {
                predictionTextField.setText(cpu.getPredictedWeapon().toFullString());
            }
        }
        if (info.getRound() - 1 == rounds) {
            info.updateMatchInfo();
            extraTextField.setText(info.getMatchInfo() + "    Reset to start over!");
            rockButton.setEnabled(false);
            paperButton.setEnabled(false);
            scissorsButton.setEnabled(false);
        }
    }