Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <GDIPlus.au3>
#Include <WinAPI.au3>
Global $para[7] = [60,100,111,111,10,40,60];decalage horizontal, decal vertical, hauteur cases, largeur cases, espace intercases, espace fin, espace fin
;recuperation des parametres si le fichier .ini existe
If FileExists(@ScriptFullPath & ".ini") Then load1()
Global $case[4][4]
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("2048", 4*$para[3] + $para[0] + $para[6] + 5 * $para[4], 4*$para[2] + $para[1] + $para[5]+ 5 * $para[4], @DesktopWidth/2 - (2*$para[3] + $para[1]+ 2.5 * $para[4]), @DesktopHeight/2 - (2*$para[3] + $para[1]/2 + $para[6]/2+ 2.5 * $para[4]))
GUISetBkColor(0xffffff)
Global $Menu1 = GUICtrlCreateMenu("&Jeu")
Global $new = GUICtrlCreateMenuItem("&Nouveau"&@TAB&"F2", $Menu1)
Global $aide = GUICtrlCreateMenu("&Aide", $Menu1)
Global $help = GUICtrlCreateMenuItem("Comment &jouer ?", $aide)
Global $about = GUICtrlCreateMenuItem("&A propos...", $aide)
GUICtrlCreateMenuItem("",$Menu1)
Global $save = GUICtrlCreateMenuItem("&Sauvgarder"& @TAB & "Fin",$Menu1)
GUICtrlCreateMenuItem("",$Menu1)
Global $best = GUICtrlCreateMenuItem("&Meilleurs scores",$Menu1)
GUICtrlCreateMenuItem("",$Menu1)
Global $quitter = GUICtrlCreateMenuItem("&Quitter" & @TAB&"Echap", $Menu1)
Global $Menu2 = GUICtrlCreateMenu("&Options")
Global $Affichage = GUICtrlCreateMenuItem("&Affichage", $Menu2)
GUICtrlCreateLabel("",$para[0] - $para[4],$para[1] - $para[4],$para[2]*4 + 5 * $para[4],$para[3]*4 + 5 * $para[4])
GUICtrlSetBkColor(-1,0x9b8c86)
For $i = 0 To 3
    For $j = 0 To 3
        $case[$i][$j] = GUICtrlCreateButton("0",$para[0] + $i * ($para[3] + $para[4]) , $para[1] + $j * ($para[2] + $para[4]) , $para[3] , $para[2] ,$bs_bitmap)
    Next
Next
Global $casescore = GUICtrlCreateLabel("0",$para[0],($para[1] - 40) / 2 , $para[3] * 2 , 40 , BitOR($SS_CENTER,$SS_CENTERIMAGE))
GUICtrlSetBkColor(-1,0x9b8c86)
GUICtrlSetColor(-1,0xffffff)
GUICtrlSetFont(-1,22,400,0,"Arial")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $score = 0
#Region
If Not FileExists(@ScriptDir & "\best2048.scores") Then
    For $i = 1 To 10
IniWrite(@ScriptDir & "\best2048.scores","1",$i,StringToBinary("..."))
IniWrite(@ScriptDir&"\best2048.scores","2",$i,StringToBinary("0"))
Next
EndIf
Global $Labelscorestat[10]
Global $bestsc[3][10]
For $i = 0 to 9
    $bestsc[1][$i] = BinaryToString(IniRead(@ScriptDir&"\best2048.scores","1","a" & $i + 1,StringToBinary("...")))
    $bestsc[2][$i] = BinaryToString(IniRead(@ScriptDir &"\best2048.scores","2","a" & $i + 1,StringToBinary("0")))
Next
Global $Labeljoueur[10]
If FileExists(@ScriptFullPath & ".ini") Then
load2()
Else
    nouv()
EndIf
HotKeySet("{F2}","nouv")
Global $valeur[8];utile dans les fonctions deplacer
Global $upd[7]
HotKeySet("{left}","gauche")
HotKeySet("{right}","droite")
HotKeySet("{up}","haut")
HotKeySet("{down}","bas")
HotKeySet("{end}","save")
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
    Case $GUI_EVENT_CLOSE
        save()
        Exit
    Case $quitter
        save()
        Exit
    Case $new
        nouv()
    Case $save
        save()
    Case $Affichage
        optfenetre()
    Case $help
        MsgBox(0,2048,"Utilisez les touches flechées du clavier pour deplacer les cases et les assembler." & @crlf & "Le but du jeu est de faire la case 2048, mais le jeu contine quand même ensuite." & @CRLF & @CRLF & "Bonne chance...")
    Case $about
        About()
    Case $best
        best()
