La gestion des utilisateurs nous permet d'identifier chaque joueur afin d'enregistrer le contexte de chaque session de jeu. Un utilisateur est identifié à travers son nom d'utilisateur et son mot de passe. L'utilisateur doit d'abord créer un compte et ensuite se connecter avant d'accéder au jeu.
L'interface de gestion des utilisateurs est créée directement dans la vue graphique principale (QGraphicsView) pour faciliter la connexion de l'utilisateur à la scène graphique de jeu (QGraphicsScene). Nous réalisons cela au moment de la création de chaque composant graphique de l'interface de gestion des utilisateurs en indiquant que le parent est la vue graphique principale (QGraphicsView). L'interface de gestion des utilisateurs est constituée d'une combinaison des composants graphiques suivants : des libellés, des zones de texte, des boutons et une option.
Une zone de texte permet de saisir un texte. Nous créons une zone de texte avec la classe (QLineEdit). Nous initialisons le nom de l'objet de la zone de texte avec la méthode (setObjectName). Nous initialisons l'infobulle de la zone de texte avec la méthode (setToolTip). Nous initialisons la géométrie de la zone de texte, c'est-à-dire, sa position et ses dimensions avec la méthode (setGeometry). Nous affichons une image dans un libellé avec la méthode (setPixmap). Nous masquons la zone de texte avec la méthode (close).
Lors de la saisie du mot de passe dans la zone de texte (QLineEdit) nous proposons une option (QRadioButton) qui nous permet de masquer ou d'afficher le mot de passe. Nous modifions le mode d'affichage du mot de passe avec la méthode (setEchoMode) de la classe (QLineEdit).
Un libellé permet de mieux identifier une zone de texte. Nous créons un libellé avec la classe (QLabel). Nous modifions la police du libellé avec la méthode (setFont). Nous initialisons le texte du libellé avec la méthode (setText). Nous initialisons la géométrie du libellé, c'est-à-dire, sa position et ses dimensions avec la méthode (setGeometry). Nous initialisons le nom de l'objet du libellé avec la méthode (setObjectName). Nous masquons le libellé avec la méthode (close).
Une option permet de réaliser un choix parmi plusieurs. Nous créons une option avec la classe (QRadioButton). Nous initialisons le texte de l'option avec la méthode (setText). Nous initialisons l'infobulle de l'option avec la méthode (setToolTip). Nous initialisons la géométrie de l'option, c'est-à-dire, sa position et ses dimensions avec la méthode (setGeometry). Nous connectons l'option à une action avec la méthode (connect). Nous masquons l'option avec la méthode (close).
Un bouton permet de réaliser une action. Nous créons un bouton avec la classe (QPushButton). Nous initialisons le texte du bouton avec la méthode (setText). Nous initialisons l'infobulle du bouton avec la méthode (setToolTip). Nous initialisons la géométrie du bouton, c'est-à-dire, sa position et ses dimensions avec la méthode (setGeometry). Nous connectons le bouton à une action avec la méthode (connect). Nous masquons le bouton avec la méthode (close).
Une police permet de modifier la mise en forme d'un texte. Nous créons une police avec la classe (QFont) en indiquant le nom de la police (MV Boli), la taille de la police (15) et le poids de la police (Bold). Nous modifions la taille d'une police avec la méthode (setPointSize).
Le bouton connexion invité (9) est utilisé en mode débogage pour permettre au développeur d'accéder directement au jeu sans saisir les identifiants de connexion. Dans ce mode, nous n'enregistrons pas le contexte de la session de jeu.
L'action sur le bouton nouvel utilisateur (8) ouvre une boîte de dialogue dans laquelle nous pouvons enregistrer un nouvel utilisateur.
Une boîte de dialogue est une fenêtre modale de niveau supérieure qui désactive l'interaction de l'utilisateur avec la fenêtre principale. Nous créons la boîte de dialogue en créant une classe qui dérive de la classe (QDialog). Nous initialisons le titre de la boîte de dialogue avec la méthode (setWindowTitle). Nous fixons les dimensions minimales de la boîte de dialogue avec la méthode (setMinimumSize). Nous fixons les dimensions maximales de la boîte de dialogue avec la méthode (setMaximumSize).
Qt Designer est un éditeur d'interfaces graphiques fourni par Qt. Il permet de créer des interfaces graphiques par simple glisser-déposer. D'ailleurs, nous avons utilisé Qt Designer pour concevoir l'interface graphique de la saisie d'un nouvel utilisateur.
Le nom de l'objet est défini par la méthode (setObjectName) de la classe (QObject). Le nom de l'objet permet de modifier la mise en forme d'un objet à partir de la feuille de styles (QSS) gérée par Qt. La syntaxe QSS est l'équivalent Qt de la syntaxe CSS côté HTML. La classe (QObject) est la mère de toutes les classes qui veulent bénéficier de la mise en forme QSS fourni par Qt.
Une expression régulière permet d'établir un modèle de correspondance dans un texte. Nous utilisons une expression pour vérifier par exemple que le nom d'utilisateur correspond à une adresse email valide ou que le mot de passe correspond à un mot passe valide. Nous créons une expression régulière avec la classe (QRegularExpression). Nous créons un vérificateur de correspondance d'une expression régulière avec la classe (QRegularExpressionMatch). Nous récupérons le résultat de la correspondance avec la méthode (hasMatch) de la classe (QRegularExpressionMatch).
Une expression régulière permet d'établir un modèle de correspondance dans un texte. Nous utilisons une expression pour vérifier par exemple que le nom d'utilisateur correspond à une adresse email valide ou que le mot de passe correspond à un mot passe valide. Nous créons une expression régulière avec la classe (QRegularExpression). Nous créons un vérificateur de correspondance d'une expression régulière avec la classe (QRegularExpressionMatch). Nous récupérons le résultat de la correspondance avec la méthode (hasMatch) de la classe (QRegularExpressionMatch).
Une base de données permet de stocker des données de manière permanente. Nous utilisons la base de données pour sauvegarder par exemple les données de chaque utilisateur ainsi que le contexte de chaque session de jeu.