package icpc.challenge.play; import icpc.challenge.builtin.DoNothingPlayer; import icpc.challenge.link.Protocol.Message; import icpc.challenge.link.Protocol.MoveMessage; import icpc.challenge.link.Protocol.SnapshotMessage; import icpc.challenge.view.InteractiveView; import icpc.challenge.view.SimpleView; import icpc.challenge.view.View3D; import icpc.challenge.world.AbstractPlayer; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.PrintStream; import java.net.Socket; public class PlayClient { private static void usage(String paramString) { if (paramString != null) System.err.println(paramString); System.err.println("usage: PlayClient <host> <port> sled|bumper0|bumper1"); System.err.println(" [-view simple]"); System.err.println(" [-view 3D]"); System.exit(-1); } public static void main(String[] paramArrayOfString) { Object localObject1 = null; if (paramArrayOfString.length < 3) usage(null); try { int i = 3; while (i < paramArrayOfString.length) { int j = 0; if ((paramArrayOfString[i].equals("-view")) && (i + 1 < paramArrayOfString.length)) { if (paramArrayOfString[(i + 1)].equals("simple")) { if (localObject1 != null) usage("Only one view permitted"); localObject1 = new SimpleView(); j = 2; } if (paramArrayOfString[(i + 1)].equals("3D")) { if (localObject1 != null) usage("Only one view permitted"); localObject1 = new View3D(); j = 2; } } if (j == 0) usage(null); i += j; } } catch (Exception localException) { System.err.println(localException); usage(null); } Object localObject2 = null; Object localObject3 = null; int k = 0; if (paramArrayOfString[2].equals("sled")) k = 0; else if (paramArrayOfString[2].equals("bumper0")) k = 1; else if (paramArrayOfString[2].equals("bumper1")) k = 2; else usage(null); Socket localSocket = null; try { localSocket = new Socket(paramArrayOfString[0], Integer.parseInt(paramArrayOfString[1]) + k); } catch (IOException localIOException1) { System.err.println(localIOException1); usage(null); } try { Object localObject4; ObjectOutputStream localObjectOutputStream = new ObjectOutputStream(localSocket.getOutputStream()); ObjectInputStream localObjectInputStream = new ObjectInputStream(localSocket.getInputStream()); int l = localObjectInputStream.readInt(); if (paramArrayOfString[2].equals("sled")) { localObject4 = new SinglePlayerSled(new DoNothingPlayer(), l); localObject3 = localObject4; localObject2 = localObject4; } else if (paramArrayOfString[2].equals("bumper0")) { localObject4 = new SinglePlayerBumper(new DoNothingPlayer(), l, 0); localObject3 = localObject4; localObject2 = localObject4; } else if (paramArrayOfString[2].equals("bumper1")) { localObject4 = new SinglePlayerBumper(new DoNothingPlayer(), l, 1); localObject3 = localObject4; localObject2 = localObject4; } if (localObject1 == null) localObject1 = new SimpleView(); ((InteractiveView)localObject1).addKeyListener(localObject3); long l1 = System.currentTimeMillis(); Protocol.Message localMessage = (Protocol.Message)localObjectInputStream.readObject(); if (localMessage instanceof Protocol.SnapshotMessage) { Protocol.SnapshotMessage localSnapshotMessage = (Protocol.SnapshotMessage)localMessage; ((InteractiveView)localObject1).snapshot(localSnapshotMessage.stime, localSnapshotMessage.world); localObject2.snapshot(localSnapshotMessage.stime, localSnapshotMessage.world); Protocol.MoveMessage localMoveMessage = new Protocol.MoveMessage(); localMoveMessage.move = localObject2.waitForMove(localSnapshotMessage.stime, 0L); localObjectOutputStream.reset(); localObjectOutputStream.writeObject(localMoveMessage); localObjectOutputStream.flush(); } } catch (IOException localIOException2) { System.err.println(localIOException2); return; } catch (ClassNotFoundException localClassNotFoundException) { } } }