From 952d2fcf3d0f6c682a4b8680a958de165afc17ae Mon Sep 17 00:00:00 2001
From: Guey Garance <garance.guey@student-cs.fr>
Date: Wed, 14 Nov 2018 09:32:16 +0100
Subject: [PATCH] commentaire

---
 .idea/inspectionProfiles/Project_Default.xml |   2 +
 .idea/workspace.xml                          | 132 +++++++++++++++----
 game2048/grid_2048.py                        | 104 +++++++++++----
 3 files changed, 193 insertions(+), 45 deletions(-)

diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 3dc583b..579ee6c 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -6,6 +6,8 @@
         <list>
           <option value="W29" />
           <option value="E501" />
+          <option value="W29" />
+          <option value="E501" />
         </list>
       </option>
     </inspection_tool>
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 8e048ac..f96e795 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,8 +2,9 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="a1e637b1-c555-4557-a6ba-8dfbc46c2cef" name="Default Changelist" comment="">
-      <change beforePath="$PROJECT_DIR$/game2048/tb_grid_2048.py" beforeDir="false" afterPath="$PROJECT_DIR$/game2048/grid_2048.py" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/game2048/tb_test_grid_2048.py" beforeDir="false" afterPath="$PROJECT_DIR$/game2048/test_grid_2048.py" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/game2048/grid_2048.py" beforeDir="false" afterPath="$PROJECT_DIR$/game2048/grid_2048.py" afterDir="false" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
@@ -42,40 +43,94 @@
         </counts>
       </usages-collector>
     </session>
+    <session id="-897679322">
+      <usages-collector id="statistics.lifecycle.project">
+        <counts>
+          <entry key="project.closed" value="1" />
+          <entry key="project.open.time.6" value="1" />
+          <entry key="project.open.time.7" value="1" />
+          <entry key="project.opened" value="2" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.extensions.open">
+        <counts>
+          <entry key="py" value="2" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.types.open">
+        <counts>
+          <entry key="Python" value="2" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.extensions.edit">
+        <counts>
+          <entry key="Python Console" value="38" />
+          <entry key="py" value="1757" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.types.edit">
+        <counts>
+          <entry key="Python" value="1795" />
+        </counts>
+      </usages-collector>
+    </session>
   </component>
   <component name="FileEditorManager">
-    <leaf>
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
       <file pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/game2048/grid_2048.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="68">
-              <caret line="4" column="19" selection-start-line="4" selection-start-column="19" selection-end-line="4" selection-end-column="19" />
+            <state relative-caret-position="349">
+              <caret line="126" column="34" selection-start-line="126" selection-start-column="34" selection-end-line="126" selection-end-column="34" />
+              <folding>
+                <marker date="1542184310612" expanded="true" signature="3334:3339" ph="..." />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/game2048/textual_2048.py">
+          <provider selected="true" editor-type-id="text-editor" />
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/game2048/test_textual_2048.py">
+          <provider selected="true" editor-type-id="text-editor" />
+        </entry>
+      </file>
     </leaf>
   </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Python Script" />
+      </list>
+    </option>
+  </component>
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
   </component>
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
+        <option value="$PROJECT_DIR$/game2048/textual_2048.py" />
+        <option value="$PROJECT_DIR$/game2048/test_textual_2048.py" />
         <option value="$PROJECT_DIR$/game2048/grid_2048.py" />
       </list>
     </option>
   </component>
-  <component name="ProjectFrameBounds" extendedState="6">
-    <option name="x" value="1056" />
-    <option name="width" value="756" />
-    <option name="height" value="1032" />
+  <component name="ProjectFrameBounds">
+    <option name="x" value="1069" />
+    <option name="width" value="1085" />
+    <option name="height" value="1391" />
   </component>
   <component name="ProjectView">
     <navigator proportions="" version="1">
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
+      <pane id="Course" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
@@ -88,20 +143,14 @@
               <item name="2048" type="462c0819:PsiDirectoryNode" />
               <item name="game2048" type="462c0819:PsiDirectoryNode" />
             </path>
-            <path>
-              <item name="2048" type="b2602c69:ProjectViewProjectNode" />
-              <item name="2048" type="462c0819:PsiDirectoryNode" />
-              <item name="textual2048" type="462c0819:PsiDirectoryNode" />
-            </path>
           </expand>
           <select />
         </subPane>
       </pane>
