forked from sas12028/CheckersAI
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add basic Client and server credentials
- Loading branch information
1 parent
cf0426d
commit fe73ebc
Showing
2 changed files
with
165 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
user: 9 | ||
password: 919747 | ||
|
||
user: 10 | ||
password:183220 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
// RmCheckersClient.java is a client that interacts with Sam, a checkers | ||
// server. It is designed to illustrate how to communicate with the server | ||
// in a minimal way. It is not meant to be beautiful java code. | ||
// Given the correct machine name and port for the server, a user id, and a | ||
// password (_machine, _port, _user, and _password in the code), running | ||
// this program will initiate connection and start a game with the default | ||
// player. (the _machine and _port values used should be correct, but check | ||
// the protocol document.) | ||
// | ||
// the program has been tested and used under Java 5.0, and 6.0, but probably | ||
// would work under older or newer versions. (also works under Java 8). | ||
// | ||
// Copyright (C) 2008 Robert McCartney | ||
|
||
// This program is free software; you can redistribute it and/or | ||
// modify it under the terms of the GNU General Public License as | ||
// published by the Free Software Foundation; either version 2 of the | ||
// License, or (at your option) any later version. | ||
|
||
// This program is distributed in the hope that it will be useful, but | ||
// WITHOUT ANY WARRANTY; without even the implied warranty of | ||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
// General Public License for more details. | ||
|
||
// You should have received a copy of the GNU General Public License | ||
// along with this program; if not, write to the Free Software | ||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 | ||
// USA | ||
|
||
import java.io.*; | ||
import java.net.*; | ||
|
||
public class RmCheckersClient { | ||
|
||
protected final static String _user1 = "9"; | ||
protected final static String _password1 = "919747"; | ||
protected final static String _user2 = "10"; | ||
protected final static String _password2 = "183220"; | ||
protected final static String _opponent = "0"; | ||
protected final String _machine = "icarus.engr.uconn.edu"; | ||
protected int _port = 3499; | ||
protected Socket _socket = null; | ||
protected PrintWriter _out = null; | ||
protected BufferedReader _in = null; | ||
|
||
protected String _gameID; | ||
protected String _myColor; | ||
|
||
public RmCheckersClient(){ | ||
_socket = openSocket(); | ||
} | ||
|
||
public Socket getSocket(){ | ||
return _socket; | ||
} | ||
|
||
public PrintWriter getOut(){ | ||
return _out; | ||
} | ||
|
||
public BufferedReader getIn(){ | ||
return _in; | ||
} | ||
|
||
public void setGameID(String id){ | ||
_gameID = id; | ||
} | ||
|
||
public String getGameID() { | ||
return _gameID; | ||
} | ||
|
||
public void setColor(String color){ | ||
_myColor = color; | ||
} | ||
|
||
public String getColor() { | ||
return _myColor; | ||
} | ||
|
||
public static void main(String[] argv){ | ||
String readMessage; | ||
RmCheckersClient myClient = new RmCheckersClient(); | ||
|
||
try{ | ||
myClient.readAndEcho(); // start message | ||
myClient.readAndEcho(); // ID query | ||
myClient.writeMessageAndEcho(_user1); // user ID | ||
|
||
myClient.readAndEcho(); // password query | ||
myClient.writeMessage(_password1); // password | ||
|
||
myClient.readAndEcho(); // opponent query | ||
myClient.writeMessageAndEcho(_opponent); // opponent | ||
|
||
myClient.setGameID(myClient.readAndEcho().substring(5,10)); // game | ||
myClient.setColor(myClient.readAndEcho().substring(6,11)); // color | ||
System.out.println("I am playing as "+myClient.getColor()+ " in game number "+ myClient.getGameID()); | ||
readMessage = myClient.readAndEcho(); | ||
// depends on color--a black move if i am white, Move:Black:i:j | ||
// otherwise a query to move, ?Move(time): | ||
if (myClient.getColor().equals("White")) { | ||
readMessage = myClient.readAndEcho(); // move query | ||
myClient.writeMessageAndEcho("(2:4):(3:5)"); | ||
readMessage = myClient.readAndEcho(); // white move | ||
readMessage = myClient.readAndEcho(); // black move | ||
readMessage = myClient.readAndEcho(); // move query | ||
// here you would need to move again | ||
} | ||
else { | ||
myClient.writeMessageAndEcho("(5:3):(4:4)"); | ||
readMessage = myClient.readAndEcho(); // black move | ||
readMessage = myClient.readAndEcho(); // white move | ||
readMessage = myClient.readAndEcho(); // move query | ||
// here you would need to move again | ||
} | ||
|
||
myClient.getSocket().close(); | ||
} catch (IOException e) { | ||
System.out.println("Failed in read/close"); | ||
System.exit(1); | ||
} | ||
} | ||
|
||
public String readAndEcho() throws IOException | ||
{ | ||
String readMessage = _in.readLine(); | ||
System.out.println("read: "+readMessage); | ||
return readMessage; | ||
} | ||
|
||
public void writeMessage(String message) throws IOException | ||
{ | ||
_out.print(message+"\r\n"); | ||
_out.flush(); | ||
} | ||
|
||
public void writeMessageAndEcho(String message) throws IOException | ||
{ | ||
_out.print(message+"\r\n"); | ||
_out.flush(); | ||
System.out.println("sent: "+ message); | ||
} | ||
|
||
public Socket openSocket(){ | ||
//Create socket connection, adapted from Sun example | ||
try{ | ||
_socket = new Socket(_machine, _port); | ||
_out = new PrintWriter(_socket.getOutputStream(), true); | ||
_in = new BufferedReader(new InputStreamReader(_socket.getInputStream())); | ||
} catch (UnknownHostException e) { | ||
System.out.println("Unknown host: " + _machine); | ||
System.exit(1); | ||
} catch (IOException e) { | ||
System.out.println("No I/O"); | ||
System.exit(1); | ||
} | ||
return _socket; | ||
} | ||
} |