import java.net.*;
import java.io.*;
import java.util.*;

public class sThread extends Thread
{
	Socket socket = null;
	BufferedReader in = null;
	PrintWriter out = null;

	sThread(Socket s) {
		socket = s;
		try {
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()), true);
		} catch (IOException e) {}
	}

	public void run() {
		play();
		try { socket.close(); } catch (IOException e) {}
	}

	public Vector getinput() {
		String input = null;
		Vector v = new Vector();

		try { input = in.readLine(); } catch (IOException e) {}

		StringTokenizer st = new StringTokenizer( input );
		while (st.hasMoreTokens()) {
			v.add(st.nextToken());
		}

		return v;
	}

	public void play() {
		String answer;
		Guess g = null;
		Vector input = null;
		boolean loop = true;

		while ( loop ) {
			while (true) {
				input = getinput();
				if(input.firstElement().toString().equalsIgnoreCase("start")) {
					out.println("game start");
					g = new Guess();
					break;
				} else if (input.firstElement().toString().equalsIgnoreCase("quit")) {
					out.println("bye bye");
					loop = false;
					break;
				} else {
					out.println("use START or QUIT only!");
				}
			}

			while ( loop ) {
				input = getinput();
				if(input.firstElement().toString().equalsIgnoreCase("guess")) {
					if (input.size() != 2) {
						out.println("usage: guess number");
						continue;
					}
					answer = g.guess(input.elementAt(1).toString());
					if(answer.equalsIgnoreCase("4A0B")) {
						out.println("You win!!");
						break;
					}
					out.println(answer);
				} else if (input.firstElement().toString().equalsIgnoreCase("abort")) {
					out.println("game abort");
					break;
				} else {
					out.println("use GUESS or ABORT only!");
				}
			}
		}
	}
}

