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

Windows Forms Discussion :

Gestion des highscorre en VB.net(need help plz :D)


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut Gestion des highscorre en VB.net(need help plz :D)
    deja je me premet une toute breve presentation par politesse : christophe 21 ans je suis une formation de developeur informatique option internet depuis 2 moi ! je suis donc un novice mais j'aime sa donc j'aprend vite bon voila je fait court car je pense que vous vous en taper lol !

    passons aux chose serieuses

    Voila je profite je vien de faire un mastermind en VB.net et j'ai aussi faiti un classement des joueur ....enfin voulu le faire ... seulement plusieur probleme ce posent a moi :

    - alors deja comment faire pour faire en sorte que le classement soit ranger du meilleur au moin fort ?
    (exemple :
    1er Paul 850 pts
    2eme Jack 500 pts
    ....)
    j'ai penser a une comparaison du nombre de point mais je n'ai pu l'apliquer !

    -comment limiter l'affichage aux 5 meilleurs joueurs ? (sa je sais peut etre en fait)

    D'autres questions me viendront plus tard !

    PRECISIONS :

    (j'aurai peu etre du le dire avant ...bref ... :

    -pour gerer mes score j'ai creer une classe highscore comportant trois truc ( ) : le score, le nom du joueur et le classement et 3 property pour y acceder !
    chaque highscore est stocker dans une collection !! quand on stop le jeux je sauvegarde ma collection de higscores dans un fichier texte que je recharge au demarage du jeux (si le fichier n'existe pas je le creer : cela s'aplique pour la premiere fois ou on lance le jeux) !

    Vous suivez ? tien une autre question me vien : est il possible de bloker le fichier texte de quelque maniere que se soit ? car bon si le mec s'amuse a trifouiller le fichier texte sa chie dans la semoule lol (bon j'ai gere l'exception donc le programme plante pas mais ya pas les score puis bon ....pas cool)

    bref voila merci de vos répose !

    PS : les code source du mastermind que j'ai fait je peux les faire tourner si sa interresse, surtout les débutant car etant moi meme debutant mais suivant une formation pour je pense que sa peut etre utile car mes codes sont claires et surtout j'ai la manie de commenter a mort du coup c'est assez clair (meme mes pote qui programme pas comprenne un peu c'est pour dire lol)

    PS : un intérrréssé pour tenter un tetris en VB.net ? moi sa me tente mais sa me parait franc dure donc si quelqu'un est chaud qu'il fasse signe !!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Bonjour,
    Pour afficher les score dans l'ordre décroissant il me semble que la classe collection n'a pas de fonction qui implemente le tri, donc je ferai un parcours de collection (une simple boucle For ) pour chercher le numéro du classement dans ta collection et les afficher un part un dans l'ordre croissant.
    Ps: si ton classement n'est pas encore implementé alors il faut que prenne le score et que tu le stocke dans une variable temporaire de ta fonction (pas de ta classe) et que tu ailles voir l'element suivant de ta collection et tu le comapare si le prochain element est le plus grand alors remplace la valeur dans ta variable par le nouvel element et ainsi de suite tu obtiendra le meilleur score ensuite affiche le et continue la meme methode mais cette fois pour le deuxieme meilleur score. et ainsi de suite 5 fois de suite (donc une deuxième boucle qui englobe le parcours de ta liste pour effectuer 5 fois la recherche)
    1 || 1 = 1
    1 && 1 = 1
    1 * 1 = 1
    Bon après tout, peut-être que Van Damme avait raison :
    1 + 1 = 1 // harmonie parfaite

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    merci ekinox !! je vais essayer de gerer sa cet apreme

    to be continue ...

  4. #4
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Plus simple :
    Tu les colles dans une ArrayList.
    Tu créé une classe qui implémente IComparer.
    Tu instancie cette classe
    Tu appelles la méthode Sort(IComparer) de l'ArrayList en passant l'instance de ton IComparer en paramètres.

    Tient, cadeau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class ScoreComparer : IComparer 
    {
    	public ScoreComparer() {}
    	/// <summary>
    	/// Effectue la comparaison en deux HighScore
    	/// Retourne 0 si égaux, une valeur positive si (obj1 > obj2) et négative si (obj2 > obj1)
    	/// </summary>
    	public int Compare(object obj1, object obj2)
    	{
    		// tu cast les objets données en HighScore
    		HighScore score1 = obj1 as HighScore;
    		HighScore score2 = obj2 as HighScore;
    		// tu compare tes valeurs
    		return score1.Points - score2.Points;
    	}
    }

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    merci mais je ne connai pas les arrayList comme je l'ai dit je debute !! si c'est pas trop compliquer tu peux me faire une petite explication rapide ? sinon des que j'aurai VB.net 2003 installer je materai l index !

    et merci pour la methode c'est cool

  6. #6
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    ArrayList c'est un "tableau dynamique".
    Tu en créé une et tu fais 'Add(myobject)' pour l'ajouter dedans.
    Dans ton cas, tune mets QUE des HighScore dedans, et quand tu fais 'Sort(monComparer)', il va te les trier en fonction de ce qui est défini dans le IComparer.
    Je t'invite à consulter les exemples de la doc du SDK pour plus d'infos. C'est une classe très facile à utiliser.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    ah yes tu assure merci bien du petit topo c'est cool je suis en train d installer visua studio.net la j'ai hate de tester ton truc Bon ben je te tien au courrant du chmilblique encore merci ++

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    heu la je suis sur sharpdevelop 1.1 en attendant VB.net 2003 mais je trouve pas les arraylist xD

  9. #9
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Va voir dans System.Collection

    C'est pas lié à l'IDE, c'est du standard .Net

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    ouai j'ai trouver mais ya pas d index sur ce logiciel chelou donc c'est dur pour ce servir de l'arrayList !! vais allez mater sur le net si ya des truc dessu vraiment chiant microsoft a tout faire payer avec les tunes qu'ils ont ....

    mais en fait les arraylist c'est une sorte de collection non ? c'est quoi la difference avec une collection ? ta methode je peu pas l'adatper pour une collection ?

  11. #11
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Hein ?
    ArrayList c'est une ICollection.
    Donc tout ce que tu peux faire avec une ICollection, tu peux le faire avec une ArrayList. Je vois vraiment pas où est le problème. Publies du code, paske là je comprend rien du tout, et j'ai l'impression que toi non plus tu ne comprends pas ce que tu fais.

    Sort est une méthode d'ArrayList. Elle existe aussi pour Array. Mais pas pour les ICollection.

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    le probleme en fait c'est que je sais pas comment m'en servir et que je capte pas comment sa marchee ! genre moi je me suis servi une classe Highscore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    Public Class Chighscores
        'cette classe represente l'objet highscore qui contient un nom, un score et un classement
        Private classement As Integer   'classement du joueur
        Property leClass() As Integer
           Get
              Return classement
           End Get
           Set(ByVal Value As Integer)
               classement = Value
           End Set
        End Property 
     
        Private nomJoueur As String 'nom du joueur
        Property leNom() As String
            Get
                Return nomJoueur
            End Get
            Set(ByVal Value As String)
                nomJoueur = Value
            End Set
        End Property
     
        Private score As Int32  ''le score du joueur
        Property leScore() As Int32
            Get
                Return score
            End Get
            Set(ByVal Value As Int32)
                score = Value
            End Set
        End Property
     
    End Class

    que je remplis ensuite comme sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    '**********************SOUS PROCEDURE HIGHSCORES*********
        Private Sub gestionHighScores()
     
            Dim unHighScore As New Chighscores  'un nouveau highscore
     
            'enregistrement du nom du joueur
            unHighScore.leNom = InputBox("entrer votre nom", "Votre nom", "Entrer votre nom")
     
            'enregistrement du nombre de point suivant le mode
            If Me.txtTemps.Visible = True Then  'si on est dans un mode autre que le mode debutant
                unHighScore.leScore = nbPoints + CInt(Me.txtTemps.Text)
            Else    'si on est dans le mode debutant
                unHighScore.leScore = nbPoints
            End If
     
            'ajout du highscore a la collection de highscores
            highScores.Add(unHighScore, unHighScore.leNom)
            saveHS(unHighScore)
     
        End Sub
    je remplis mon highscore (remarquer que la j'ai pas gere le classement car j'y arrive pas hein ! ) et je l'ajoute a ma collection et enfin j affiche le tout dans une datagrid :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    'cette procedure affiche la collection highScores dans la datagrid gridScores
            Dim dt As New DataTable 'objet intermediaire pour stocker les information a afficher
     
            Dim dr As DataRow   'une ligne d affichage
     
            'definir les colones
            'dt.Columns.Add(New DataColumn("Classement :", GetType(Integer)))
            dt.Columns.Add(New DataColumn("Nom :", GetType(String)))
            dt.Columns.Add(New DataColumn("Score :", GetType(Int32)))
     
            Dim unScore As Chighscores 'un score de la collection
     
            'pour chaque score de la collection
     
            For Each unScore In highScores
                'For i As Integer = 0 To 4 '5 car on affiche les cinqs premiers
     
     
                dr = dt.NewRow  'creer une nouvelle ligne
     
                'dr(0) = unScore.leClass 'renseigner la ligne
                dr(0) = unScore.leNom
                dr(1) = unScore.leScore
     
                dt.Rows.Add(dr) 'ajouter la ligne a la table
     
            Next
     
            Me.gridScores.DataSource = dt   'affecter table a la grid
            Me.gridScores.Refresh()     'actualiser affichage
            dt = Nothing        'on peut supprimer la table intermediaire
        End Sub
    Le truc c'est que pour une arraylist je capte pas ce qui va changer par rapport a une collection car j'ai jamais utiliser cette chose Mais en mattan ton bout de code j'ai remarquer que je pouvai peut etre m'en inspirer et le remanipuler pour le faire condordé avec mon truc sans pour autan mettre d'arraylist (certe je devrai virer "sort(...)" ) Bref dans le pire des cas lundi je reprend la formation j'aurai acces a VB.net 2003 je materai quand meme les arraylist ce que c'est car sa m intrigue tout sa

  13. #13
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Le machin que tu appelles collection c'est quoi ? Concrètement
    Dans tout le code que tu as publié, il manque un seul truc, et c'est ptet le seul truc qu'il fallait publier : la déclaration de ton champ highScores (ta collection justement).

    Pourquoi la classe qui défini le score d'UN joueur, porte un 's' à la fin (CHighScores) ? pour tromper l'ennemi ?

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    bon sa yé j'ai installer vb.net2003 donc la declaration de ma collection se fait au load de la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Private Sub frmMastermind_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            highScores = New Collection
            Me.tmrMastermind.Enabled = False
            nbProposition = 0
            masqueBoutons()
            ' Me.grpCheatMode.Visible = False
            temps = 0
            choixDuMode()
    
            loadHS()
    tu pige le truc ? je crée une collection, ainsi des que je creer et que je rempli un highscore (nom score classement) je l'ajoute a ma collection de highscores et puis je l'affiche dans ma datagrid

  15. #15
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Bon... je ne sais pas ce que c'est que ta classe collection, mais passons.
    Remplace simplement New Collection par New ArrayList, et essaye de compiler...

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    ben ma classe collection j'en sais rien non plus c'est une classe qui est deja présente dans VB quoi !! on a apris a s'en servir mais je pourrai pas te dire exactement ce qui ya !! sa sert a enregistrer plusieur highscores !! d'apres ce que j'ai un peu lu sur le net sa ressemble pas mal au arraylist justement !!

    je vais essayer juste en remplacement par new arraylist mais a mon avis sa va pas marcher !! mais je vais tenter de gerer sa a tété reposé sur feuille papier !! l algo doit pas etre si compliquer que sa

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    enfin une collection sert a enregistrer plusieur objet plutot pas specialement que des highscore ^^

  18. #18
    Membre expérimenté Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Points : 1 379
    Points
    1 379
    Par défaut
    Hein ?
    Nan nan nan, t'as pas compris : fais-le et compile.
    Tu vas voir, c'est magique.

  19. #19
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    ben j'ai compris les collection sa c'est sur (toi pas contre je crois pas lol) pas contre arraylist je suis encore un peu perdu lol !! ya pas le msdn d'installer donc j'ai pas l'aide !!

    bon attend je test sa et je te dit se que sa donne dans pas lontegmps

  20. #20
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 20
    Points : 1
    Points
    1
    Par défaut
    non sa marche pas sa me dit une valeur de type "system.collection.arraylist ne peut etre converti en microsoft.visualbasic.collection

Discussions similaires

  1. [Débutant] Gestion des accès web asp.net
    Par miniil dans le forum ASP.NET
    Réponses: 4
    Dernier message: 15/05/2013, 08h15
  2. Gestion des listview en VB.net
    Par CodeFacile dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/01/2009, 11h58
  3. gestion des connexions / sessions en .NET
    Par newtito dans le forum Framework .NET
    Réponses: 3
    Dernier message: 18/06/2008, 14h07
  4. Gestion des Roles en ASP.NET
    Par akli2008 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 08/04/2008, 14h23
  5. gestion des Services Windows sans .NET
    Par zedoo dans le forum MFC
    Réponses: 1
    Dernier message: 16/05/2005, 23h52

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