-      <pane id="Course" />
     </panes>
   </component>
   <component name="PropertiesComponent">
-    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../2048 local" />
     <property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
   </component>
   <component name="RunDashboard">
@@ -116,24 +165,52 @@
       </list>
     </option>
   </component>
+  <component name="RunManager">
+    <configuration name="grid_2048" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <module name="2048" />
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/game2048" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/game2048/grid_2048.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <option name="MODULE_MODE" value="false" />
+      <option name="REDIRECT_INPUT" value="false" />
+      <option name="INPUT_FILE" value="" />
+      <method v="2" />
+    </configuration>
+    <recent_temporary>
+      <list>
+        <item itemvalue="Python.grid_2048" />
+      </list>
+    </recent_temporary>
+  </component>
   <component name="SvnConfiguration">
     <configuration />
   </component>
   <component name="ToolWindowManager">
-    <frame x="-7" y="-7" width="1295" height="695" extended-state="6" />
+    <frame x="713" y="0" width="723" height="927" extended-state="0" />
     <editor active="true" />
     <layout>
-      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24960254" />
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.12244898" />
       <window_info id="Structure" order="1" weight="0.25" />
-      <window_info anchor="bottom" id="Version Control" />
-      <window_info anchor="bottom" id="Python Console" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" />
-      <window_info anchor="bottom" id="Run" order="2" />
+      <window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.32955974" />
       <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
       <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="bottom" id="Version Control" order="7" />
+      <window_info anchor="bottom" id="Python Console" order="8" weight="0.32955974" />
       <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
       <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
@@ -145,10 +222,19 @@
   <component name="editorHistoryManager">
     <entry file="file://$PROJECT_DIR$/game2048/grid_2048.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="68">
-          <caret line="4" column="19" selection-start-line="4" selection-start-column="19" selection-end-line="4" selection-end-column="19" />
+        <state relative-caret-position="349">
+          <caret line="126" column="34" selection-start-line="126" selection-start-column="34" selection-end-line="126" selection-end-column="34" />
+          <folding>
+            <marker date="1542184310612" expanded="true" signature="3334:3339" ph="..." />
+          </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/game2048/textual_2048.py">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/game2048/test_textual_2048.py">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
   </component>
 </project>
\ No newline at end of file
diff --git a/game2048/grid_2048.py b/game2048/grid_2048.py
index c2a1b3d..bf3f6b7 100644
--- a/game2048/grid_2048.py
+++ b/game2048/grid_2048.py
@@ -2,66 +2,126 @@ import random as rd
 
 THEMES = {"0": {"name": "Default", 0: "", 2: "2", 4: "4", 8: "8", 16: "16", 32:"32", 64: "64", 128: "128", 256: "256", 512: "512", 1024: "1024", 2048: "2048",4096: "4096", 8192: "8192"}, "1": {"name": "Chemistry", 0: "", 2: "H", 4: "He", 8:"Li", 16: "Be", 32: "B", 64: "C", 128: "N", 256: "O", 512: "F", 1024: "Ne", 2048:"Na", 4096: "Mg", 8192: "Al"}, "2": {"name": "Alphabet", 0: "", 2: "A", 4: "B", 8:"C", 16: "D", 32: "E", 64: "F", 128: "G", 256: "H", 512: "I", 1024: "J", 2048: "K",4096: "L", 8192: "M"}}
 
+#FONCTIONNALITE 1
+
 def create_grid(n):
     game_grid = []
     for i in range(n):
-        game_grid.append([' ']*n)
-    return game_grid
+        #crée le bon nombre de ligne
+        game_grid.append([' ']*n) #crée le bon nombre de colonnes
+    return (game_grid)
+
 
 def get_value_new_tile():
+    #choisi la valeur de la nouvelle case avec la probabilté indiquée dans l'énoncé
     return rd.choice([2,2,2,2,2,2,2,2,2,4])
 
 def get_all_tiles(grid):
     tiles = []
-    for line in grid:
-        for tile in line:
-            if tile == ' ': tiles.append(0)
+    for line in grid: #parcours toutes les lignes
+        for tile in line: #parcours toutes les colonnes
+            if tile == ' ': tiles.append(0) #traite le cas particulier de la double notation 0 ou " " pour les emplacments vides
             else: tiles.append(tile)
     return tiles
 
+
 def get_empty_tiles_positions(grid):
     empty_tiles = []
