Skip to content
Snippets Groups Projects
Commit e1e7eb4a authored by Sarah CHERCHEM's avatar Sarah CHERCHEM
Browse files

Client : ajout des méthodes initiales de Client

parent 04741a0e
No related branches found
No related tags found
No related merge requests found
package src;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Client {
private static final String SERVER_ADDRESS = "localhost";
private static final int PORT = 1234;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private Scanner scanner;
public Client() {
scanner = new Scanner(System.in);
}
public void connect() {
try {
socket = new Socket(SERVER_ADDRESS, PORT);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
System.out.println("Connecté au serveur Mastermind !");
play();
} catch (IOException e) {
System.err.println("Erreur de connexion au serveur : " + e.getMessage());
} finally {
closeConnection();
}
}
private void play() {
while (true) {
String guess = getUserInput();
if (guess == null) continue;
sendGuess(guess);
String response = receiveResponse();
if (response == null) {
System.out.println("Connexion fermée par le serveur.");
break;
}
System.out.println("Réponse du serveur : " + response);
if (response.equals("4 0")) {
System.out.println("Félicitations ! Vous avez trouvé la bonne combinaison !");
break;
}
}
}
private String getUserInput() {
System.out.print("Entrez une combinaison (4 lettres parmi B,G,O,R,W,Y) : ");
String input = scanner.nextLine().toUpperCase();
if (!input.matches("[BGORWY]{4}")) {
System.out.println("Combinaison invalide, veuillez entrer exactement 4 lettres parmi B, G, O, R, W, Y.");
return null;
}
return input;
}
private void sendGuess(String guess) {
out.println(guess);
}
private String receiveResponse() {
try {
return in.readLine();
} catch (IOException e) {
System.err.println("Erreur de lecture du serveur : " + e.getMessage());
return null;
}
}
private void closeConnection() {
try {
if (socket != null) socket.close();
if (in != null) in.close();
if (out != null) out.close();
scanner.close();
} catch (IOException e) {
System.err.println("Erreur lors de la fermeture des ressources : " + e.getMessage());
}
}
public static void main(String[] args) {
new Client().connect();
}
}
package src;
import java.util.Random;
public class Code {
public static final int CODE_LENGTH = 4;
public static char[] COLORS = new char[]{'B','G','O','R','W','Y'};
private final char[] codeWord = new char[CODE_LENGTH];
public Code(Random random){
for (int i = 0; i < CODE_LENGTH; i++) {
codeWord[i] = COLORS[random.nextInt(COLORS.length)];
}
}
public Code(String codeString){
assert(codeString.length() == CODE_LENGTH);
for(int i=0; i<CODE_LENGTH; i++)
codeWord[i] = codeString.charAt(i);
}
@Override
public String toString() {
return new String(codeWord);
}
/**
* return the number of colors of guess that are correctly positioned
*/
public int numberOfColorsWithCorrectPosition(Code guess){
int count = 0;
for(char color : COLORS){
count += numberOfMatches(color, guess);
}
return count;
}
/**
* return the number of colors of guess that are in this codeWord
* but do not have the correct position
*/
public int numberOfColorsWithIncorrectPosition(Code guess){
int count = 0;
for(char color:COLORS){
int nMatchedOccurrences = numberOfMatches(color, guess);
int nUnmatchedOccurrencesCode = numberOfOccurrences(color, this) - nMatchedOccurrences;
int nUnmatchedOccurrencesGuess = numberOfOccurrences(color, guess) - nMatchedOccurrences;
count += Math.min(nUnmatchedOccurrencesCode, nUnmatchedOccurrencesGuess);
}
return count;
}
private int numberOfOccurrences(char color, Code code){
int count = 0;
for (int i = 0; i < CODE_LENGTH; i++) {
if (code.codeWord[i] == color) count++;
}
return count;
}
private int numberOfMatches(char color, Code guess){
int count = 0;
for (int i = 0; i < CODE_LENGTH; i++) {
if ((this.codeWord[i] == guess.codeWord[i]) && (this.codeWord[i] == color)){
count++;
}
}
return count;
}
@Override
public boolean equals(Object o){
if (o == null) return false;
if (!(o instanceof Code)) return false;
return this.toString().equals(o.toString());
}
}
package src;
public class server {
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment