IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Programme pour saisir les points obtenus par des joueurs de cartes


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    programmation loisir
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : programmation loisir

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Points : 7
    Points
    7
    Par défaut Programme pour saisir les points obtenus par des joueurs de cartes
    Bonjour à tous.
    Tout nouveau dans ce domaine (programmation avec Delphi) je désire créer un petit programme pour m'initier.
    Je souhaiterais saisir plusieurs noms de joueurs avec pour chacun un numéro, puis saisir 4 (ou plus) scores issus
    de parties de cartes jouées, puis additionner ces scores individuels et faire un classement des joueurs du 1er au dernier.
    Et pour terminer pouvoir enregistrer tout ça.
    Si l'un de vous pouvait, non pas me donner la solution, mais la voie à suivre pour réaliser ceci. Du style, il vaut mieux passer
    par des tableaux (array) ou des listbox etc... en sorte un descriptif des objets/composants à utiliser me serait très utile.
    L'ossature, la chronologie à suivre en quelque sorte.
    Déjà merci de m'avoir lu et compris j'espère.

    En attente de vos réponses.

    (J'espère être dans la bonne section pour ce type de question)

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 163
    Points : 41 346
    Points
    41 346
    Billets dans le blog
    63
    Par défaut
    Bonjour et bienvenue,

    (J'espère être dans la bonne section pour ce type de question)
    pile poil

    je ne suis peut être pas le meilleur sur cela car je vois déjà le programme comme un programme de gestion avec base de données (là faute à la phrase "Et pour terminer pouvoir enregistrer tout ça.") et mes autres solutions passeraient par des TVirtualTreeViews pas forcément facile à maitriser pour un débutant.

    Il serait déjà bon d'indiquer aussi la version de Delphi que vous avez

  3. #3
    Futur Membre du Club
    Homme Profil pro
    programmation loisir
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : programmation loisir

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    J'ai la version 7

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 163
    Points : 41 346
    Points
    41 346
    Billets dans le blog
    63
    Par défaut
    rapidement,
    sur la base d'un virtualtreeview (composant téléchargeable ici)
    je créerai deux objets (un objet joueur, un autre score partie de carte)
    en racine , les joueurs, une "branche" par partie de carte du joueur.

    Dans la partie téléchargement du site cité il y a un manuel et des démos (soit les lignes 1,2,3 de la page de téléchargement)

    maintenant, virtualtreeview, je ne l'ai abordé que lorsque j'étais déjà confirmé en programmation, pour un débutant est-ce abordable

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 877
    Points : 11 373
    Points
    11 373
    Billets dans le blog
    6
    Par défaut
    Le nombre de joueurs par partie est-il déterminé et fixe ?
    Les scores de chaque joueur seront-ils comparés à nombre de parties égal, quand tous se seront rencontrés, ou au fur et à mesure des parties ?

    2 choses : la mécanique de gestion des données, et l'interface de saisie/commande. Il est aussi important de faire de bons choix de structure de données pour la mécanique que de bien penser l'enchaînement des interactions homme/application, géré par des événements (appui sur un bouton, choix de menu, etc.)

    Selon l'exposé du problème, plusieurs solutions : base de données/DBGrid ou tableaux/StringGrid/fichiers au format maison.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    programmation loisir
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : programmation loisir

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    rapidement,
    sur la base d'un virtualtreeview (composant téléchargeable ici)
    je créerai deux objets (un objet joueur, un autre score partie de carte)
    en racine , les joueurs, une "branche" par partie de carte du joueur.

    Dans la partie téléchargement du site cité il y a un manuel et des démos (soit les lignes 1,2,3 de la page de téléchargement)

    maintenant, virtualtreeview, je ne l'ai abordé que lorsque j'étais déjà confirmé en programmation, pour un débutant est-ce abordable
    Oh, merci pour ces réponses rapides, je vais regarder tout ça de près.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    programmation loisir
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : programmation loisir

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Le nombre de joueurs par partie est-il déterminé et fixe ?
    Les scores de chaque joueur seront-ils comparés à nombre de parties égal, quand tous se seront rencontrés, ou au fur et à mesure des parties ?

    2 choses : la mécanique de gestion des données, et l'interface de saisie/commande. Il est aussi important de faire de bons choix de structure de données pour la mécanique que de bien penser l'enchaînement des interactions homme/application, géré par des événements (appui sur un bouton, choix de menu, etc.)

    Selon l'exposé du problème, plusieurs solutions : base de données/DBGrid ou tableaux/StringGrid/fichiers au format maison.
    Pour le nombre de joueurs (environ 15), il est déterminé pour la soirée. Quand aux scores ils seront comparés en fin de soirée (après environ 4 parties) pour le classement final c'est tout.

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 877
    Points : 11 373
    Points
    11 373
    Billets dans le blog
    6
    Par défaut
    Dans ce cas, je verrais un TStringGrid avec les noms de joueurs en colonne et leurs scores en lignes (ou l'inverse, peu importe...), à remplir au fur et à mesure.
    Et un simple bouton pour afficher les scores totaux et place (suite à un tri) dans les dernières lignes de la grille, afficher le classement dans un TMemo, et sauver le contenu de la grille dans un fichier CSV.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    programmation loisir
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : programmation loisir

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Dans ce cas, je verrais un TStringGrid avec les noms de joueurs en colonne et leurs scores en lignes (ou l'inverse, peu importe...), à remplir au fur et à mesure.
    Et un simple bouton pour afficher les scores totaux et place (suite à un tri) dans les dernières lignes de la grille, afficher le classement dans un TMemo, et sauver le contenu de la grille dans un fichier CSV.
    Merci de ta réponse. Je t 'avoue qu 'elle me plait. C'est tout à fait le style d'orientation que j'attendais.
    J'ai regardé hier le VirtualTreeview proposé par Sergio, ça me parait certes très bien, mais pas de mon niveau hélas.
    Je vais donc me pencher sur le TStringGrid, et voir comment le remplir au fur et à mesure. A l'aide de TEdit je pense.
    J'ai du boulot, merci.
    je reviendrai vers toi si besoin (mais besoin il y aura, c'est sur...)
    encore merci, bonne journée

  10. #10
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 877
    Points : 11 373
    Points
    11 373
    Billets dans le blog
    6
    Par défaut
    Le StringGrid peut se remplir directement dans les cases, si l'option goEditing est active.

    Il faut sûrement définir la taille de la grille préalablement en fonction du nombre de joueurs et de tours, grâce à des TEdit (éventuellement associés à des TUpDown).

    Prévoir des sécurités pour n'autoriser des modifications de taille de grille, de noms de joueurs ou de scores qu'aux moments voulus.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    programmation loisir
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : programmation loisir

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    Merci pour ces précisions. Maintenant y-a-qu'à...

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 163
    Points : 41 346
    Points
    41 346
    Billets dans le blog
    63
    Par défaut
    Bonjour
    Citation Envoyé par DebProg40 Voir le message
    J'ai regardé hier le VirtualTreeview proposé par Sergio, ça me parait certes très bien, mais pas de mon niveau hélas.
    j'avais prévenu que c'était peut être pas niveau débutant. C'était surtout pour montrer une possibilité de présentation.

    Pour le StringGrid, oui mais ... pas de possibilité de sauvegarde genre StringGrid.SaveToFile alors qu'il y a des composants tiers qui le proposent (ainsi que d'autres fonctionnalités dont le tri et les cumuls)
    par exemple SMDBGRID

    Plus avancé, voici ce que je proposerai comme "exercice" à un étudiant

    pour garder les parties sur une longue période (club de jeux de cartes), les base de données sont là pour ça ! au lieu des StringGrids on utilise des DBGrids
    et pour les cumuls, les classements on utilise à fond toutes les possibilités du SQL .

    Rapidement on aurait une base de données contenant quelques tables
    JOUEURS (IDJOUEUR,NOM,PRENOM .....) << s'il s'agit d'un club, plein d'autres renseignements peuvent être utiles
    JEUX(IDJEU,NOM,NOMBREJOUEURS ...)
    ex : 1,TAROT3,3
    2,TAROT5,5
    3,BELOTE,4
    4,BRIDGE,4
    5,POKER,0
    etc...
    PARTIE(IDPARTIE,DATE,NBJOUEURS....) << ici je reprend NBJOUEURS à cause du POKER nombre de joueurs non défini à l'avance
    SCORE(IDPARTIE,IDJOUEUR,SCORE...)

    la "forme" pourrait se présenter avec un pagecontrol de 3 onglets chacun ayant une DBGRID ou plus et dernier onglet consacré à l'affichage des résultats (encore un DBGRID )
    en image (rapide) mais avec composants
    Nom : maquette.PNG
Affichages : 139
Taille : 20,4 Ko

  13. #13
    Futur Membre du Club
    Homme Profil pro
    programmation loisir
    Inscrit en
    Février 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : programmation loisir

    Informations forums :
    Inscription : Février 2017
    Messages : 23
    Points : 7
    Points
    7
    Par défaut
    Bien, je viens d'en prendre la gu.... merci. ça à l'air vraiment super sympa comme projet. Je vais essayer de m'y pencher. Il y a du boulot.
    Merci Sergio

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 163
    Points : 41 346
    Points
    41 346
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par DebProg40 Voir le message
    Bien, je viens d'en prendre la gu.... Il y a du boulot.
    Merci Sergio
    de rien, ce genre d'analyse (avec peu d'informations) c'est mon pain quotidien (et mon boulot)
    pour ce qui est de l'interface, c'est du "cosmétique" rapide, juste une structure sur laquelle on peut travailler
    pour ce qui est de la base de données, c'est un squelette déduit des informations données plus quelques extrapolations

    Allez, YAKA, courage

  15. #15
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 085
    Points : 15 492
    Points
    15 492
    Billets dans le blog
    9
    Par défaut
    Personnellement l'exemple SQL m'intéresse beaucoup.

    Citation Envoyé par SergioMaster Voir le message
    Pour le StringGrid, oui mais ... pas de possibilité de sauvegarde genre StringGrid.SaveToFile
    C'est vrai, mais on trouve ici et là des exemples de routines qui font cela, et c'est un bon sujet d'exercice pour un débutant.

  16. #16
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 163
    Points : 41 346
    Points
    41 346
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Personnellement l'exemple SQL m'intéresse beaucoup.
    rapidement avec la description succincte que j'ai donnée
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    WITH S AS (SELECT IDJOUEUR,SUM(SCORE) AS SC FROM SCORES SC JOIN PARTIES P WHERE
                     P.IDJEU=2  -- juste le TAROT à 5 joueurs
                    GROUP BY IDJOUEUR)
    SELECT A.PRENOM,A.NOM,S.SC FROM JOUEURS A JOIN S ON S.IDJOUEUR=A.IDJOUEUR
    ORDER BY S.SC DESC
    Affichera le classement des joueurs (ordre descendant) d'un club par exemple sur ce type de jeu (en l’occurrence TAROT 5 joueurs) et ce depuis le début des enregistrements de scores.
    Bien sûr, le SQL permet d'affiner en fonction de dates, etc...

    P.S. je tiens à disposition la base au format SQLite si besoin

  17. #17
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 085
    Points : 15 492
    Points
    15 492
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    on trouve ici et là des exemples de routines qui font cela
    En voici un qui est très simple :

    http://www.swissdelphicenter.ch/en/showcode.php?id=941

    @SergioMaster

    Merci pour le code SQL. Dès que j'aurai un peu de temps libre je vais regarder tout ça de près.

  18. #18
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 163
    Points : 41 346
    Points
    41 346
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    je me suis aperçu que ma requête ne donnait pas le classement (juste le bon ordre) et donc ne permettait pas de trouver des exæquos

    Le problème de SQLite (SGBD proposé) est que s'il accepte les CTE (clause WITH), il n'accepte pas les fonctions de fenêtrage pour obtenir le rang (RANK_DENSE) des SGBD plus complètes (mais aussi plus "lourdes") . Qu'a cela ne tienne, voici le nouvel SQL (avec 2 CTE) qui permet d'obtenir le classement des joueurs

    Toujours pour un seul type de partie
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    WITH SCUMUL AS (SELECT IDJOUEUR,SUM(SCORE) AS SCORETOTAL FROM SCORES GROUP BY IDJOUEUR WHERE IDJEU=2),
            SCLASSEMENT AS (SELECT S2.IDJOUEUR,S2.SCORETOTAL,
                                        (SELECT COUNT(*)+1 FROM SCUMUL AS S1 WHERE S1.SCORETOTAL>S2.SCORETOTAL) AS RANG 
                                     FROM SCUMUL AS S2)  
     
    SELECT S.RANG,A.PRENOM,A.NOM,S.SCORETOTAL FROM JOUEURS A JOIN SCLASSEMENT S ON SR.IDJOUEUR=A.IDJOUEUR
    ORDER BY S.RANG DESC

    pas une ligne de code Delphi, merci le SQL

Discussions similaires

  1. Quel logiciel (EDI) pour débuter en programmation ?
    Par mimosa69 dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 17/01/2016, 16h45
  2. Questions pour débuter en programmation
    Par alastro34 dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 28/05/2009, 21h45
  3. Quel langage choisir pour débuter en programmation ?
    Par Tony54 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 13/04/2006, 23h26
  4. Réponses: 16
    Dernier message: 15/11/2005, 20h07
  5. Pour débuter en programmation réseau
    Par durnambule dans le forum Développement
    Réponses: 3
    Dernier message: 20/06/2004, 22h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo