From 7f3cef372578e0ad58509de8e204a663390834d7 Mon Sep 17 00:00:00 2001 From: bestsasi <32939854+bestsasi@users.noreply.github.com> Date: Tue, 7 May 2019 14:19:46 +0700 Subject: [PATCH] Update MultiThreadRespond.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit แก้ code --- MultiThreadRespond.java | 119 ++++++++++++++++++++++++++++++---------- 1 file changed, 90 insertions(+), 29 deletions(-) diff --git a/MultiThreadRespond.java b/MultiThreadRespond.java index 42c53b8..a4dd24b 100644 --- a/MultiThreadRespond.java +++ b/MultiThreadRespond.java @@ -1,53 +1,114 @@ -package Server; - +import java.io.DataOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.ServerSocket; import java.net.Socket; - +import java.util.Scanner; public class MultiThreadRespond implements Runnable{ - + private ServerSocket server; - private int port; - private ObjectOutputStream oos; - private ObjectInputStream ois; + private int port ; + private ObjectOutputStream socketOutput; + private ObjectInputStream socketInput; + + private int left = 7; public MultiThreadRespond(int port){ this.port = port; try{ - server = new ServerSocket(port); + server = new ServerSocket(port); }catch(Exception e){ - } - } - @Override public void run(){ + String [] Word = { "predator", "kingsman", "alien", "aquaman", "avengers", "cinderella","annabelle", "chucky", "incredibles", "conjuring", "frozen", "juon" }; + String rand_word; + char[] hidden_word; + String user_guess = ""; + int wrong_guess = 0; + char[] missed = new char[7]; + boolean letter_found = false, solved = false; + rand_word = Word[ (int)(Math.random() * Word.length) ].toLowerCase(); + hidden_word = new char[rand_word.length()]; + int win = 0; + int lose = 0; + + for (int i = 0; i < rand_word.length(); i++) { + if (rand_word.charAt(i) == ' ') { + hidden_word[i] = ' '; + } else { + hidden_word[i] = '_'; + } + } + + StringBuilder res_hidden_word = new StringBuilder(); + int res_miss_count = wrong_guess; + StringBuilder res_missed = new StringBuilder(); + + System.out.println("Start Games : " + rand_word); while(true){ try{ Socket socket = server.accept(); - //read from socket to ObjectInputStream object - ois = new ObjectInputStream(socket.getInputStream()); - //convert ObjectInputStream object to String - String message = (String) ois.readObject(); - System.out.println("Message Received: " + message); - //create ObjectOutputStream object - oos = new ObjectOutputStream(socket.getOutputStream()); - //write object to Socket - oos.writeObject("Hi Client "+message); - //close resources - ois.close(); - oos.close(); - socket.close(); - //terminate the server if client sends exit request - if(message.equalsIgnoreCase("exit")) break; - }catch(Exception e){ + socketInput = new ObjectInputStream(socket.getInputStream()); + socketOutput = new ObjectOutputStream(socket.getOutputStream()); + boolean running = true; + while (running){ + System.out.print("\nWord: "); + res_hidden_word.delete(0, res_hidden_word.length()); + for (int i = 0; i < rand_word.length(); i++) { + System.out.print(hidden_word[i] + " "); + res_hidden_word.append(hidden_word[i]).append(" "); + } + + String action = (String) socketInput.readObject(); + System.out.println(action); + if (action.equals("start") || action.equals(" ")){ + res_miss_count = wrong_guess; + socketOutput.writeObject(res_hidden_word + "@" + res_miss_count + "@" + res_missed + "@" + win + "@" + lose ); + }else if (action.equals("End Game") && lose == 1) { + socketOutput.writeObject(rand_word); + }else if (action.equals("exit")) { + socketOutput.close(); + socketInput.close(); + socket.close(); + }else if (action.substring(0,5).equals("send:")){ + user_guess = action.substring(5,6); + System.out.print("\nGuess: " + user_guess); + letter_found = false; + for (int i = 0; i < rand_word.length(); i++) { + if (user_guess.toLowerCase().charAt(0) == rand_word.toLowerCase().charAt(i)) { + hidden_word[i] = rand_word.charAt(i); + letter_found = true; + } + } + if (!letter_found) { + missed[wrong_guess] = user_guess.charAt(0); + wrong_guess++; + } + int hidden_count = 0; + for (int i = 0; i < rand_word.length(); i++) { + if ('_' == hidden_word[i]) + hidden_count++; + } + if (hidden_count > 0) { + solved = false; + } else{ + solved = true; + } + } + if (wrong_guess >= left){ + lose = 1; + } + if (solved){ + win = 1; + } + } + }catch(Exception e){ + System.out.println(e); } - } } - }