From 665428099001f779e2c6a6cdf1c75387f4304af7 Mon Sep 17 00:00:00 2001 From: Seraina Date: Sun, 27 Mar 2022 15:25:14 +0200 Subject: [PATCH] Adjusted Random Name generator to include wanted username and switched to numbers instead of character for readability --- .../multiplayer/server/ClientHandler.java | 2 +- .../multiplayer/server/NameGenerator.java | 25 +++++++++++-------- 2 files changed, 16 insertions(+), 11 deletions(-) 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; } + }