001    /* PAVLOV -- Multiple Choice Study System
002     * Copyright (C) 2000 - 2004 T.J. Willis
003     * 
004     * This program is free software; you can redistribute it and/or
005     * modify it under the terms of the GNU General Public License
006     * as published by the Free Software Foundation; either version 2
007     * of the License, or (at your option) any later version.
008     *      
009     * This program is distributed in the hope that it will be useful,
010     * but WITHOUT ANY WARRANTY; without even the implied warranty of
011     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
012     * GNU General Public License for more details.
013     *          
014     * You should have received a copy of the GNU General Public License
015     * along with this program; if not, write to the Free Software
016     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
017     *  
018     */ 
019    package net.sourceforge.pavlov.pluglets.feedback.random;
020    
021    /**
022     * A feedback mode that rewards the user for giving a quiz the 
023     * old college try.  Small penalty for incorrect answers, small
024     * reward for correct answers, reward for answering many questions.
025     *
026     * @version $Revision: 1.3 $
027     */
028    public final class BeginnerFeedbackMode 
029      extends DefaultVisualFeedbackMode 
030    {
031      private int nanswered;
032      private boolean right;
033    
034      /**
035       * Creates a new <code>BeginnerFeedbackMode</code> instance.
036       *
037       */
038      public BeginnerFeedbackMode() {
039        super(175, 0, 0, 175);
040        nanswered = 0;
041        size = 175;
042      }
043    
044      /**
045       * Increments the size, gives bonuses every 5/25 questions.
046       *
047       */
048      public void rightEvent() {
049        nanswered++;
050        size += 5;
051        if ((nanswered % 5) == 0) size = size + 15;
052        if ((nanswered % 25) == 0) size = size + 50;
053        right = true;
054        //  setMessage();
055      }
056    
057      /**
058       * Gives an encouraging message.
059       *
060       * @return a <code>String</code> value
061       */
062      public String getMessage() {
063        if (nanswered != 0) {
064          if (right) {
065            message = "Good Job!<BR>";
066          } else {
067            message = "Keep pluggin'!!<BR>";
068          }
069          if ((nanswered % 5) == 0)
070            message += "<B>Bonus awarded +20</B><BR>";
071          if ((nanswered % 25) == 0)
072            message += "<B>Special Bonus awarded +50</B><BR>";
073        }
074        return message;
075      }
076    
077      /**
078       * Increments image size less than a rightEvent does, gives bonuses every 5/25 questions.
079       *
080       */
081      public void wrongEvent() {
082        size -= 5;
083        if ((nanswered % 5) == 0) size = size + 15;
084        if ((nanswered % 25) == 0) size = size + 50;
085        if (size < minimumSize) size = minimumSize;
086        right = false;
087      }
088    
089      /**
090       * Gets a menu-friendly name for this mode.
091       *
092       * @return a <code>String</code> value
093       */
094      public String getShortName() {
095        return "Beginner";
096      }
097    
098      /**
099       * Gets a descriptive name for this mode. 
100       *
101       * @return a <code>String</code> value
102       */
103      public String toString() {
104        return "Beginner Feedback Mode";
105      }
106    }
107