-    n = len(grid)
-    m = len(grid[0])
-    for i in range(n):
-        for j in range(m):
+    nb_ligne = len(grid)
+    nb_colonne = len(grid[0])
+    #on suppose que la grille a au moins une ligne
+    #on suppose que toutes les lignes ont le même nombre de colonnes
+
+    for i in range(nb_ligne):
+        for j in range(nb_colonne):
+
             if grid[i][j] == ' ' or grid[i][j] == 0:
+            #traite le cas particulier de la double notation 0 ou " " pour les emplacments vides
                 empty_tiles.append((i,j))
     return empty_tiles
 
+
 def get_new_position(grid):
+    #choisi une postion au hasard parmis les position libre
     empty_tiles = get_empty_tiles_positions(grid)
-    return rd.choice(empty_tiles)
+    return (rd.choice(empty_tiles))
 
 def grid_get_value(grid,x,y):
     if grid[x][y] == ' ':
+        #traite le cas particulier de la double notation 0 ou " "
         return 0
     return grid[x][y]
 
 def grid_add_new_tile(grid):
     x,y = get_new_position(grid)
     grid[x][y] = get_value_new_tile()
+    #attention, la fonction modifie la liste passée en argument !
     return grid
 
 def init_game(n):
     grid = create_grid(n)
-    for i in range(2):
+    for new_tile in range(2):
         grid = grid_add_new_tile(grid)
     return grid
 
+
+#FONCTIONNALITE 2
+
 def grid_to_string_with_size_and_theme(grid, theme,n):
-    m = long_value_with_theme(grid,theme)
-    a = ""
-    for i in range(n):
-        a += (" " + "="*(m+2))*n + "\n"
-        for j in range(n):
-            a += "| {}".format(theme[grid[i][j]]) + " "*(1 + m - len(theme[grid[i][j]]))
-        a += "|\n"
-    a += (" " + "="*(m+2))*n
-    return a
+    longest_str = long_value_with_theme(grid,theme)
+    affichage = ""
+    for ligne in range(n):
+
+        #création de la délimation du dessus
+        affichage += (" " + "="*(longest_str+2))*n + "\n"
+        #calcul du nombre nécéssaire d'espaces
+
+        for colonne in range(n):
+            affichage += "| {}".format(theme[grid[ligne][colonne]]) + " "*(1 + longest_str - len(theme[grid[ligne][colonne]]))
+        affichage += "|\n" #fini la ligne
+
+    #création de la dernière délimation du bas
+    affichage += (" " + "="*(longest_str+2))*n
+    return affichage
 
 def long_value_with_theme(grid,theme):
     return max(len(theme[v]) for v in get_all_tiles(grid))
 
-grid=[[16, 4, 8, 2], [2, 4, 2, 128], [4, 512, 32, 64], [1024, 2048, 512, 2]]
-print(grid_to_string_with_size_and_theme(grid,THEMES["1"],4))
+#TEST
+"""grid=[[16, 4, 8, 2], [2, 4, 2, 128], [4, 512, 32, 64], [1024, 2048, 512, 2]]
+print(grid_to_string_with_size_and_theme(grid,THEMES["1"],4)"""
+
+
+#FONCTIONNALITE 4
+
+"""def move_row_left(row):
+    n=len(row)
+    row_without_zero=[]
+    for i in range (n):
+        if row[i]!= 0:
+            row_without_zero.append(row[i])
+    n_bis=len(row_without_zero)
+    print(row_without_zero)
+    row_fusion=[]
+    indice=0
+    while indice < n_bis-1 :
+        if row_without_zero[indice]==row_without_zero[indice+1]:
+            row_fusion.append(row_without_zero[indice]*2)
+            row_without_zero.pop(indice+1)
+            n_bis=n_bis-1
+            print(row_fusion)
+        elif indice+1 < n_bis-1:
+            row_fusion.append(row_without_zero[indice])
+            print(row_fusion)
+        elif indice+1==n_bis :
+            row_fusion.append(row_without_zero[indice])
+            row_fusion.append(row_without_zero[indice+1])
+            
+        indice=indice+1
+    n_fusion=len(row_fusion)
+    row_final=[0]*4
+    for tile in range (n_fusion):
+        row_final[tile]=row_fusion[tile]
+    return(row_final)
+
+print(move_row_left([2,4,2,0]))"""
-- 
GitLab