rendered paste bodyimport java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
/**
* What the user runs to play the game. Connects to the server, and provides an interface for playing.
*
* @author Thomas Horner
* @version 5-16-07
*/
public class Client implements ActionListener
{
Button loginButton, registerButton, tempLogOut, tempSend;
TextField nameField,serverField, tempChat;
TextArea tempChatbox,tempPlayerList;
Label title,nfH,pfH,sfH;
Socket sSocket = null;
PrintWriter out = null;
BufferedReader in = null;
boolean cc = false;
public static void main (String[] args)
{
Client me = new Client();
}
public Client()
{
title = new Label("Login");
title.setForeground(new Color (200,180,180));
nfH = new Label("Login Name");
nfH.setForeground(new Color (200,180,180));
sfH = new Label("Server IP");
sfH.setForeground(new Color (200,180,180));
title.setAlignment(1);
Frame gameWindow = new Frame("IMMURE - Login");
gameWindow.setTitle("IMMURE - Login");
gameWindow.setLayout(new BorderLayout());
gameWindow.setBackground(Color.black);
gameWindow.setSize (450,200);
nameField = new TextField (20);
serverField = new TextField (20);
loginButton = new Button("Login");
loginButton.addActionListener(this);
registerButton = new Button("New Account");
nameField.setBackground(new Color (80,60,60));
nameField.setForeground(new Color (200,180,180));
nameField.setFont(new Font("Verdana", Font.BOLD, 14));
serverField.setBackground(new Color (80,60,60));
serverField.setForeground(new Color (200,180,180));
serverField.setFont(new Font("Verdana", Font.BOLD, 14));
loginButton.setBackground(new Color (80,60,60));
loginButton.setForeground(new Color (200,180,180));
registerButton.setBackground(new Color (80,60,60));
registerButton.setForeground(new Color (200,180,180));
Panel l = new Panel();
Panel ls = new Panel();
ls.add(nfH);
ls.add(nameField);
l.setLayout(new BorderLayout());
l.add("Center",ls);
Panel ls2 = new Panel();
ls2.add(sfH);
ls2.add(serverField);
l.add("North",ls2);
Panel p = new Panel();
p.add(loginButton);
p.add(registerButton);
gameWindow.add("Center", l);
gameWindow.add("South", p);
gameWindow.add("North", title);
gameWindow.pack();
gameWindow.show();
gameWindow.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
//tells the server to exit
if (cc) out.println("EXIT");
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent ae)
{
if (ae.getSource().equals(loginButton))
{
String ip;
ip = serverField.getText();
try {
login(ip);
} catch (IOException e) { System.out.println ("Network connection to " + ip + " failed!"); }
}
}
public void login(String ip) throws IOException
{
try
{
sSocket = new Socket (ip,6188);
out = new PrintWriter(sSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
sSocket.getInputStream()));
}
catch (UnknownHostException e)
{
System.out.println("Couldn't connect to " + ip + " on port 6188.");
}
cc = true;
out.println ("LOGIN " + nameField.getText());
String ret = null;
try {
boolean quit = false;
while (!quit)
{
ret = in.readLine();
if (ret != null)
{
quit = true;
}
}
} catch (Exception e) { System.out.println ("Something happened..."); }
handleLogin(ret,ip);
out.close();
in.close();
sSocket.close();
}
public createMainRoom (String ip)
{
try
{
sSocket = new Socket (ip,6188);
out = new PrintWriter(sSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
sSocket.getInputStream()));
}
catch (UnknownHostException e)
{
System.out.println("Couldn't connect to " + ip + " on port 6188.");
}
gameWindow.removeAll();
gameWindow.setTitle("IMMURE - Testing Multiple Clients");
tempChatBox = newTextArea ("Chat Box",20,60);
tempPlayerList = newTextArea ("Chatters",20,20);
gameWindow.add ("WEST",tempChatBox);
gameWindow.add ("EAST",tempPlayerList);
Panel ChatFunctions = new Panel();
tempChat = new TextField (60);
tempSend = new Button ("Send");
tempLogOut = new Button ("Log Out");
ChatFunctions.add (tempChat);
ChatFunctions.add (tempSend);
ChatFunctions.add (tempLogOut);
gameWindow.add ("SOUTH",ChatFunctions);
}
public void handleLogin (String code, String ip)
{
title.setText (code);
createMainRoom(ip);
}
}