EndSwitch
WEnd
#endregion
#region Fonctions
;- - - - - - - - - - - - - - - - - - - - - - - Fonctions - - - - - - - - - - - - - - - - - - - -
Func score($bonus)
    $score += $bonus
Endfunc
Func Actualiser()
;----------------------------------------------
;       Actualise les couleurs
;----------------------------------------------
For $i = 0 To 3
    For $j = 0 To 3
        Switch GUICtrlRead($case[$i][$j])
            Case 0
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\0.bmp");on affiche la valeur corespondant a la valeur de la case
            Case 2
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\2.bmp")
            Case 4
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\4.bmp")
            Case 8
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\8.bmp")
            Case 16
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\16.bmp")
            Case 32
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\32.bmp")
            Case 64
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\64.bmp")
            Case 128
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\128.bmp")
            Case 256
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\256.bmp")
            Case 512
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\512.bmp")
            Case 1024
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\1024.bmp")
            Case 2048
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\2048.bmp")
            Case 4096
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\4096.bmp")
            Case 8192
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\8192.bmp")
            Case 16384
                GUICtrlSetImage($case[$i][$j],@ScriptDir & "\16384.bmp")
            Case Else
                MsgBox(48,"actualiser","Erreur")
        EndSwitch
    Next
Next
GUICtrlSetData($casescore,$score)
EndFunc
Func nouv()
    raz()
    caseauhazard()
    caseauhazard()
    Actualiser()
EndFunc
Func caseauhazard()
For $tmpnul = 0 To 20
    $i = Random(0,3,1);choix d'une case au hazard
    $j = Random(0,3,1)
    If Random(0,2,1) = 0 Then;choix d'une valeur pour la case
        $2ou4 =  4
    Else
        $2ou4 = 2
    EndIf
    If GUICtrlRead($case[$i][$j]) = 0 Then;si la case est vide
        GUICtrlSetData($case[$i][$j],$2ou4)
        $done = 1
        Return $done;on termine la fonction
    Else
        $done = 0
    EndIf
Next
;si parmis les 20 cases testées aucune n'est vide
For $i = 0 To 3
    For $j = 0 To 3
        If GUICtrlRead($case[$i][$j]) = 0 Then;on essaye toute les case pour voir si il y en a une (minimum)de vide
            GUICtrlSetData($case[$i][$j],$2ou4)
            $done = 1
            Return $done
        Else
            $done = 0
        EndIf
    Next
Next
$tmp = 0
If $done = 0 Then;si toutes les case sont remplies
    For $i = 0 To 2
        For $j = 0 To 3
            If GUICtrlRead($case[$i][$j]) = GUICtrlRead($case[$i + 1][$j]) Then
                $tmp += 1;on ajoute 1 à la variable tmp à chaque fois qu'il y a un deplacement possible
            EndIf
        Next
    Next
    For $i = 0 To 2
        For $j = 0 To 3
            If GUICtrlRead($case[$j][$i]) = GUICtrlRead($case[$j][$i + 1]) Then;horizontalement et verticalement
                $tmp += 1
            EndIf
        Next
    Next
    If $tmp = 0 Then
;si aucun deplacement possible
        MsgBox(48,"2048","Perdu...")
Return 0
Else
    return 1;sinon on reprend le jeu
    EndIf
EndIf
EndFunc
Func deplacer($dir);1 = gauche,2 = droite, 3= haut,  4= bas
    $done = 0
Switch $dir
    Case 1
        $valeur[0] = 0
        $valeur[1] =1
        $valeur[2] =2
        $valeur[3] =3
    Case 2
        $valeur[0] =3
        $valeur[1] =2
        $valeur[2] =1
        $valeur[3] =0
    Case 3
        $valeur[4] =0
        $valeur[5] =1
        $valeur[6] =2
        $valeur[7] =3
    Case 4
        $valeur[4] =3
        $valeur[5] =2
        $valeur[6] =1
        $valeur[7] =0
