Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Module Module2048
  2.     'les déclarations en:
  3.    'dim: sont des déclarations locales juste à l'intérieur de la procédure où la fonction dans laquelle il est présent
  4.    'private: sont des déclaration valables dans tous le module où la form dans laquelle il est présent
  5.    'public: sont des déclarations valables dans tous le projet dans laquelle il est présent c-a-d valabes dans module et forme
  6.    Public n As Byte = 4      'on déclare n comme type byte et égale à 4 en public
  7.    Public Jeu(n, n) As Short     'on déclare un tableau à deux dimensions de lignes et colonnes égales à n, en public
  8.    Public Score As Short   'on déclare score comme type short, en public
  9.    Public old_jeu(n, n) As Short
  10.     Public oldscore As Short
  11.     Public Const cible = 11  '2^11=2048     'on déclare cible =11 qui  représente 11^2=2048, en public
  12.    Dim Randomizer As New Random()              'on déclare randomizer comme random, variable globale
  13.    Public x As Integer = CInt(Randomizer.Next(1, 2))  'on déclare x comme type integer, dont la valeur est comprise entre 1 et 2
  14.    Public ligne(n) As Short
  15.  
  16.  
  17.  
  18.  
  19.  
  20.     Public Sub initialiser(ByVal jeu(,) As Short, ByRef score As Short) 'on déclare une procédure initialiser en public
  21.        Randomize()                                                     'on déclare randomize() en locale
  22.        Dim i As Byte                                                    'on déclare i, et j (indice de lignes et colonnes respectivements) en byte
  23.        Dim j As Byte
  24.         score = 0                                                        'au début le score=0
  25.        For i = 1 To n                                    'on parcourt tout le tableau en lignes et en colonnes
  26.            For j = 1 To n
  27.                 jeu(i, j) = 0                               'notre jeu(i,j)=0 durant le parcours
  28.                old_jeu(i, j) = 0
  29.             Next
  30.         Next
  31.         Call TirerAleatoirement()        'on appelle la procédure TirerAleatoirement
  32.        Call TirerAleatoirement()
  33.  
  34.  
  35.     End Sub
  36.     Public Function jeuterminé(ByVal jeu(,) As Short) As Boolean    'on déclare la function jeuterminé en public
  37.        Dim parcoursterminé As Boolean                               'on déclare parcoursterminé comme boolean(logique) en variable locale
  38.        Dim fini As Boolean                                           'on déclare fini comme boolean en variable locale
  39.        Dim deplacer As Boolean                                        'on déclare deplacer comme boolean en variable locale
  40.        Dim i As Byte                                                   'on déclare i, et j (indice de lignes et colonnes respectivements) en byte
  41.        Dim j As Byte
  42.         parcoursterminé = False                                          'les valeurs des variables au debut
  43.        deplacer = True
  44.         i = 1
  45.         j = 1
  46.         fini = True
  47.         While fini = True And parcoursterminé = False        'tant que fini est vraie et parcoursterminé est faux
  48.  
  49.             If jeu(i, j) = 0 Then                             'si le jeu(i,j) est égal à 0 alors
  50.                fini = False
  51.  
  52.             Else                                               'sinon
  53.                j = j + 1                                       'on se déplace dans les colonnes
  54.                deplacer = True
  55.                 If j = n + 1 Then                               'si j dépasse le nombre de colonnes (n) alors
  56.                    i = i + 1                                    'on se déplace en lignes
  57.                    j = 1                                        'et on reviens à la valeur initiale de notre numéro de colonnes<n
  58.                    If i = n + 1 Then                           'si le nombre de lignes également est dépasse le nombre de lignes (n)alors
  59.                        parcoursterminé = True
  60.                         fini = True
  61.                         deplacer = False
  62.                     End If
  63.                 End If
  64.             End If
  65.         End While
  66.         Return parcoursterminé                                 'on return la valeur de parcoursterminé
  67.    End Function                                               'fin de la fonction
  68.    Public Function deplacementligne(ByVal ligne() As Short, ByVal index As Byte) As Short()  'on déclare la fonction deplacementligne en public
  69.  
  70.         Dim i As Short                                                   'on déclare i en short comme variable locale
  71.        Dim new_line() As Short = ligne                                  'on déclare le tableau à une dimension new_line
  72.  
  73.         For i = index To 2 Step -1                                        'on parcourt le tableau dans le sens inverse (step -1)
  74.            new_line(i) = new_line(i - 1)                                  'durant tout le parcours la valeur de la cellule de depart=la valeur de cellule précedente
  75.        Next
  76.         new_line(1) = 0                                                     'à la fin de notre tableau la valeur de notre premiere cellule du tableau est = 0
  77.  
  78.         Return new_line                                                      'on returne le tableau new_line
  79.  
  80.     End Function                                                          'fin de la fonction
  81.  
  82.     Public Function fusion(ByVal ligne() As Short) As Short()       'on déclare la fonction fusion en public
  83.  
  84.         Dim i As Short                                               'on déclare i en short comme variable locale
  85.        Dim cpt As Short                                              'on déclare un compteur cpt en short comme variable locale
  86.        Dim new_line() As Short = ligne                                 'on déclare le tableau à une seule dimension new_line
  87.  
  88.         For i = n To 1 Step -1                                         'on parcours le tableau dans le sens inverse (step -1)  '
  89.            cpt = 0
  90.  
  91.             While new_line(i) = 0 And cpt < i                             'tant que la valeur du tableau new_line(i)=0 et cpt<1 alors
  92.                new_line = deplacementligne(new_line, i)                   'on fait appel à la fonction deplacementligne pour le calcul du tableau
  93.                cpt = cpt + 1                                                'on augmente à chaque boucle de 1 le compteur
  94.            End While                                                         'fin tant que
  95.        Next                                                                   'fin pour
  96.  
  97.         For i = n To 2 Step -1                                                  'on ouvre une nouvelle boucle et on parcourt le tableau new_line
  98.  
  99.             If new_line(i) = new_line(i - 1) Then                                'si la valeur de la cellule de depart=la valeur de cellule précedente alors
  100.                new_line(i) = new_line(i) * 2                                     'la valeur de la cellule de départ=deux fois la valeur de la cellule de depart (avant exécution de cette ligne)
  101.  
  102.                 Score = Score + ligne(i)
  103.  
  104.                 new_line(i - 1) = 0                                                 'la valeur de la cellule précedente est= 0
  105.                new_line = deplacementligne(new_line, i - 1)                          'on fait appel à la fonction deplacementligne pour ce calcul du tableau
  106.            End If                                                                  'fin si
  107.        Next                                                                        'fin pour
  108.  
  109.         Return new_line                                                              'on retourne le tableau new_line
  110.  
  111.     End Function                                                                      'fin de la fonction
  112.  
  113.  
  114.  
  115.     Private Function extraire_ligne(ByVal jeu(,) As Short, ByVal index As Byte) As Short()  'on déclare la fonction extraire_ligne en private
  116.        Dim res(n) As Short                                                                  'on déclare le tableau à une dimension res en short comme variable locale
  117.        Dim i As Byte                                                                         'on déclare i en byte comme variable locale
  118.        For i = 1 To n                                                                        'on parcourt les deux tableaus déclarés res & jeu
  119.            res(i) = jeu(index, i)                                                             'durant le parcours on extrait la ligne entiere du tableau jeu en parcourant toutes les colones de la ligne
  120.        Next                                                                                    'fin pour
  121.  
  122.         Return res                                                                               'on retourne le tableau res
  123.    End Function                                                                                   'fin de la fonction
  124.  
  125.  
  126.     Private Function extraire_col(ByVal jeu(,) As Short, ByVal index As Byte) As Short()  'on déclare la fonction extraire_col en private
  127.        Dim res(n) As Short                                                                'on déclare le tableau res en sgort comme variable locale
  128.        Dim i As Byte                                                                       'on déclare i en byte comme variable locale
  129.        For i = 1 To n                                                                       'on parcourt les deux tableaus déclarés res & jeu
  130.            res(i) = jeu(i, index)                                                            'durant le parcourt on extrait la colonne du tableau jeu on parcourt toutes les lignes
  131.        Next                                                                                   'fin pour
  132.        Return res                                                                              'on retourne le tableau res
  133.  
  134.     End Function                                                                                   'fin fonction
  135.  
  136.     Private Function inverser(ByVal ligne() As Short) As Short()                'on déclare le tableau inverser en private
  137.        Dim res(n) As Short                                                      'on déclare le tableau à une dimension res en short comme variable locale
  138.        Dim i As Byte                                                             'on déclare i en byte comme variabel locale
  139.  
  140.         For i = 1 To n                                                            'on parcourt les deux tableaus déclarés res & jeu
  141.            res(i) = ligne((n + 1) - i)                                            'on inverse les cellules du tabeau ligne et le tableau res est égale à ligne
  142.  
  143.         Next                                                                        'fin pour
  144.        Return res                                                                   'on retourne le tableau res
  145.  
  146.  
  147.     End Function                                                                     'fin foncton
  148.  
  149.     Private Function remplacer_ligne(ByVal jeu(,) As Short, ByVal index As Byte, ByVal newligne() As Short) As Short(,) 'on declare la fonction remplacer_ligne en private
  150.  
  151.         Dim i As Byte                                     'on déclare i en byte comme variable locale
  152.  
  153.         For i = 1 To n                                      'on parcourt les deus tableaux jeu et newligne déclarés auparavant
  154.            jeu(index, i) = newligne(i)                      'durant le parcourt la ligne de jeu est égale à la nouvelle ligne extraite auparavant
  155.        Next                                                   'fin pour
  156.  
  157.         Return jeu                                             'on retourne jeu
  158.  
  159.     End Function                                                'fin fonction
  160.  
  161.     Private Function remplacer_col(ByVal jeu(,) As Short, ByVal index As Byte, ByVal newcol() As Short) As Short(,)   'on déclare lafonction remplacer_col en private
  162.  
  163.         Dim i As Byte                               'on déclare i en byte comme variable locale
  164.  
  165.         For i = 1 To n                                'on parcourt les deux tableau jeu & newcol
  166.            jeu(i, index) = newcol(i)                   'durant le parcourt la colonne de jeu est égale à la nouvelle colonne extraite auparavant
  167.        Next                                              'fin pour
  168.  
  169.         Return jeu                                          'on retourne jeu
  170.  
  171.     End Function                                               'fin fonction
  172.  
  173.     Public Function Deplacement_bas(ByVal jeu(,) As Short) As Short(,)     'on déclare la fonction deplacement_bas en publiv
  174.  
  175.         Dim i As Byte, j As Byte
  176.         Dim new_col() As Short
  177.  
  178.  
  179.         For i = 1 To n
  180.  
  181.             new_col = fusion(extraire_col(jeu, i))
  182.             jeu = remplacer_col(jeu, i, new_col)
  183.  
  184.  
  185.         Next
  186.  
  187.         Return jeu
  188.  
  189.     End Function
  190.  
  191.  
  192.  
  193.     Public Function Deplacement_haut(ByVal jeu(,) As Short) As Short(,)
  194.  
  195.         Dim i As Byte, j As Byte
  196.         Dim new_col() As Short
  197.  
  198.  
  199.  
  200.         For i = 1 To n
  201.  
  202.             new_col = fusion(inverser(extraire_col(jeu, i)))
  203.             jeu = remplacer_col(jeu, i, inverser(new_col))
  204.  
  205.  
  206.         Next
  207.  
  208.  
  209.         Return jeu
  210.  
  211.     End Function
  212.  
  213.     Public Function Deplacement_droite(ByVal jeu(,) As Short) As Short(,)
  214.  
  215.         Dim i As Byte, j As Byte
  216.         Dim new_line() As Short
  217.  
  218.  
  219.  
  220.         For i = 1 To n
  221.  
  222.             new_line = fusion(extraire_ligne(jeu, i))
  223.             jeu = remplacer_ligne(jeu, i, new_line)
  224.  
  225.  
  226.         Next
  227.  
  228.  
  229.         Return jeu
  230.  
  231.     End Function
  232.  
  233.  
  234.     Public Function Deplacement_gauche(ByVal jeu(,) As Short) As Short(,)
  235.  
  236.         Dim i As Byte, j As Byte
  237.         Dim new_line() As Short
  238.  
  239.  
  240.         For i = 1 To n
  241.  
  242.             new_line = fusion(inverser(extraire_ligne(jeu, i)))
  243.             jeu = remplacer_ligne(jeu, i, inverser(new_line))
  244.  
  245.  
  246.         Next
  247.  
  248.  
  249.  
  250.         Return jeu
  251.  
  252.     End Function
  253.  
  254.     Public Function partie_gagnée(ByVal jeu(,) As Short)  'on déclare la fonction partie_gagnée en public
  255.        Dim cible_atteint As Boolean                       'on déclare cible_atteint en boolean comme variable locale
  256.        Dim parcoursterminé As Boolean = False              'on déclare parcoursterminé en boolean comme variable locale
  257.        Dim i As Byte, j As Byte                              'on déclare i & j en byte comme variable locale
  258.        i = 1                                                  'les valeurs des variables au départ
  259.        j = 1
  260.         cible_atteint = False
  261.         If jeu(i, j) = 2 ^ cible = 2048 Then             'si notre jeu(i,j)=2^cible=2048 alors
  262.            cible_atteint = True                           'cible_atteint est vraie et le la partie est gagnée
  263.            Call jeuterminé(jeu)                        'et la partie est terminée
  264.            parcoursterminé = True
  265.         End If                                             'fin si
  266.        Return cible_atteint                                'on retourne cible_atteint
  267.    End Function                                              'fin fonction
  268.  
  269.     Public Sub Sauvegarder_tableau()
  270.         Dim i As Byte, j As Byte
  271.         For i = 1 To n
  272.             For j = 1 To n
  273.                 old_jeu(i, j) = Jeu(i, j)
  274.             Next
  275.         Next
  276.  
  277.  
  278.  
  279.     End Sub
  280.  
  281.     Public Sub restaurer_tableau()
  282.         Dim i As Byte, j As Byte
  283.         For i = 1 To n
  284.             For j = 1 To n
  285.                 Jeu(i, j) = old_jeu(i, j)
  286.  
  287.             Next
  288.             Score = oldscore
  289.         Next
  290.  
  291.  
  292.  
  293.     End Sub
  294.  
  295.     Public Sub TirerAleatoirement()                           'on déclare la procédure tireraleatoirement en public
  296.        Randomize()                                            'on déclare randomize
  297.        Dim Randomizer As New Random()                          'on déclare randomizer en new random
  298.        Dim lig As Byte, col As Byte                             'on déclare lig & col en byte comme variable locale
  299.        lig = 1                                                   'les valeurs des variables déclarées au départ
  300.        col = 1
  301.  
  302.         Do                                                            'repeter
  303.            lig = CByte(Int(n * Rnd() + 1))                           'lig= à la conversion en byte des valeurs aleatoires qui commencent par 1
  304.            col = CByte(Int(n * Rnd() + 1))                             'col= à la conversion en byte des valeurs aleatoires qui commencent par 1
  305.        Loop Until Jeu(lig, col) = 0                                'jusqu'a qu le tableau jeu avec les indices lig & col soit égale =0
  306.        Jeu(lig, col) = 2 ^ x                                       'le tableau jeu(lig,col)=2^x
  307.    End Sub                                                          'fin de la procédure
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316. End Module                                                           'fin du module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement