ScoreKeeper.java
上传用户:njled888
上传日期:2007-01-07
资源大小:29k
文件大小:2k
源码类别:

游戏

开发平台:

Java

  1. /*
  2.  * @(#)ScoreKeeper.java Version 1.0 98/03/12
  3.  * 
  4.  * Copyright (c) 1998 by Huahai Yang
  5.  * 
  6.  * Use at your own risk. I do not guarantee the fitness of this 
  7.  * software for any purpose, and I do not accept responsibility for 
  8.  * any damage you do to yourself or others by using this software.
  9.  * This file may be distributed freely, provided its contents 
  10.  * are not tampered with in any way.
  11.  *
  12.  */
  13. import java.awt.*;
  14. public class ScoreKeeper extends Label
  15. {
  16.    int score;
  17.    int increase;
  18.    double levelWeight;
  19.    
  20.    // value of answer
  21.    static final int NO_NO = 1,      //no solution, answer no solution
  22.                     NO_HAS = -2,    //no solution, answer has
  23.                     HAS_NO = -1,    //has solution, answer no
  24.                     HAS_WRONG = -2,
  25.                     HAS_RIGHT = 2,
  26.                     TIME_OUT = -1;
  27.    
  28.    // value of levelWeight
  29.    static final double BEGINNER = 1,
  30.                        INTERMEDIATE = 1.5,
  31.                        EXPERT = 2;
  32.                     
  33.    public ScoreKeeper()
  34.    {
  35.       super("Score:    0", Label.LEFT);
  36.       setFont(new Font("Helvetica", Font.BOLD, 16));
  37.       setForeground(Color.black);
  38.       score = 0;
  39.       increase = 100;
  40.       levelWeight = BEGINNER;
  41.    } // constructor   
  42.    
  43.    public void resetScore()
  44.    {
  45.       score = 0;
  46.       setText("Score: " + score);
  47.    } // resetScore   
  48.    
  49.    public int getScore()
  50.    {
  51.       return score;
  52.    } //getScore   
  53.    
  54.    public void updateScore(int answer, double timePassProportion)
  55.    {
  56.       double timeBonus;
  57.       if(answer > 0)     
  58.       {
  59.          // correct answer, the less the time passed, the more bonus
  60.          timeBonus = 1 - timePassProportion;
  61.       } //if
  62.       else timeBonus = timePassProportion;
  63.       
  64.       score = score + (int)(levelWeight * answer * increase * timeBonus);
  65.       setText("Score: " + score);
  66.    } //updateScore
  67.    
  68.    public void setLevelWeight(double levelWeight)
  69.    {
  70.       this.levelWeight = levelWeight;
  71.    } // setLevelWeight   
  72.    
  73. } // scoreKeeper