EndSwitch
For $i = 0 To 3
    If $dir < 3 Then
        For $j = 4 To 7
            $valeur[$j] = $i
        Next
    Else
        For $j = 0 To 3
            $valeur[$j] = $i
        Next
    EndIf
    If GUICtrlRead($case[$valeur[1]][$valeur[5]]) = 0 And GUICtrlRead($case[$valeur[2]][$valeur[6]]) = 0 And GUICtrlRead($case[$valeur[3]][$valeur[7]]) = 0 Then
        Sleep(10)
    Else
    If GUICtrlRead($case[$valeur[0]][$valeur[4]]) = GUICtrlRead($case[$valeur[2]][$valeur[6]]) And GUICtrlRead($case[$valeur[1]][$valeur[5]]) = 0 And GUICtrlRead($case[$valeur[0]][$valeur[4]]) <> 0 Then
        Guictrlsetdata($case[$valeur[0]][$valeur[4]], 2 * GUICtrlRead($case[$valeur[0]][$valeur[4]]))
        Guictrlsetdata($case[$valeur[2]][$valeur[6]],0)
        Score(GUICtrlRead($case[$valeur[0]][$valeur[4]]))
        $done = 1
    ElseIf GUICtrlRead($case[$valeur[1]][$valeur[5]]) = GUICtrlRead($case[$valeur[3]][$valeur[7]]) And GUICtrlRead($case[$valeur[2]][$valeur[6]]) = 0 And GUICtrlRead($case[$valeur[0]][$valeur[4]]) <> GUICtrlRead($case[$valeur[1]][$valeur[5]]) Then
        Guictrlsetdata($case[$valeur[1]][$valeur[5]], 2 * GUICtrlRead($case[$valeur[1]][$valeur[5]]))
        Guictrlsetdata($case[$valeur[3]][$valeur[7]],0)
        Score(GUICtrlRead($case[$valeur[1]][$valeur[5]]))
        $done = 1
    ElseIf GUICtrlRead($case[$valeur[0]][$valeur[4]]) = GUICtrlRead($case[$valeur[3]][$valeur[7]]) And GUICtrlRead($case[$valeur[1]][$valeur[5]]) = 0 And GUICtrlRead($case[$valeur[2]][$valeur[6]]) = 0 Then
        Guictrlsetdata($case[$valeur[0]][$valeur[4]], 2 * GUICtrlRead($case[$valeur[0]][$valeur[4]]))
        Guictrlsetdata($case[$valeur[3]][$valeur[7]],0)
        Score(GUICtrlRead($case[$valeur[0]][$valeur[4]]))
            $done = 1
    Else
        If GUICtrlRead($case[$valeur[0]][$valeur[4]]) = GUICtrlRead($case[$valeur[1]][$valeur[5]]) And GUICtrlRead($case[$valeur[0]][$valeur[4]]) <> 0 Then
            Guictrlsetdata($case[$valeur[0]][$valeur[4]], 2 * GUICtrlRead($case[$valeur[0]][$valeur[4]]))
            Guictrlsetdata($case[$valeur[1]][$valeur[5]],0)
            Score(GUICtrlRead($case[$valeur[0]][$valeur[4]]))
            $done = 1
        Endif
        If GUICtrlRead($case[$valeur[1]][$valeur[5]]) = GUICtrlRead($case[$valeur[2]][$valeur[6]]) And GUICtrlRead($case[$valeur[1]][$valeur[5]]) <> 0 Then
            Guictrlsetdata($case[$valeur[1]][$valeur[5]], 2 * GUICtrlRead($case[$valeur[1]][$valeur[5]]))
            Guictrlsetdata($case[$valeur[2]][$valeur[6]],0)
            Score(GUICtrlRead($case[$valeur[1]][$valeur[5]]))
            $done = 1
        Endif
        If GUICtrlRead($case[$valeur[2]][$valeur[6]]) = GUICtrlRead($case[$valeur[3]][$valeur[7]]) And GUICtrlRead($case[$valeur[2]][$valeur[6]]) <> 0 Then
            Guictrlsetdata($case[$valeur[2]][$valeur[6]], 2 * GUICtrlRead($case[$valeur[2]][$valeur[6]]))
            Guictrlsetdata($case[$valeur[3]][$valeur[7]],0)
            Score(GUICtrlRead($case[$valeur[2]][$valeur[6]]))
            $done = 1
        Endif
    EndIf
        For $tmpnul = 0 To 2
            If GUICtrlRead($case[$valeur[0]][$valeur[4]]) = 0 Then
                If GUICtrlRead($case[$valeur[1]][$valeur[5]]) <> 0 Then
                    Guictrlsetdata($case[$valeur[0]][$valeur[4]], GUICtrlRead($case[$valeur[1]][$valeur[5]]))
                    Guictrlsetdata($case[$valeur[1]][$valeur[5]],0)
                    $done = 1
                Endif
                If GUICtrlRead($case[$valeur[2]][$valeur[6]]) <> 0 Then
                    Guictrlsetdata($case[$valeur[1]][$valeur[5]], GUICtrlRead($case[$valeur[2]][$valeur[6]]))
                    Guictrlsetdata($case[$valeur[2]][$valeur[6]],0)
                    $done = 1
                Endif
                If GUICtrlRead($case[$valeur[3]][$valeur[7]]) <> 0 Then
                    Guictrlsetdata($case[$valeur[2]][$valeur[6]], GUICtrlRead($case[$valeur[3]][$valeur[7]]))
                    Guictrlsetdata($case[$valeur[3]][$valeur[7]],0)
                    $done = 1
                Endif
            ElseIf Guictrlread($case[$valeur[1]][$valeur[5]]) = 0 Then
                If GUICtrlRead($case[$valeur[2]][$valeur[6]]) <> 0 Then
                    Guictrlsetdata($case[$valeur[1]][$valeur[5]], GUICtrlRead($case[$valeur[2]][$valeur[6]]))
                    Guictrlsetdata($case[$valeur[2]][$valeur[6]],0)
                    $done = 1
                Endif
                If GUICtrlRead($case[$valeur[3]][$valeur[7]]) <> 0 Then
                    Guictrlsetdata($case[$valeur[2]][$valeur[6]], GUICtrlRead($case[$valeur[3]][$valeur[7]]))
                    Guictrlsetdata($case[$valeur[3]][$valeur[7]],0)
                    $done = 1
                Endif
            Elseif Guictrlread($case[$valeur[2]][$valeur[6]]) = 0 Then
                If GUICtrlRead($case[$valeur[3]][$valeur[7]]) <> 0 Then
                    Guictrlsetdata($case[$valeur[2]][$valeur[6]], GUICtrlRead($case[$valeur[3]][$valeur[7]]))
                    Guictrlsetdata($case[$valeur[3]][$valeur[7]],0)
                    $done = 1
                Endif
            Endif
        Next
    EndIf
