Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Module Module2048
- 'les déclarations en:
- 'dim: sont des déclarations locales juste à l'intérieur de la procédure où la fonction dans laquelle il est présent
- 'private: sont des déclaration valables dans tous le module où la form dans laquelle il est présent
- 'public: sont des déclarations valables dans tous le projet dans laquelle il est présent c-a-d valabes dans module et forme
- Public n As Byte = 4 'on déclare n comme type byte et égale à 4 en public
- Public Jeu(n, n) As Short 'on déclare un tableau à deux dimensions de lignes et colonnes égales à n, en public
- Public Score As Short 'on déclare score comme type short, en public
- Public old_jeu(n, n) As Short
- Public oldscore As Short
- Public Const cible = 11 '2^11=2048 'on déclare cible =11 qui représente 11^2=2048, en public
- Dim Randomizer As New Random() 'on déclare randomizer comme random, variable globale
- 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
- Public ligne(n) As Short
- Public Sub initialiser(ByVal jeu(,) As Short, ByRef score As Short) 'on déclare une procédure initialiser en public
- Randomize() 'on déclare randomize() en locale
- Dim i As Byte 'on déclare i, et j (indice de lignes et colonnes respectivements) en byte
- Dim j As Byte
- score = 0 'au début le score=0
- For i = 1 To n 'on parcourt tout le tableau en lignes et en colonnes
- For j = 1 To n
- jeu(i, j) = 0 'notre jeu(i,j)=0 durant le parcours
- old_jeu(i, j) = 0
- Next
- Next
- Call TirerAleatoirement() 'on appelle la procédure TirerAleatoirement
- Call TirerAleatoirement()
- End Sub
- Public Function jeuterminé(ByVal jeu(,) As Short) As Boolean 'on déclare la function jeuterminé en public
- Dim parcoursterminé As Boolean 'on déclare parcoursterminé comme boolean(logique) en variable locale
- Dim fini As Boolean 'on déclare fini comme boolean en variable locale
- Dim deplacer As Boolean 'on déclare deplacer comme boolean en variable locale
- Dim i As Byte 'on déclare i, et j (indice de lignes et colonnes respectivements) en byte
- Dim j As Byte
- parcoursterminé = False 'les valeurs des variables au debut
- deplacer = True
- i = 1
- j = 1
- fini = True
- While fini = True And parcoursterminé = False 'tant que fini est vraie et parcoursterminé est faux
- If jeu(i, j) = 0 Then 'si le jeu(i,j) est égal à 0 alors
- fini = False
- Else 'sinon
- j = j + 1 'on se déplace dans les colonnes
- deplacer = True
- If j = n + 1 Then 'si j dépasse le nombre de colonnes (n) alors
- i = i + 1 'on se déplace en lignes
- j = 1 'et on reviens à la valeur initiale de notre numéro de colonnes<n
- If i = n + 1 Then 'si le nombre de lignes également est dépasse le nombre de lignes (n)alors
- parcoursterminé = True
- fini = True
- deplacer = False
- End If
- End If
- End If
- End While
- Return parcoursterminé 'on return la valeur de parcoursterminé
- End Function 'fin de la fonction
- Public Function deplacementligne(ByVal ligne() As Short, ByVal index As Byte) As Short() 'on déclare la fonction deplacementligne en public
- Dim i As Short 'on déclare i en short comme variable locale
- Dim new_line() As Short = ligne 'on déclare le tableau à une dimension new_line
- For i = index To 2 Step -1 'on parcourt le tableau dans le sens inverse (step -1)
- new_line(i) = new_line(i - 1) 'durant tout le parcours la valeur de la cellule de depart=la valeur de cellule précedente
- Next
- new_line(1) = 0 'à la fin de notre tableau la valeur de notre premiere cellule du tableau est = 0
- Return new_line 'on returne le tableau new_line
- End Function 'fin de la fonction
- Public Function fusion(ByVal ligne() As Short) As Short() 'on déclare la fonction fusion en public
- Dim i As Short 'on déclare i en short comme variable locale
- Dim cpt As Short 'on déclare un compteur cpt en short comme variable locale
- Dim new_line() As Short = ligne 'on déclare le tableau à une seule dimension new_line
- For i = n To 1 Step -1 'on parcours le tableau dans le sens inverse (step -1) '
- cpt = 0
- While new_line(i) = 0 And cpt < i 'tant que la valeur du tableau new_line(i)=0 et cpt<1 alors
- new_line = deplacementligne(new_line, i) 'on fait appel à la fonction deplacementligne pour le calcul du tableau
- cpt = cpt + 1 'on augmente à chaque boucle de 1 le compteur
- End While 'fin tant que
- Next 'fin pour
- For i = n To 2 Step -1 'on ouvre une nouvelle boucle et on parcourt le tableau new_line
- If new_line(i) = new_line(i - 1) Then 'si la valeur de la cellule de depart=la valeur de cellule précedente alors
- 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)
- Score = Score + ligne(i)
- new_line(i - 1) = 0 'la valeur de la cellule précedente est= 0
- new_line = deplacementligne(new_line, i - 1) 'on fait appel à la fonction deplacementligne pour ce calcul du tableau
- End If 'fin si
- Next 'fin pour
- Return new_line 'on retourne le tableau new_line
- End Function 'fin de la fonction
- Private Function extraire_ligne(ByVal jeu(,) As Short, ByVal index As Byte) As Short() 'on déclare la fonction extraire_ligne en private
- Dim res(n) As Short 'on déclare le tableau à une dimension res en short comme variable locale
- Dim i As Byte 'on déclare i en byte comme variable locale
- For i = 1 To n 'on parcourt les deux tableaus déclarés res & jeu
- res(i) = jeu(index, i) 'durant le parcours on extrait la ligne entiere du tableau jeu en parcourant toutes les colones de la ligne
- Next 'fin pour
- Return res 'on retourne le tableau res
- End Function 'fin de la fonction
- Private Function extraire_col(ByVal jeu(,) As Short, ByVal index As Byte) As Short() 'on déclare la fonction extraire_col en private
- Dim res(n) As Short 'on déclare le tableau res en sgort comme variable locale
- Dim i As Byte 'on déclare i en byte comme variable locale
- For i = 1 To n 'on parcourt les deux tableaus déclarés res & jeu
- res(i) = jeu(i, index) 'durant le parcourt on extrait la colonne du tableau jeu on parcourt toutes les lignes
- Next 'fin pour
- Return res 'on retourne le tableau res
- End Function 'fin fonction
- Private Function inverser(ByVal ligne() As Short) As Short() 'on déclare le tableau inverser en private
- Dim res(n) As Short 'on déclare le tableau à une dimension res en short comme variable locale
- Dim i As Byte 'on déclare i en byte comme variabel locale
- For i = 1 To n 'on parcourt les deux tableaus déclarés res & jeu
- res(i) = ligne((n + 1) - i) 'on inverse les cellules du tabeau ligne et le tableau res est égale à ligne
- Next 'fin pour
- Return res 'on retourne le tableau res
- End Function 'fin foncton
- 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
- Dim i As Byte 'on déclare i en byte comme variable locale
- For i = 1 To n 'on parcourt les deus tableaux jeu et newligne déclarés auparavant
- jeu(index, i) = newligne(i) 'durant le parcourt la ligne de jeu est égale à la nouvelle ligne extraite auparavant
- Next 'fin pour
- Return jeu 'on retourne jeu
- End Function 'fin fonction
- 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
- Dim i As Byte 'on déclare i en byte comme variable locale
- For i = 1 To n 'on parcourt les deux tableau jeu & newcol
- jeu(i, index) = newcol(i) 'durant le parcourt la colonne de jeu est égale à la nouvelle colonne extraite auparavant
- Next 'fin pour
- Return jeu 'on retourne jeu
- End Function 'fin fonction
- Public Function Deplacement_bas(ByVal jeu(,) As Short) As Short(,) 'on déclare la fonction deplacement_bas en publiv
- Dim i As Byte, j As Byte
- Dim new_col() As Short
- For i = 1 To n
- new_col = fusion(extraire_col(jeu, i))
- jeu = remplacer_col(jeu, i, new_col)
- Next
- Return jeu
- End Function
- Public Function Deplacement_haut(ByVal jeu(,) As Short) As Short(,)
- Dim i As Byte, j As Byte
- Dim new_col() As Short
- For i = 1 To n
- new_col = fusion(inverser(extraire_col(jeu, i)))
- jeu = remplacer_col(jeu, i, inverser(new_col))
- Next
- Return jeu
- End Function
- Public Function Deplacement_droite(ByVal jeu(,) As Short) As Short(,)
- Dim i As Byte, j As Byte
- Dim new_line() As Short
- For i = 1 To n
- new_line = fusion(extraire_ligne(jeu, i))
- jeu = remplacer_ligne(jeu, i, new_line)
- Next
- Return jeu
- End Function
- Public Function Deplacement_gauche(ByVal jeu(,) As Short) As Short(,)
- Dim i As Byte, j As Byte
- Dim new_line() As Short
- For i = 1 To n
- new_line = fusion(inverser(extraire_ligne(jeu, i)))
- jeu = remplacer_ligne(jeu, i, inverser(new_line))
- Next
- Return jeu
- End Function
- Public Function partie_gagnée(ByVal jeu(,) As Short) 'on déclare la fonction partie_gagnée en public
- Dim cible_atteint As Boolean 'on déclare cible_atteint en boolean comme variable locale
- Dim parcoursterminé As Boolean = False 'on déclare parcoursterminé en boolean comme variable locale
- Dim i As Byte, j As Byte 'on déclare i & j en byte comme variable locale
- i = 1 'les valeurs des variables au départ
- j = 1
- cible_atteint = False
- If jeu(i, j) = 2 ^ cible = 2048 Then 'si notre jeu(i,j)=2^cible=2048 alors
- cible_atteint = True 'cible_atteint est vraie et le la partie est gagnée
- Call jeuterminé(jeu) 'et la partie est terminée
- parcoursterminé = True
- End If 'fin si
- Return cible_atteint 'on retourne cible_atteint
- End Function 'fin fonction
- Public Sub Sauvegarder_tableau()
- Dim i As Byte, j As Byte
- For i = 1 To n
- For j = 1 To n
- old_jeu(i, j) = Jeu(i, j)
- Next
- Next
- End Sub
- Public Sub restaurer_tableau()
- Dim i As Byte, j As Byte
- For i = 1 To n
- For j = 1 To n
- Jeu(i, j) = old_jeu(i, j)
- Next
- Score = oldscore
- Next
- End Sub
- Public Sub TirerAleatoirement() 'on déclare la procédure tireraleatoirement en public
- Randomize() 'on déclare randomize
- Dim Randomizer As New Random() 'on déclare randomizer en new random
- Dim lig As Byte, col As Byte 'on déclare lig & col en byte comme variable locale
- lig = 1 'les valeurs des variables déclarées au départ
- col = 1
- Do 'repeter
- lig = CByte(Int(n * Rnd() + 1)) 'lig= à la conversion en byte des valeurs aleatoires qui commencent par 1
- col = CByte(Int(n * Rnd() + 1)) 'col= à la conversion en byte des valeurs aleatoires qui commencent par 1
- Loop Until Jeu(lig, col) = 0 'jusqu'a qu le tableau jeu avec les indices lig & col soit égale =0
- Jeu(lig, col) = 2 ^ x 'le tableau jeu(lig,col)=2^x
- End Sub 'fin de la procédure
- End Module 'fin du module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement