[Programme] Game Sorting – Création de listes de souhaits

a marqué ce sujet comme résolu.

Bonjour à tous,

À propos de moi

Je m’appelle Erwan. J’ai 22 ans, je suis étudiant en Droit et passionné d’informatique, notamment de programmation depuis plusieurs années. Mon langage de programmation principal est le C++. J’ai découvert ce langage via un cour du Site du Zéro il y a quelques années. J’ai depuis suivi pas mal de cours sur le C++, mais j’ai fait une erreur qui m’a fait perdre du temps. Je n’ai jamais mis mes connaissances en pratique.

Origine du projet

La raison à l’origine de ce projet est que je voulais trouver un moyen simple de pouvoir trier mes listes de souhaits de jeux, mais aussi de films, de séries et même de livres. Initialement, je les écrivais dans un bloc note, ça me permettait de faire des comparaisons et ainsi de pouvoir me concentrer sur ce qui m’intéressait le plus. Cependant, ce n’est pas très pratique, en particulier quand on se retrouve avec une liste importante d’éléments. C’est suite à cela que je me suis lancé dans le développement de ce programme pour m’aider à faire mes listes de souhaits. Bien sûr, c’est aussi pour pouvoir mettre en application mes connaissances dans un projet abordable.

Présentation du projet

Game Sorting est un petit programme qui permet de faire une liste de souhaits. Le programme est tourné principalement vers le jeu, mais il peut être utilisé pour d’autres raisons. Il fonctionne sur Windows et Linux, je ne peux cependant pas tester s’il fonctionne sur Mac.
Le programme est constitué d’onglets et dans chaque onglet, il y a un tableau à trois colonnes. Chaque onglet peut être déplacé, renommé et fermé. Il est possible bien sûr d’ouvrir de nouveaux onglets.

Le tableau est constitué de trois colonnes nommées Game name, Game type et Game rate. Les colonnes Game name et Game type sont composées d’un champ de texte éditable et la colonne Game rate est constituée d’étoiles. Il peut y avoir entre une à cinq étoiles aussi éditables. Chaque tableau peut être trié ou filtré par type (mais pas les deux en même temps). Pour que le filtrage se fasse correctement, il faut que les différentes catégories d’un jeu soient séparées par une virgule. Il est possible d’ajouter des lignes (pour insérer un nouveau jeu) et de les supprimer. Les lignes peuvent être déplacées pour être réarrangées et même être déplacées d’un onglet à l’autre.

La liste peut ensuite être sauvegardée dans un fichier.

Futur du projet

Le programme a atteint un stade où il est fonctionnel, mais il n’est pas terminé. Il y a certaines fonctionnalités que j’aimerais rajouter dans le futur, notamment une qui m’a l’air intéressante. Il est possible d’ouvrir plusieurs instances du programme. Le problème c’est qu’il s’agit de plusieurs applications différentes et j’aimerais que toutes ces fenêtres ouvertes ne soient qu’une seule application.

Si vous avez des idées pour améliorer le programme, je serais intéressé d’en discuter.

Outils utilisés

Le programme est développé exclusivement en C++ 11. J’ai utilisé Qt 5 pour faire l’interface graphique (Qt Widgets), le chargement et la sauvegarde des fichiers (Qt Core). J’ai aussi utilisé Visual Studio Community 2019 comme IDE et CMake pour la configuration du projet.

Installation

Le code source du programme est disponible sur Github, vous pouvez aussi télécharger les binaires pour Windows 64 bits dans la section releases.

Pour ceux qui sont intéressés pour regarder l’avancée du programme en remontant dans les commits, je suis désolé de dire que j’ai totalement oublié d’utiliser Git lors du développement, je n’ai commencé à l’utiliser que très tard.

J’espère que le programme vous intéressera.

Je vous souhaite une bonne journée.

Erwan.

Salut,
C’est bien que tu mettes en pratique tes connaissances sur un projet concret !
Il est encore plutôt petit et simple, je vais pouvoir jeter un oeil en détail et te donner mes conseils sur la technique.

Ton projet me fait penser à un autre de quelqu’un qui voulait créer des ludothèques pouvant être partagées, mais je ne retrouve pas le post.

Ce que tu cherches à faire est typiquement une mise en oeuvre d’une base de donnée. Je t’encourage donc à utiliser un Système de Gestion de Base de Donnée (SGBD) existant (quitte à ce que ce soit SQLite pour rester contraint à l’application).
Par ailleurs, Qt peut t’abstraire du système que tu choisiras avec son module Qt SQL.

Par curiosité, pour quelles raisons n’as-tu pas utiliser Qt Designer pour dessiner ton interface ? Ce n’est pas une faute bien sûr, mais ça me paraît plus simple, particulièrement pour un débutant.