Next
If $done Then
caseauhazard()
Actualiser()
EndIf
verif()
Endfunc
Func raz()
    $score = 0
    For $i = 0 to 3
        For $j = 0 To 3
            GUICtrlSetData($case[$i][$j],"0")
        Next
    Next
    Actualiser()
EndFunc
Func save()
    FileDelete(@ScriptFullPath & ".ini")
    ;il y a une seule fonction save qui s'enclanche quand la fenetre se ferme
    IniWriteSection(@ScriptFullPath & ".ini", "cases","")
    For $i = 0 To 3
        For $j = 0 To 3
            IniWrite(@ScriptFullPath & ".ini", "cases", $i & $j, GUICtrlRead($case[$i][$j]))
        Next
    Next
    IniWriteSection(@ScriptFullPath & ".ini", "fenetre", "")
    For $i = 0 To 6
        IniWrite(@ScriptFullPath & ".ini","fenetre" , "4"& $i+1,$para[$i])
    Next
IniWrite(@ScriptFullPath & ".ini","fenetre", "score",$score)
For $i = 0 To 9
    IniWrite(@ScriptDir & "\best2048.scores","1","a"&($i+1),StringToBinary($bestsc[1][$i]))
    IniWrite(@ScriptDir & "\best2048.scores","2","a"&($i+1),StringToBinary($bestsc[2][$i]))
Next
EndFunc
Func load1()
    ;il y a deux fonctions load :
    ;une pour les parametres de taille de la fenetre (celle-ci)
    ;l'autre pour les valeurs des cases du jeu
For $i = 0 To 6
    ;~                      file name       section     key
    $para[$i] = IniRead(@ScriptFullPath & ".ini","fenetre",41 + $i,60)
Next
    If Not @error Then Return 1
