// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   Score.java

import java.awt.Color;
import java.awt.Font;
import java.io.*;
import java.util.Comparator;
import java.util.TreeSet;
import javax.swing.*;

public class Score extends JLabel
    implements Comparator, Cloneable
{

    Score(int i)
        throws IOException
    {
        super((new Integer(i)).toString());
        total = i;
        wordHistory = new TreeSet();
        if(dict == null)
            dict = new Dictionary();
        setHorizontalAlignment(0);
        setBackground(Color.green);
        setFont(new Font("SansSerif", 1, 40));
    }

    public Object clone()
        throws CloneNotSupportedException
    {
        Score score = (Score)super.clone();
        score.gridNumber = gridNumber;
        score.thePlayer = thePlayer;
        score.wordHistory = wordHistory;
        return score;
    }

    public int compare(Object obj, Object obj1)
    {
        if(((Score)obj).getScore() < ((Score)obj1).getScore())
            return -1;
        return ((Score)obj).getScore() <= ((Score)obj1).getScore() ? 0 : 1;
    }

    public boolean equals(Object obj)
    {
        if(obj instanceof Score)
            return ((Score)obj).getScore() == getScore();
        else
            return false;
    }

    public int getGridNumber()
    {
        return gridNumber;
    }

    public int getScore()
    {
        return total;
    }

    public static void main(String args[])
        throws CloneNotSupportedException
    {
        InputStreamReader inputstreamreader = new InputStreamReader(System.in);
        BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
        int i = (int)(Math.random() * 100D);
        Score score;
        try
        {
            score = new Score(0);
        }
        catch(IOException ioexception)
        {
            System.out.println("Could not create score object");
            System.out.println(ioexception);
            return;
        }
        System.out.println("Checking grid number");
        System.out.println("Setting grid number to " + i);
        score.setGridNumber(i);
        System.out.println("Set grid number to " + score.getGridNumber());
        System.out.println();
        do
        {
            score = (Score)score.clone();
            System.out.println();
            System.out.print("Current score ");
            System.out.println(score);
            System.out.print("Enter a word:");
            try
            {
                score.submitWord(bufferedreader.readLine());
            }
            catch(WordTooShort _ex)
            {
                System.out.println("That word is too short (3 chars minumum).");
            }
            catch(WordNotKnown _ex)
            {
                System.out.println("That word is not known.");
            }
            catch(WordAlreadyUsed _ex)
            {
                System.out.println("You have already used that word.");
            }
            catch(IOException ioexception1)
            {
                System.out.println(ioexception1);
            }
        } while(true);
    }

    public void setGridNumber(int i)
    {
        gridNumber = i;
    }

    public void setPlayer(Player player)
    {
        thePlayer = player;
        setText(toString());
    }

    public void submitWord(String s)
        throws WordTooShort, WordNotKnown, WordAlreadyUsed
    {
        if(s.length() < 3)
            throw new WordTooShort();
        if(!dict.contains(s))
            throw new WordNotKnown();
        if(wordHistory.contains(s.toLowerCase()))
            throw new WordAlreadyUsed();
        wordHistory.add(s.toLowerCase());
        if(s.length() < 5)
        {
            total++;
            setText(toString());
            return;
        }
        if(s.length() == 5)
        {
            total += 2;
            setText(toString());
            return;
        }
        if(s.length() == 6)
        {
            total += 3;
            setText(toString());
            return;
        }
        if(s.length() == 7)
        {
            total += 5;
            setText(toString());
            return;
        } else
        {
            total += 11;
            setText(toString());
            return;
        }
    }

    public String toString()
    {
        if(thePlayer != null)
            return (new Integer(total)).toString() + " " + thePlayer;
        else
            return (new Integer(total)).toString();
    }

    private static Dictionary dict;
    private transient TreeSet wordHistory;
    private Player thePlayer;
    private int gridNumber;
    private int total;
}

