Page 1 sur 1

[..] Fonction high score

Posté : lun. 10 nov. 2008 18:31
par avest007
Bien le bonjour,
Voila alors j'explique mon problème :
pour mon premier script AutoIT j'ai repris le jeu du "plus ou moins" de Timmalos pour l'améliorer au maximum et pour m'entrainer.
J'ai donc décidé de créer une fonction "high-score" permettant de garder en mémoire les 5 meilleur résultats effectués mais je suis confronté a un problème :
J'ai fait cinq parties de test pour vérifier si le prog enregistrait bien les High-score dans le bon ordre et voici mes résultats :
1° partie : 6 coups, je vérifie et le 6 est en première position rien d'anormal
2° partie : 2 coups, le 2 prends la place du 6 et le 6 va en deuxième position, tout va bien
3° partie : 1 coup, le prends la place du 2 qui prends la place du 6 qui va en troisième position
4° partie : 13 coups, et la c'est le drame le 13 va a la place du 1 ...
5° partie : 6 coups, le 6 prends la place du 13 en première position et le 13 passe en deuxième

Je vous joint la fonction :
► Afficher le texte
Et le .INI
► Afficher le texte
Je vous remercie d'avance de prendre en compte mon problème =)
Cordialement, Avest007

Re: [..]Fonction high score

Posté : lun. 10 nov. 2008 19:40
par jbnh
Voila le code en gros, à toi d'adapter avec ta fonction. La fonction utilisée est arraysortnum qui avait été fait par jon sur le forum anglais.
► Afficher le texte

Re: [..]Fonction high score

Posté : lun. 10 nov. 2008 19:42
par timmalos
J'ai pas cherché a savoir pourquoi, mais ca marche en inversant de la sorte:

Code : Tout sélectionner

Func Write_high_score(ByRef $nombre_de_coups)

$top1 = IniRead(@ScriptDir & "\high_score.INI", "score", "top1", 0)
$top2 = IniRead(@ScriptDir & "\high_score.INI", "score", "top2", 0)
$top3 = IniRead(@ScriptDir & "\high_score.INI", "score", "top3", 0)
$top4 = IniRead(@ScriptDir & "\high_score.INI", "score", "top4", 0)
$top5 = IniRead(@ScriptDir & "\high_score.INI", "score", "top5", 0)


    If $nombre_de_coups < $top1 then
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top1",$nombre_de_coups )
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top2",$top1 )
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top3",$top2 )
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top4",$top3 )
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top5",$top4 )
    ElseIf $nombre_de_coups < $top2 And $nombre_de_coups > $top1 then
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top2",$nombre_de_coups )
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top3",$top2  )
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top4",$top3 )
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top5",$top4  )     
    ElseIf $nombre_de_coups < $top3 And $nombre_de_coups > $top2 then
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top3",$nombre_de_coups )
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top4",$top3 )
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top5",$top4  )
    ElseIf $nombre_de_coups < $top4 And $nombre_de_coups > $top3 then
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top4",$nombre_de_coups )
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top5",$top4 )
    ElseIf $nombre_de_coups < $top5 And $nombre_de_coups > $top4 then
            IniWrite ( @ScriptDir & "\high_score.INI", "score", "top5",$nombre_de_coups )          
    
    EndIf
    
EndFunc

Re: [..]Fonction high score

Posté : lun. 10 nov. 2008 19:43
par avest007
Merci pour vos réponses je vais essayer ça tout de suite =)