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 /**
023 * A feedback mode that is generous for right answers and
024 * draconian for wrong answers. Keeps track of "winning streaks."
025 *
026 * @version $Revision: 1.2 $
027 */
028 public class ExpertFeedbackMode extends DefaultVisualFeedbackMode {
029 protected int nanswered;
030 protected int streak = 0;
031 protected int oldSize = 0;
032
033 /**
034 * Creates a new <code>ExpertFeedbackMode</code> instance.
035 *
036 */
037 public ExpertFeedbackMode() {
038 super(75, 0, 0, 75);
039 nanswered = 0;
040 size = 75;
041 }
042
043 /**
044 * Gives an encouraging message.
045 *
046 * @return a <code>String</code> value
047 */
048 public String getMessage() {
049 String msg = "<HTML>";
050
051 if (streak > 0) {
052 msg += "You are correct!<BR>";
053 msg += "You have gotten " + streak + " right in a row.<BR>";
054 msg += "Increased size from " + oldSize + " to " + size + ".<BR>";
055 } else {
056 msg += "Get one right and I'll show you a picture<BR>";
057 msg += "Decreased size from " + oldSize + " to " + size + ".<BR>";
058 }
059 return msg;
060 }
061
062 /**
063 * Increments the size, gives bonuses every 15 questions.
064 *
065 */
066 public void rightEvent() {
067 streak++;
068 nanswered++;
069 oldSize = size;
070 size += 35;
071 if ((nanswered % 15) == 0) size = size + 20;
072 }
073
074 /**
075 * Sets image size to minimum size. Gives bonuses every 15 questions.
076 *
077 */
078 public void wrongEvent() {
079 streak = 0;
080 oldSize = size;
081 size = minimumSize;
082 if ((nanswered % 15) == 0) size = size + 20;
083 if (size < minimumSize) size = minimumSize;
084 }
085
086
087 /**
088 * Gets a menu-friendly name for this mode.
089 *
090 * @return a <code>String</code> value
091 */
092 public String getShortName() {
093 return "Expert";
094 }
095
096 /**
097 * Gets a descriptive name for this mode.
098 *
099 * @return a <code>String</code> value
100 */
101 public String toString() {
102 return "Expert Feedback Mode";
103 }
104 }
105