Lecture/écriture dans un fichier

CrazyCow007 Messages postés 52 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 18 septembre 2012 - 2 nov. 2006 à 17:47
CrazyCow007 Messages postés 52 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 18 septembre 2012 - 7 nov. 2006 à 01:34
Bonjour à tous !

Je vous explique mon problème : je suis en train de développer un jeu (MasterMind) et je souhaiterais y ajouter un système de classement. Sur un form FrmClassement j'aimerais récupérer et afficher les 10 meilleurs scores avec les pseudos correspondants.

J'ai ce code pour le moment (qui marche) :






Private Sub Form_Load()
Dim pseudo_tmp As String
Dim score_tmp As String





'Adresse du dossier des fichiers externes
chemin = App.Path
If Right(chemin, 1) <> "" Then
  chemin = chemin & ""
End If
chemin = chemin & "Identifiants"



If FileLen(chemin & "cl_pseudos.dat") = 0 Then
    LblAucun.Caption = "Aucune personne n'est actuellement classée."
    LblAucun.Visible = True
Else
    Open chemin & "cl_pseudos.dat" For Input As #1
    Open chemin & "cl_scores.dat" For Input As #2
    For i = 1 To 10
        Line Input #1, pseudo_tmp
        Line Input #2, score_tmp
        LblPseudo.Caption = LblPseudo.Caption & i & " - " & pseudo_tmp & vbCrLf & vbCrLf
        LblScore.Caption = LblScore.Caption & score_tmp & " pts" & vbCrLf & vbCrLf
    Next
    Close #1
    Close #2
End If




End Sub











Et donc j'ai deux fichiers avec d'un coté la liste des 10 meilleurs scores et dans l'autre une liste des 10 pseudos correspondants.

Par contre je sais vraiment pas comment faire pour inscrire un nouveau score quand la personne gagne et à un score supérieur au 10ème joueur du classement.

Peut-être que je m'y prends mal, j'ai essayé avec tous les différents scripts de lecture/écriture sur le site mais j'ai l'impression qu'il y a plus simple pour faire ça

Merci par avance pour votre aide !

4 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
2 nov. 2006 à 18:12
Question de pensée ...
J'utiliserais en ce qui me concerne un seul fichier, dont chaqueligne serait ainsicomposée :

Score_du_joueur@nom_du_joueur

A l'occasion d'un jeu :
1) j'alimenterais (additem) une listbox dont la propriété sorted serait mise à True et la propriété visible à False
2) à à la fin du jeu, j'ajouterais (additem) le score et le nom du joueur dans la listbox
3) je recomposerais alors mon fichier avec les 10 premiers "items" de la listbox

Pour ce qui serait de l'affichage séparé des joueurs et de leurs scores, j'utiliserais en boucle les informations de la listbox en utilisant instr pour séparer les 2 données (score et nom)


C'est le plus simple
0
CrazyCow007 Messages postés 52 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 18 septembre 2012
7 nov. 2006 à 00:10
Désolé de ne répondre maintenant

Cette solution est effectivement beaucoup mieux :) Mais j'ai un petit problème : je ne vois pas comment utiliser la fonction InStr pour séparer les 2 données. Avec :
InStr(ligne,@) va me renvoyer la position du séparateur entre le pseudo et le score mais je ne vois pas comment avoir les deux chaines dans des variables distinctes.

Je suis désolé de poster des questions peut-être assez bête mais ça ne fait que 2 mois que je fais du VB... En tout cas pour le moment j'adore !

Merci pour votre aide !
0
CrazyCow007 Messages postés 52 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 18 septembre 2012
7 nov. 2006 à 00:32
C'est bon ! En fait j'ai pu me débrouiller avec cette fonction : http://www.vbfrance.com/codes/SEPARATION-CHAINE-CARACTERE_7619.aspx 

Et donc l'affichage du classement marche parfaitement.
Il me reste maintenant à mettre en place l'enregistrement du score.
0
CrazyCow007 Messages postés 52 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 18 septembre 2012
7 nov. 2006 à 01:34
Tout marche très bien sauf un point : le tri des données dans le ListBox :
Exemple :
10@pierre
1035@jean
215@coco
94@nico

Comment faire pour trier la liste en fonction du nombre réel ?
0
Rejoignez-nous