mirror of
https://github.com/kmitresse/Cards-Rush.git
synced 2026-05-14 01:21:49 +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,
|
||||
difficulty VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
|
||||
@@ -49,6 +49,15 @@ public class Game implements Serializable {
|
||||
@Enumerated(EnumType.STRING)
|
||||
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)
|
||||
private Set<Player> players;
|
||||
|
||||
@@ -63,9 +72,15 @@ public class Game implements Serializable {
|
||||
*
|
||||
* @param difficulty la difficulté de la partie
|
||||
* @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.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 createdAt la date de création 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
|
||||
*/
|
||||
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.createdAt = createdAt;
|
||||
this.difficulty = difficulty;
|
||||
this.nbRounds = nbRounds;
|
||||
this.nbColors = nbColors;
|
||||
this.nbValuesPerColor = nbValuesPerColor;
|
||||
this.players = players;
|
||||
}
|
||||
|
||||
@@ -117,6 +138,48 @@ public class Game implements Serializable {
|
||||
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
|
||||
*/
|
||||
@@ -133,6 +196,13 @@ public class Game implements Serializable {
|
||||
this.players = players;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return le nombre de joueurs de la partie
|
||||
*/
|
||||
public int getNbPlayers() {
|
||||
return this.players.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajoute un joueur à la partie
|
||||
*
|
||||
@@ -142,6 +212,13 @@ public class Game implements Serializable {
|
||||
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
|
||||
public String toString() {
|
||||
return String.format("Game{id=%s, createdAt=%s, players=%s}", id.toString(), createdAt, players);
|
||||
|
||||
@@ -216,6 +216,13 @@ public class Player implements Serializable {
|
||||
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
|
||||
*/
|
||||
@@ -239,7 +246,12 @@ public class Player implements Serializable {
|
||||
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
|
||||
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);
|
||||
|
||||
@@ -237,6 +237,94 @@ public class User implements Serializable {
|
||||
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
|
||||
public String 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