-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUserManager.java
More file actions
87 lines (71 loc) · 2.55 KB
/
UserManager.java
File metadata and controls
87 lines (71 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class UserManager {
// SINGLETON
private static UserManager userManagerInstance = null;
// ATTRIBUTES
private final Scanner scanner = new Scanner(System.in);
private final List<String> users = new ArrayList<>();
private String currentUser = null;
// CONSTRUCTOR + SINGLETON PROVIDER
private UserManager() {}
public static synchronized UserManager getInstance() {
if (userManagerInstance == null)
userManagerInstance = new UserManager();
return userManagerInstance;
}
// GETTERS AND SETTERS
public Scanner getScanner() { return this.scanner; }
public List<String> getUsers() {
return this.users;
}
public String getCurrentUser() {
return this.currentUser;
}
public void setCurrentUser(String username) {
this.currentUser = username;
}
// OPERATIONS
private void login(Scanner scanner) {
String username = this.getUserInput(scanner, "Enter a username: ");
if (!this.getUsers().contains(username)) {
this.getUsers().add(username);
}
this.setCurrentUser(username);
System.out.println("Hello " + username + "!\n");
}
private void logout() {
System.out.println("\n===================================================\n");
System.out.println("Goodbye " + this.getCurrentUser() + "!");
this.setCurrentUser(null);
System.out.println("You have been LOGGED OUT! Enter a username to login again.");
System.out.println("\n===================================================\n");
}
// HELPER METHOD
private String getUserInput(Scanner scanner, String prompt) {
System.out.print(">> " + prompt);
return scanner.nextLine();
}
// MAIN
public static void main(String[] args) {
UserManager tmge = getInstance();
System.out.println();
while (true) {
tmge.login(tmge.getScanner());
if (tmge.getCurrentUser() != null) {
boolean isLoggedIn = true;
GameEngine gameEngine = new GameEngine(tmge.getCurrentUser(), tmge.getScanner());
while (isLoggedIn) {
Game game = gameEngine.chooseGame();
if (game != null) {
gameEngine.runGame();
} else {
isLoggedIn = false;
}
}
tmge.logout();
}
}
}
}