Отслеживайте очки (победы / поражения) от пользователя JAVA и регистрируйте их в текстовом файле - PullRequest
0 голосов
/ 03 июня 2018

В настоящее время я пытаюсь создать игру, в которой пользователь может войти в систему и зарегистрироваться, если у него нет учетной записи.Я уже сделал первую игру (бумага, ножницы, камень), и я хотел бы добавить функцию оценки, которая отслеживает количество побед / поражений пользователей.Но проблема в том, что я абсолютно не знаю, как это сделать, поэтому я хотел бы заимствовать некоторую помощь (идеи), чтобы сделать это, пожалуйста.

Сначала я подумал о создании Hashmap, но поскольку ключ будет пользователем, и у меня не будет места для записи числа побед / поражений: /.

Вот мой код:

Основной

package boitedejeux;

import java.io.IOException;
import java.util.Scanner;

public class BoiteDeJeux {

    public static void main(String[] args) throws IOException, UsernameException, PasswordException {
        Scanner input = new Scanner(System.in);
        String username;
        String password;
        System.out.println("Enter your username:");
        username = input.nextLine();
        System.out.println("Enter your password:");
        password = input.nextLine();
        UserList test = new UserList();
        test.inscription(username, password);
    }

}

Пользователь

package boitedejeux;

import java.util.Objects;

public class User {

    protected String username;
    protected String password;

    public User(String username, String password) throws UsernameException, PasswordException {
        // On vérifie que le nom de l'utilisateur ne soit pas vide.
        if (username.length() == 0 || username.length() == 1) {
            throw new UsernameException("The username must contain at least two elements.");
        }
        // On vérifie que le nom de l'utilisateur doit commencer par une majuscule.
        if (username.charAt(0) > 'Z' || username.charAt(0) < 'A') {
            throw new UsernameException("The username must begin with an uppercase.");
        }
        // On vérifie que le nom de l'utilisateur ne doit contenir que des minuscules et des chiffres.
        for (int i = 1; i < username.length(); i++) {
            if ((username.charAt(i) > 'z' || username.charAt(i) < 'a') && (username.charAt(i) > '9' || username.charAt(i) < '0')) {
                throw new UsernameException("The username must contain only lowercase and numbers.");
            }
        }
        // On vérifie que le vérifie que le mot de passe de l'utilisateur ne soit pas vide.
        if (password.length() == 0 || password.length() == 1) {
            throw new PasswordException("The password contain at least two elements.");
        }
        // On vérifie que le mot de passe de l'utilisateur doit commencer par une majuscule.
        if (password.charAt(0) > 'Z' || password.charAt(0) < 'A') {
            throw new PasswordException("The password must begin with an uppercase.");
        }
        // On vérifie que le mot de passe de l'utilisateur ne doit contenir que des minuscules et des chiffres.
        for (int i = 1; i < password.length(); i++) {
            if ((password.charAt(i) > 'z' || password.charAt(i) < 'a') && (password.charAt(i) > '9' || password.charAt(i) < '0')) {
                throw new PasswordException("The password must contain only lowercase and numbers.");
            }
        }
        this.password = password;
        this.username = username;
    }

    //Renvoie le pseudo de l'utilisateur.
    public String getUsername() {
        return username;
    }

    //Renvoie le mot de passe de l'utilisateur.
    public String getPassword() {
        return password;
    }

    @Override
    public boolean equals(Object o) {
        if (o instanceof User) {
            return ((User) o).username.equals(username);
        }
        return false;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 97 * hash + Objects.hashCode(this.username);
        return hash;
    }
}

UserList

package boitedejeux;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.HashSet;
import java.util.Scanner;
import java.util.*;

public class UserList {

    private HashSet<User> loginList;

    //Initialise une liste vide et la remplie à partir d'un fichier texte.
    public UserList() throws UsernameException, PasswordException {
        Scanner scan;
        loginList = new HashSet();
        try {
            scan = new Scanner(new File("src/boitedejeux/Logins.txt"));
            String ligne = scan.nextLine();
            while (scan.hasNext()) {
                ligne = scan.nextLine();
                String[] res = ligne.split(", ");
                loginList.add(new User(res[0], (res[1])));
            }
        } catch (FileNotFoundException e) {
            System.out.println("Error");
        }
    }

    // Vérifie que la loginList soit bien initialisé.
    //Puis l'a parcours en vérifiant que le nom d'uttilisateur et le mot de passe correspondent à un présent dans la liste. Si présent renvoie "True" sinon "False".
    public boolean authenticate(String username, String password) {
        if (null == loginList) {
            throw new IllegalStateException("The login list isn't initialised");
        }

        return loginList.stream()
                .filter(usern -> usern.getUsername().equals(username))
                .filter(passw -> passw.getPassword().equals(password))
                .findFirst()
                .isPresent();
    }

    //Ajoute un joueur dans le fichier texte.
    public void inscription(String username, String password) throws IOException, UsernameException, PasswordException {
        // On vérifie que le nom d'utilisateur n'existe déjà pas.

        Iterator<User> it = loginList.iterator();
        while(it.hasNext()){
            User u = (User) it.next();
            if(username.equals(u)){
                throw new UsernameException("This username already exist.");
            }
        }
        // On vérifie que le nom de l'utilisateur ne soit pas vide.
        if (username.length() == 0 || username.length() == 1) {
            throw new UsernameException("The username must contain at least two elements.");
        }
        // On vérifie que le nom de l'utilisateur doit commencer par une majuscule.
        if (username.charAt(0) > 'Z' || username.charAt(0) < 'A') {
            throw new UsernameException("The username must begin with an uppercase.");
        }
        // On vérifie que le nom de l'utilisateur ne doit contenir que des minuscules et des chiffres.
        for (int i = 1; i < username.length(); i++) {
            if ((username.charAt(i) > 'z' || password.charAt(i) < 'a') && (username.charAt(i) > '9' || username.charAt(i) < '0')) {
                throw new UsernameException("The username must contain only lowercase and numbers.");
            }
        }
        // On vérifie que le mot de passe de l'utilisateur ne soit pas vide.
        if (password.length() == 0 || username.length() == 1) {
            throw new PasswordException("The password must contain at least two elements.");
        }
        // On vérifie que le mot de passe de l'utilisateur doit commencer par une majuscule.
        if (password.charAt(0) > 'Z' || password.charAt(0) < 'A') {
            throw new PasswordException("The password must begin with an uppercase.");
        }
        // On vérifie que le mot de passe de l'utilisateur ne doit contenir que des minuscules et des chiffres.
        for (int i = 1; i < password.length(); i++) {
            if ((password.charAt(i) > 'z' || password.charAt(i) < 'a') && (password.charAt(i) > '9' || password.charAt(i) < '0')) {
                throw new PasswordException("The password must contain only lowercase and numbers.");
            }
            Writer output;
            output = new BufferedWriter(new FileWriter("src/boitedejeux/Logins.txt", true));
            output.append("\n" + username + ", " + password);
            output.close();
        }
    }
}

UsernameException

package boitedejeux;
public class UsernameException extends Exception {
    public UsernameException() {
    }
    public UsernameException(String msg) {
        super(msg);
    }
}

PasswordException

package boitedejeux;

public class PasswordException extends Exception {

    public PasswordException() {
    }

    public PasswordException(String msg) {
        super(msg);
    }
}

Login.txt

Username, Password
Test, Test
Lol, Lol
TT, Te

Заранее спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...