Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 90 additions & 29 deletions MultiThreadRespond.java
Original file line number Diff line number Diff line change
@@ -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);
}

}
}

}