mirror of
https://github.com/kmitresse/Cards-Rush.git
synced 2026-05-16 17:11:48 +00:00
feat: dev-web - update pojo and database schema
This commit is contained in:
@@ -19,6 +19,9 @@ CREATE TABLE IF NOT EXISTS game
|
|||||||
id INT NOT NULL AUTO_INCREMENT,
|
id INT NOT NULL AUTO_INCREMENT,
|
||||||
difficulty VARCHAR(255) NOT NULL,
|
difficulty VARCHAR(255) NOT NULL,
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
nb_rounds INT NOT NULL,
|
||||||
|
nb_colors INT NOT NULL,
|
||||||
|
nb_values_per_color INT NOT NULL,
|
||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,15 @@ public class Game implements Serializable {
|
|||||||
@Enumerated(EnumType.STRING)
|
@Enumerated(EnumType.STRING)
|
||||||
private Difficulty difficulty;
|
private Difficulty difficulty;
|
||||||
|
|
||||||
|
@Column(name = "nb_rounds")
|
||||||
|
private int nbRounds;
|
||||||
|
|
||||||
|
@Column(name = "nb_colors")
|
||||||
|
private int nbColors;
|
||||||
|
|
||||||
|
@Column(name = "nb_values_per_color")
|
||||||
|
private int nbValuesPerColor;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
|
@OneToMany(mappedBy = "game", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
|
||||||
private Set<Player> players;
|
private Set<Player> players;
|
||||||
|
|
||||||
@@ -63,9 +72,15 @@ public class Game implements Serializable {
|
|||||||
*
|
*
|
||||||
* @param difficulty la difficulté de la partie
|
* @param difficulty la difficulté de la partie
|
||||||
* @see Difficulty
|
* @see Difficulty
|
||||||
|
* @param nbRounds le nombre de tours de la partie
|
||||||
|
* @param nbColors le nombre de couleurs présente dans le deck
|
||||||
|
* @param nbValuesPerColor le nombre de valeurs par couleur
|
||||||
*/
|
*/
|
||||||
public Game(Difficulty difficulty) {
|
public Game(Difficulty difficulty, int nbRounds, int nbColors, int nbValuesPerColor) {
|
||||||
this.difficulty = difficulty;
|
this.difficulty = difficulty;
|
||||||
|
this.nbRounds = nbRounds;
|
||||||
|
this.nbColors = nbColors;
|
||||||
|
this.nbValuesPerColor = nbValuesPerColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -74,12 +89,18 @@ public class Game implements Serializable {
|
|||||||
* @param id l'identifiant de la partie
|
* @param id l'identifiant de la partie
|
||||||
* @param createdAt la date de création de la partie
|
* @param createdAt la date de création de la partie
|
||||||
* @param difficulty la difficulté de la partie
|
* @param difficulty la difficulté de la partie
|
||||||
|
* @param nbRounds le nombre de tours de la partie
|
||||||
|
* @param nbColors le nombre de couleurs présente dans le deck
|
||||||
|
* @param nbValuesPerColor le nombre de valeurs par couleur
|
||||||
* @param players les joueurs de la partie
|
* @param players les joueurs de la partie
|
||||||
*/
|
*/
|
||||||
public Game(BigDecimal id, Date createdAt, Difficulty difficulty, Set<Player> players) {
|
public Game(BigDecimal id, Date createdAt, Difficulty difficulty, int nbRounds, int nbColors, int nbValuesPerColor, Set<Player> players) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.createdAt = createdAt;
|
this.createdAt = createdAt;
|
||||||
this.difficulty = difficulty;
|
this.difficulty = difficulty;
|
||||||
|
this.nbRounds = nbRounds;
|
||||||
|
this.nbColors = nbColors;
|
||||||
|
this.nbValuesPerColor = nbValuesPerColor;
|
||||||
this.players = players;
|
this.players = players;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,6 +138,48 @@ public class Game implements Serializable {
|
|||||||
this.difficulty = difficulty;
|
this.difficulty = difficulty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return le nombre de tours de la partie
|
||||||
|
*/
|
||||||
|
public int getNbRounds() {
|
||||||
|
return nbRounds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param nbRounds le nouveau nombre de tours de la partie
|
||||||
|
*/
|
||||||
|
public void setNbRounds(int nbRounds) {
|
||||||
|
this.nbRounds = nbRounds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return le nombre de couleurs présente dans le deck
|
||||||
|
*/
|
||||||
|
public int getNbColors() {
|
||||||
|
return nbColors;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param nbColors le nouveau nombre de couleurs présente dans le deck
|
||||||
|
*/
|
||||||
|
public void setNbColors(int nbColors) {
|
||||||
|
this.nbColors = nbColors;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return le nombre de valeurs par couleur
|
||||||
|
*/
|
||||||
|
public int getNbValuesPerColor() {
|
||||||
|
return nbValuesPerColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param nbValuesPerColor le nouveau nombre de valeurs par couleur
|
||||||
|
*/
|
||||||
|
public void setNbValuesPerColor(int nbValuesPerColor) {
|
||||||
|
this.nbValuesPerColor = nbValuesPerColor;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return les joueurs de la partie
|
* @return les joueurs de la partie
|
||||||
*/
|
*/
|
||||||
@@ -133,6 +196,13 @@ public class Game implements Serializable {
|
|||||||
this.players = players;
|
this.players = players;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return le nombre de joueurs de la partie
|
||||||
|
*/
|
||||||
|
public int getNbPlayers() {
|
||||||
|
return this.players.size();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajoute un joueur à la partie
|
* Ajoute un joueur à la partie
|
||||||
*
|
*
|
||||||
@@ -142,6 +212,13 @@ public class Game implements Serializable {
|
|||||||
this.players.add(player);
|
this.players.add(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tri des joueurs de la partie par score
|
||||||
|
*/
|
||||||
|
public void sortPlayersByScore() {
|
||||||
|
this.players.stream().sorted((p1, p2) -> p1.getScore() - p2.getScore());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("Game{id=%s, createdAt=%s, players=%s}", id.toString(), createdAt, players);
|
return String.format("Game{id=%s, createdAt=%s, players=%s}", id.toString(), createdAt, players);
|
||||||
|
|||||||
@@ -216,6 +216,13 @@ public class Player implements Serializable {
|
|||||||
rightClickCount++;
|
rightClickCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return le pourcentage de clics corrects du joueur sur la partie courante
|
||||||
|
*/
|
||||||
|
public double getRatioRightClick() {
|
||||||
|
return (double) rightClickCount * 100 / clickCount;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return le nombre de clics rapides
|
* @return le nombre de clics rapides
|
||||||
*/
|
*/
|
||||||
@@ -239,7 +246,12 @@ public class Player implements Serializable {
|
|||||||
rapidClickCount++;
|
rapidClickCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// public void getRatioRightCl
|
/**
|
||||||
|
* @return le pourcentage de clics rapides du joueur sur la partie courante
|
||||||
|
*/
|
||||||
|
public double getRatioRapidClick() {
|
||||||
|
return (double) rapidClickCount * 100 / clickCount;
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("Player{id=%s, game=%s, user=%s, score=%d, winner=%b, clickCount=%d, rightClickCount=%d, rapidClickCount=%d}", id.toString(), game.toString(), user.toString(), score, winner, clickCount, rightClickCount, rapidClickCount);
|
return String.format("Player{id=%s, game=%s, user=%s, score=%d, winner=%b, clickCount=%d, rightClickCount=%d, rapidClickCount=%d}", id.toString(), game.toString(), user.toString(), score, winner, clickCount, rightClickCount, rapidClickCount);
|
||||||
|
|||||||
@@ -237,6 +237,94 @@ public class User implements Serializable {
|
|||||||
return hashedPassword != null && hashedPassword.equals(this.password);
|
return hashedPassword != null && hashedPassword.equals(this.password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le nombre de parties jouées
|
||||||
|
*
|
||||||
|
* @return le nombre de parties jouées
|
||||||
|
*/
|
||||||
|
public int getNbPlayedGame() {
|
||||||
|
return playedGame.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le nombre de parties gagnées
|
||||||
|
*
|
||||||
|
* @return le nombre de parties gagnées
|
||||||
|
*/
|
||||||
|
public int getNbWin(){
|
||||||
|
int nbWin = 0;
|
||||||
|
for (Player p : playedGame) {
|
||||||
|
if (p.isWinner()) nbWin++;
|
||||||
|
}
|
||||||
|
return nbWin;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le pourcentage de victoire
|
||||||
|
*
|
||||||
|
* @return le pourcentage de victoire
|
||||||
|
*/
|
||||||
|
public double getWinRate(){
|
||||||
|
return (double) getNbWin() * 100 / getNbPlayedGame();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le nombre total de clics toute partie confondue
|
||||||
|
*
|
||||||
|
* @return le nombre total de clics
|
||||||
|
*/
|
||||||
|
public int getNbClicks(){
|
||||||
|
int nbClicks = 0;
|
||||||
|
for (Player p : playedGame) {
|
||||||
|
nbClicks += p.getClickCount();
|
||||||
|
}
|
||||||
|
return nbClicks;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le nombre total de clics réussi toute partie confondue
|
||||||
|
*
|
||||||
|
* @return le nombre total de clics réussi
|
||||||
|
*/
|
||||||
|
public int getNbRightClicks(){
|
||||||
|
int nbRightClicks = 0;
|
||||||
|
for (Player p : playedGame) {
|
||||||
|
nbRightClicks += p.getRightClickCount();
|
||||||
|
}
|
||||||
|
return nbRightClicks;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le pourcentage de clics réussi
|
||||||
|
*
|
||||||
|
* @return le pourcentage de clics réussi
|
||||||
|
*/
|
||||||
|
public double getRightClickPercentRate(){
|
||||||
|
return (double) getNbRightClicks() * 100 / getNbClicks();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le nombre total de clics les plus rapides toute partie confondue
|
||||||
|
*
|
||||||
|
* @return le nombre total de clics les plus rapides
|
||||||
|
*/
|
||||||
|
public int getNbRapidClicks(){
|
||||||
|
int nbRapidClicks = 0;
|
||||||
|
for (Player p : playedGame) {
|
||||||
|
nbRapidClicks += p.getRapidClickCount();
|
||||||
|
}
|
||||||
|
return nbRapidClicks;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le pourcentage de clics les plus rapides
|
||||||
|
*
|
||||||
|
* @return le pourcentage de clics les plus rapides
|
||||||
|
*/
|
||||||
|
public double getRapidClickPercentRate(){
|
||||||
|
return (double) getNbRapidClicks() * 100 / getNbClicks();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("User{id=%s, username='%s', birth=%s, gender=%s}", id.toString(), username, birth.toString(), gender.toString());
|
return String.format("User{id=%s, username='%s', birth=%s, gender=%s}", id.toString(), username, birth.toString(), gender.toString());
|
||||||
|
|||||||
Reference in New Issue
Block a user