fork download
  1. package ist.ass2;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.PrintWriter;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;
  9.  
  10. public class NCBServer {
  11.  
  12. public static void main(String[] args) throws Exception{
  13. ServerSocket listener = new ServerSocket(2399);
  14. System.out.println("Server is running.");
  15. try{
  16. while(true){
  17. Game game = new Game();
  18. Game.Player player1 = game.new Player(listener.accept(), 1);
  19. Game.Player player2 = game.new Player(listener.accept(), 2);
  20. player1.start();
  21. player2.start();
  22. }
  23. } finally{
  24. listener.close();
  25. }
  26. }
  27. }
  28.  
  29. class Game{
  30.  
  31. String [] playermove = new String[2];
  32. int gamecount = 0;
  33.  
  34. public synchronized boolean legalMove(String move){
  35. if(move.equals("ninja") || move.equals("cowboy") || move.equals("bear")){
  36. return true;
  37. }
  38. return false;
  39. }
  40.  
  41. public boolean checkRoundEnd(){
  42. if(playermove[0] != null && playermove[1] != null)
  43. return true;
  44. else
  45. return false;
  46. }
  47.  
  48.  
  49. class Player extends Thread{
  50. int playerid;
  51. Player opponent;
  52. Socket socket;
  53. PrintWriter writer;
  54. int wins;
  55. int losses;
  56. int draws;
  57.  
  58. public Player(Socket socket, int playerid){
  59. this.socket = socket;
  60. this.playerid = playerid;
  61. try{
  62. reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  63. writer = new PrintWriter(socket.getOutputStream());
  64. writer.println("WELCOME Player " + playerid);
  65. writer.flush();
  66.  
  67. } catch(IOException e){
  68. e.printStackTrace();
  69. }
  70. }
  71.  
  72. public void setScore(){
  73. //For Player 1
  74. if(playerid == 1){
  75. //win
  76. if(playermove[0].equals("ninja") && playermove[1].equals("cowboy")){
  77. writer.println("RESULT Player 1 wins");
  78. writer.flush();
  79. wins++;
  80. }
  81. else if(playermove[0].equals("cowboy") && playermove[1].equals("bear")){
  82. writer.println("RESULT Player 1 wins");
  83. writer.flush();
  84. wins++;
  85. }
  86. else if(playermove[0].equals("bear") && playermove[1].equals("ninja")){
  87. writer.println("RESULT Player 1 wins");
  88. writer.flush();
  89. wins++;
  90. }
  91. //tie
  92. else if(playermove[0].equals("bear") && playermove[1].equals("bear")){
  93. writer.println("RESULT Draw");
  94. writer.flush();
  95. draws++;
  96. }
  97. else if(playermove[0].equals("cowboy") && playermove[1].equals("cowboy")){
  98. writer.println("RESULT Draw");
  99. writer.flush();
  100. draws++;
  101. }
  102. else if(playermove[0].equals("ninja") && playermove[1].equals("ninja")){
  103. writer.println("RESULT Draw");
  104. writer.flush();
  105. draws++;
  106. }
  107. else{
  108. writer.println("RESULT Player 2 wins");
  109. writer.flush();
  110. losses++;
  111. }
  112. }
  113. if(playerid == 2){
  114. //win
  115. if(playermove[1].equals("ninja") && playermove[0].equals("cowboy")){
  116. wins++;
  117. }
  118. else if(playermove[1].equals("cowboy") && playermove[0].equals("bear")){
  119. wins++;
  120. }
  121. else if(playermove[1].equals("bear") && playermove[0].equals("ninja")){
  122. wins++;
  123. }
  124. //tie
  125. else if(playermove[1].equals("bear") && playermove[0].equals("bear")){
  126. draws++;
  127. }
  128. else if(playermove[1].equals("cowboy") && playermove[0].equals("cowboy")){
  129. draws++;
  130. }
  131. else if(playermove[1].equals("ninja") && playermove[0].equals("ninja")){
  132. draws++;
  133. }
  134. else{
  135. losses++;
  136. }
  137. }
  138. }
  139.  
  140. public void run(){
  141. try{
  142. String command;
  143. gamecount = 1;
  144.  
  145. writer.println("MSG All players connected");
  146. writer.flush();
  147.  
  148. writer.println("MOVE (Round " + gamecount + ") " + "Your Move! ninja - cowboy - bear");
  149. writer.flush();
  150.  
  151.  
  152. while(true){
  153. while((command = reader.readLine()) != null){
  154. if(legalMove(command)){
  155. if(playerid == 1){
  156. playermove[0] = command;
  157. }
  158. else{
  159. playermove[1] = command;
  160. }
  161. if(checkRoundEnd()){
  162. gamecount++;
  163. break;
  164. }
  165. writer.println("MSG Please wait for your opponent");
  166. writer.flush();
  167. break;
  168. }
  169. else{
  170. writer.println("ERROR: please type only ninja, cowboy or bear");
  171. writer.flush();
  172. }
  173. }
  174. System.out.println("DEBUG" + playerid);
  175. if(checkRoundEnd()){
  176. setScore();
  177. writer.println("MOVE (Round " + gamecount + ") " + "Your Move! ninja - cowboy - bear");
  178. writer.flush();
  179. if(playerid == 1)
  180. playermove[0] = null;
  181. else
  182. playermove[1] = null;
  183. }
  184. }
  185. } catch (IOException e){
  186. e.printStackTrace();
  187. }
  188. }
  189. }
  190. }
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:10: error: class NCBServer is public, should be declared in a file named NCBServer.java
public class NCBServer {
       ^
1 error
stdout
Standard output is empty