EndFunc
Func load2()
    For $i = 0 To 3
        For $j = 0 To 3
            GUICtrlSetData($case[$i][$j], IniRead(@ScriptFullPath & ".ini", "cases", $i & $j, 0))
        Next
    Next
    $score = IniRead(@ScriptFullPath & ".ini","fenetre","score",0)
    Actualiser()
EndFunc
Func optfenetre()
Global $Form2 = GUICreate("Options", 400, 250, 192, 124)
GUICtrlCreateLabel("Espace gauche :", 25, 15, 85, 17)
GUICtrlCreateLabel("Espace droite :", 25, 40, 85, 17)
GUICtrlCreateLabel("Espace haut :", 25, 65, 85, 17)
GUICtrlCreateLabel("Espace bas :", 25, 90, 85, 17)
$upd[0] = GUICtrlCreateInput($para[0],115,15,45,17)
GUICtrlCreateUpdown(-1)
$upd[6] = GUICtrlCreateInput($para[6],115,40,45,17)
GUICtrlCreateUpdown(-1)
$upd[1] = GUICtrlCreateInput($para[1],115,65,45,17)
GUICtrlCreateUpdown(-1)
$upd[5] = GUICtrlCreateInput($para[5],115,90,45,17)
GUICtrlCreateUpdown(-1)
GUICtrlCreateLabel("Largeur des cases :", 25, 135, 125, 17)
GUICtrlCreateLabel("Hauteur des cases :", 25, 160, 125, 17)
GUICtrlCreateLabel("Espace entre deux cases :", 15, 185, 130, 17)
$upd[3] = GUICtrlCreateInput($para[3],155,135,45,17)
GUICtrlCreateUpdown(-1)
$upd[2] = GUICtrlCreateInput($para[2],155,160,45,17)
GUICtrlCreateUpdown(-1)
$upd[4] = GUICtrlCreateInput($para[4],155,185,45,17)
GUICtrlCreateUpdown(-1)
Global $bpok = GUICtrlCreateButton("&OK",25,215,100,25)
Global $bpan = GUICtrlCreateButton("&Annuler",150,215,100,25)
GUISetState(@SW_SHOW)
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
    Case $GUI_EVENT_CLOSE
        $nMsg = 0
        GUISetState(@SW_HIDE,$Form2)
        Return 1
    Case $bpan
        $nMsg = 0
        GUISetState(@SW_HIDE,$Form2)
        Return 1
    Case $bpok
        For $i = 0 To 6
            $para[$i] = GUICtrlRead($upd[$i])
        Next
        save()
        MsgBox(64,"2048 Info...","Attention,"&@CRLF&@CRLF&"Ces modifications seront prisent en compte lors du prochain demarrage de l'application.")
        $nMsg = 0
        GUISetState(@SW_HIDE,$Form2)
    Return 1
 EndSwitch
WEnd
EndFunc
Func About()
    #Region ### START Koda GUI section ### Form=
