Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
2
2048
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Thomas Bianco
2048
Commits
952d2fcf
Commit
952d2fcf
authored
6 years ago
by
Garance Guey
Browse files
Options
Downloads
Patches
Plain Diff
commentaire
parent
2864c681
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
.idea/inspectionProfiles/Project_Default.xml
+2
-0
2 additions, 0 deletions
.idea/inspectionProfiles/Project_Default.xml
.idea/workspace.xml
+109
-23
109 additions, 23 deletions
.idea/workspace.xml
game2048/grid_2048.py
+82
-22
82 additions, 22 deletions
game2048/grid_2048.py
with
193 additions
and
45 deletions
.idea/inspectionProfiles/Project_Default.xml
+
2
−
0
View file @
952d2fcf
...
...
@@ -6,6 +6,8 @@
<list>
<option
value=
"W29"
/>
<option
value=
"E501"
/>
<option
value=
"W29"
/>
<option
value=
"E501"
/>
</list>
</option>
</inspection_tool>
...
...
This diff is collapsed.
Click to expand it.
.idea/workspace.xml
+
109
−
23
View file @
952d2fcf
...
...
@@ -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=
"10
5
6"
/>
<option
name=
"width"
value=
"
756
"
/>
<option
name=
"height"
value=
"1
032
"
/>
<component
name=
"ProjectFrameBounds"
>
<option
name=
"x"
value=
"106
9
"
/>
<option
name=
"width"
value=
"
1085
"
/>
<option
name=
"height"
value=
"1
391
"
/>
</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=
"7
13
"
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
This diff is collapsed.
Click to expand it.
game2048/grid_2048.py
+
82
−
22
View file @
952d2fcf
...
...
@@ -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]))
"""
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment