diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java index 5c072cf..4464437 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/ClientHandler.java @@ -31,7 +31,7 @@ public class ClientHandler implements Runnable { this.clientUserName = in.readLine(); // duplicate handling: if username already taken, assign random name to client if (AllClientNames.allNames("").contains(clientUserName)) { - clientUserName = NameGenerator.randomName(); + clientUserName = NameGenerator.randomName(clientUserName); } // add username to list of all client names for future duplicate checking AllClientNames.allNames(clientUserName); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/NameGenerator.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/NameGenerator.java index 2739cf7..b080320 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/NameGenerator.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/NameGenerator.java @@ -5,16 +5,21 @@ import java.util.Random; // Creates a String beginning with "player_" followed by 4 random letters public class NameGenerator { - static String randomName() { - StringBuilder name = new StringBuilder(); - Random r = new Random(); - for (int i = 0; i < 4; i++) { - char c = (char)(r.nextInt(26) + 'a'); - name.append(c); + static String randomName(String username) { + StringBuilder name; + while (true) { + + name = new StringBuilder(); + Random r = new Random(); + for (int i = 0; i < 4; i++) { + int c = r.nextInt(10); + name.append(c); + } + if (!AllClientNames.allNames("").contains(username + name)) { + break; + } } - return "player_" + name; - } - public static void main (String[] args) { - System.out.println(randomName()); + return username + name; } + }