Global $Form3 = GUICreate("A Propos...", 324, 275, 302, 218)
Global $GroupBox1 = GUICtrlCreateGroup("", 8, 8, 305, 255)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlCreatePic(@ScriptDir & "\2048.bmp", 16, 24, 105, 97)
GUICtrlCreateLabel("Nom : 2048", 144, 24, 96, 20)
GUICtrlCreateLabel("Version : 3.0.8", 144, 72, 100, 20)
GUICtrlCreateLabel("Commentaires :" & @CRLF & @TAB & "Jeu 2048 programmé grace au logiciel Autoit. On peut desormais y jouer sur ordinnateur Hors ligne, pratique quand les connexions sont limitées ou innexistantes.", 16, 128, 275, 85)
GUICtrlCreateLabel("Auteur : ...", 145, 48, 100, 20)
GUICtrlCreateGroup("", -99, -99, 1, 1);valeurs données par KODA
Global $bpvalid = GUICtrlCreateButton("&Valider", 112, 220, 75, 25, 0)
GUICtrlSetCursor (-1, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Do
    Sleep(1)
until GUIGetMsg() <> 0
$nMsg = 0
        GUISetState(@SW_HIDE,$Form3)
        Return 1
EndFunc
Func verif()
$tmp = 0
    For $i = 0 To 2
        For $j = 0 To 3
            If GUICtrlRead($case[$i][$j]) = GUICtrlRead($case[$i + 1][$j]) Then
                $tmp += 1;on ajoute 1 à la variable tmp à chaque fois qu'il y a un deplacement possible
            EndIf
        Next
    Next
    For $i = 0 To 2
        For $j = 0 To 3
            If GUICtrlRead($case[$j][$i]) = GUICtrlRead($case[$j][$i + 1]) Then;horizontalement et verticalement
                $tmp += 1
            EndIf
        Next
    Next
$tmp2 = 1
For $i = 0 To 3
    For $j = 0 To 3
        $tmp2 = $tmp2 * GUICtrlRead($case[$i][$j])
    Next
Next
    If $tmp = 0 And $tmp2 <> 0 Then
;si aucun deplacement possible
        MsgBox(48,"2048","Perdu...")
        If $score > $bestsc[2][9] Then class()
$tmp = MsgBox(36,"2048","Rejouer ?")
If $tmp = 6 Then
nouv()
Else
    Exit
EndIf
EndIf
EndFunc
Func best()
For $i = 0 to 9
    $bestsc[1][$i] = BinaryToString(IniRead(@ScriptDir& "\best2048.scores","1","a" & $i + 1,StringToBinary("...")))
    $bestsc[2][$i] = BinaryToString(IniRead(@ScriptDir & "\best2048.scores","2","a" & $i + 1,StringToBinary("0")))
   Next
#Region ### START Koda GUI section ### Form=
Global $Form4 = GUICreate("2048", 419, 527, 192, 124)
GUISetBkColor(0xFFFFFF)
Global $Bpbok = GUICtrlCreateButton("&OK", 16, 480, 169, 33)
Global $Button2 = GUICtrlCreateButton("Effacer les scores", 216, 480, 169, 33)
If @UserName <> "UserName" Then GUIctrlSetState(-1,$GUI_disable)
Global $Label1 = GUICtrlCreateLabel("Meilleurs scores", 8, 8, 396, 68)
GUICtrlSetFont(-1, 40, 400, 0, "MS Sans Serif")
For $k = 1 To 10
    GUICtrlCreateLabel($k, 15, 80 + 25 * $k, 17, 21,BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xC0C0C0)
Next
For $k = 0 To 9
    $Labeljoueur[$k] = GUICtrlCreateLabel($bestsc[1][$k], 40, 105 + 25 * $k, 165, 21,$SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $Labelscorestat[$k] = GUICtrlCreateLabel($bestsc[2][$k],220,105 + 25 * $k,125,21,BitOR($SS_CENTER,$SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xC0C0C0)
Next
save()
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   $nMsg = 0
   GUISetState(@SW_HIDE,$Form4)
   Return 1
    Case $Bpbok
        $nMsg = 0
        GUISetState(@SW_HIDE,$Form4)
        Return 1
    Case $Button2
        clearscores()
 EndSwitch
WEnd
EndFunc
Func class()
    For $i = 0 To 9
        If $score > $bestsc[2][$i] Then
            For $j = 9 to $i Step -1
                If $j <> 0 Then
                    $bestsc[2][$j] = $bestsc[2][$j - 1]
                    $bestsc[1][$j] = $bestsc[1][$j - 1]
                EndIf
            Next
            $bestsc[2][$i] = $score
            $bestsc[1][$i] = InputBox("2048","Meilleurs score." & @CRLF & @CRLF & "Entrez votre nom.","Player...")
            Return 1
        EndIf
    Next
EndFunc
Func clearscores()
    For $i = 1 To 10
IniWrite(@ScriptDir & "\best2048.scores","1",$i,StringToBinary("..."))
IniWrite(@ScriptDir & "\best2048.scores","2",$i,StringToBinary("0"))
Next
For $i = 0 to 9
    $bestsc[1][$i] = BinaryToString(IniRead(@ScriptDir & "\best2048.scores","1","a" & $i + 1,StringToBinary("...")))
    $bestsc[2][$i] = BinaryToString(IniRead(@ScriptDir & "\best2048.scores","2","a" & $i + 1,StringToBinary("0")))
Next
save()
EndFunc
Func gauche()
    deplacer(1)
EndFunc
Func droite()
    deplacer(2)
EndFunc
Func haut()
    deplacer(3)
EndFunc
Func bas()
    deplacer(4)
EndFunc
#endregion