Si je comprends ton projet, le besoin auquel il répond est de centraliser les ludothèques et les listes de souhait.
à mon sens, il manque des intégrations avec d’autres services :

  • Dire au logiciel d’importer ma liste de jeu, de livre etc… d’un service existant : intégration Steam, GOG, EpicGames, Google Book …
  • Ajouter un élément à partir d’une recherche : interroger une base de donnée, genre imdb pour les films, et remplir la fiche (titre, genre, note … à voir si tu étends) avec les informations trouvées
  • Proposer des options d’achats : la ligne de l’élément comporte un lien vers une page magasin (à voir s’il est défini par l’utilisateur, si tu te réfère toujours au même magasin généraliste comme Amazon ou Google Shopping, ou si tu fais un comparateur de prix et renvoie au plus intéressant (aucune idée comment faire ça, je suppose que la base reste une whitelist)

Et donc avec mon deuxième point, je vois bien aussi :

  • Afficher une fiche détaillée de l’oeuvre assemblant les infos connues (acteurs réa pour les films, dev éditeur pour les jeux, synopsis etc…)

Aussi, ce serais bien de proposer une fonctionnalité qui se sert du choix technologique. Je veux dire par là que ce type de service c’est plutôt proposé par application web, qui ne requiert aucune installation, est cross-plateform etc… Ton appli parait contraignante à côté, mais elle te permet de travailler ton cpp. J’ai pas encore d’idée de fonctionnalité qui justifie ce choix

+1 -0

Bonjour romantik,

Merci d’avoir pris le temps de tester le programme et de m’avoir répondu.

Par curiosité, pour quelles raisons n’as-tu pas utiliser Qt Designer pour dessiner ton interface ? Ce n’est pas une faute bien sûr, mais ça me paraît plus simple, particulièrement pour un débutant.
romantik

Je ne suis pas passé par Qt Designer parce que je voulais tout faire en C++. C’était pour me permettre de mieux comprendre la logique des agencements des différents widgets en programmation. J’avais peur que si je passais par Qt Designer, je ne comprendrais pas cette logique ;) .

Ce que tu cherches à faire est typiquement une mise en oeuvre d’une base de donnée. Je t’encourage donc à utiliser un Système de Gestion de Base de Donnée (SGBD) existant (quitte à ce que ce soit SQLite pour rester contraint à l’application).
romantik

En effet, je n’avais pas pensé à utiliser une base de données. De plus, ça pourra me simplifier le travail, notamment sur les filtres et la recherche en général.

Si je comprends ton projet, le besoin auquel il répond est de centraliser les ludothèques et les listes de souhait.
à mon sens, il manque des intégrations avec d’autres services :

  • Dire au logiciel d’importer ma liste de jeu, de livre etc… d’un service existant : intégration Steam, GOG, EpicGames, Google Book …
  • Ajouter un élément à partir d’une recherche : interroger une base de donnée, genre imdb pour les films, et remplir la fiche (titre, genre, note … à voir si tu étends) avec les informations trouvées
  • Proposer des options d’achats : la ligne de l’élément comporte un lien vers une page magasin (à voir s’il est défini par l’utilisateur, si tu te réfère toujours au même magasin généraliste comme Amazon ou Google Shopping, ou si tu fais un comparateur de prix et renvoie au plus intéressant (aucune idée comment faire ça, je suppose que la base reste une whitelist)

romantik

Oui, mon but est bien de pouvoir centraliser des ludothèques. En fait, à la base j’ai fait Game Sorting pour le jeu vidéo, mais l’idée de faire quelque chose de généralisé m’est venu pendant le développement. Je n’ai cependant pas changé le nom. Il est surtout tourné vers les listes de souhaits, permettre à l’utilisateur de faire une liste des jeux/films… et facilement pourvoir séparer ce qu’il veut de ce qu’il ne veut pas, ainsi que de lui permettre de savoir s’il n’a pas déjà l’un des éléments qu’il souhaite.

L’idée d’importer une liste d’un service existant m’intéresse beaucoup, même si je n’ai aucune idée de comment le faire. Mais c’est un défi que j’aime bien :D . Pour L’URL, je pense qu’il vaut mieux qu’il soit choisi par l’utilisateur.

Et donc avec mon deuxième point, je vois bien aussi :

  • Afficher une fiche détaillée de l’oeuvre assemblant les infos connues (acteurs réa pour les films, dev éditeur pour les jeux, synopsis etc…)

romantik

J’avais déjà en tête l’idée de faire une fiche détaillée. Cependant, elle n’était pas prévue dans le développement pour l’instant.

Aussi, ce serais bien de proposer une fonctionnalité qui se sert du choix technologique. Je veux dire par là que ce type de service c’est plutôt proposé par application web, qui ne requiert aucune installation, est cross-plateform etc… Ton appli parait contraignante à côté, mais elle te permet de travailler ton cpp. J’ai pas encore d’idée de fonctionnalité qui justifie ce choix
romantik

Je ne sais pas non plus. Peut-être la possibilité de pouvoir lancer les jeux depuis le logiciel, en faisant l’intermédiaire à la plateforme, mais ce ne serait limité qu’aux jeux vidéo.

Ça fait pas mal d’idées intéressantes pour l’application. Une chose est sûre, l’application va devenir beaucoup plus dure à réaliser :D , mais aussi plus intéressante.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte