From 33c984363af4460734cb9e6778650e73174f7ac3 Mon Sep 17 00:00:00 2001
From: Dahmane Lynda <lynda.dahmane.etu@118p28.fil.univ-lille.fr>
Date: Wed, 21 Feb 2024 10:06:04 +0100
Subject: [PATCH] tp5

---
 .../__pycache__/apl1test.cpython-310.pyc      | Bin 0 -> 2821 bytes
 .../__pycache__/cell.cpython-310.pyc          | Bin 0 -> 2828 bytes
 .../__pycache__/minesweeper.cpython-310.pyc   | Bin 0 -> 6349 bytes
 Tp5/minesweeper/minesweeper.py                |  50 +++++++++++++-----
 4 files changed, 38 insertions(+), 12 deletions(-)
 create mode 100644 Tp5/minesweeper/__pycache__/apl1test.cpython-310.pyc
 create mode 100644 Tp5/minesweeper/__pycache__/cell.cpython-310.pyc
 create mode 100644 Tp5/minesweeper/__pycache__/minesweeper.cpython-310.pyc

diff --git a/Tp5/minesweeper/__pycache__/apl1test.cpython-310.pyc b/Tp5/minesweeper/__pycache__/apl1test.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..97a6611f554074410ec9e7d9ccc05803653912d1
GIT binary patch
literal 2821
zcmd1j<>g{vU|{%rdrvA4Hv_|C5C<8vGB7YWFfcF_pJHHONMT4}%wdQE(M&mvxlB<^
zj372+4l`JcIfo^eHHsA~#s(H+$zjW7k7Cc|h~j{XbArWLb2xLkqPU=9++Z=b9G+a>
zC|;--UlbqMKK>|vFf9-z0Hy__1l<`@*i$%K7*aS=S(}-ogi?i?8B!UtgtJ8AMN<S*
zxKhPZxKqW_SW<XWcw1Pb#8dcE#nPBk_)`R0SfV6S7=sx!g<gVu>8Htfi_^6%F{d=K
zB)>?L@s^NpVrHImKxIirex6fea&~H7iYC)7Vb_Yp+=86c@XV47*NTGF<dW2sTVhCp
z`K2W=agd2VhA#QZA*sbBnvAyuTq}}O3raHc^TJY#QZkcEl0g<DV`f+oD={!Iq%uS?
zrZ7Y?r7%V@r!b{3w=hJpq;RCLrLecKM6sr@1~X`K-s1MnPtJxquS%RtK|w*mEipS)
zAqnDQJ+MeJBa$T`HV8X2Ffe>(0Y_yp!%9ZKl?<AUw^)i(bJB{q85kJA#IHd8jQreG
z{TxI6oXWhEM7@;6jNHV$RK3)aQhk^F<kH;Kypm%5!~$KYgf3W_en^3-er{%7YH@jL
zYC&p|equq6VM%IniC#hFEsps3%)HE!_;^u}1DF^X7+4sqM3B6p2UBp1tthpmv?$Ln
z8Kes41rQtN{vuA0OF_vN>|9NzA|3_?hFi?J#pz%H2*C>y<0($fONq}-EiO(>Pn7^^
z<7Z%CsFFao7+HxXQ;`4z1B0I?8_30ZiMgrq@wd3*<8$*<N^?MLp7{8}(!?C7410Wh
zN`7*Dd=VeWXdw^*4@HD4iZ~b;7z9Ci2*luEU}5B7=3@qn-eS1Lk(Qa03Nr5&TXBAA
zQF1DZzd^1683~HF;xmj43@MCo$TWwwmZ^p@g*lt4NVSBah9QNenW>+rmbr#`0pmi3
zTE=jO6jl}n7KUbKMut2NLxy67az;i55R7DCWGG>(VW?qDVe4h8WvO9Vz`T&5mbHYX
zhP9comaT@ZhAD;Jh9QNymc546g(0@9mZOGa0qa7BTFw;aTCNn17^Yh8TAmcnTHYE?
z7lzn?TD}^N1#C5Z3mI$qOW14pN;sOCippxZQ@G3-YPoCp7jQ0QD9Wkf0rPokm{Pb|
z86+7%JZ1(PhCGfMrW77zkrduq-V*j2{t~WcrlQswrW8JO*&41C{u=(-3@HM0navq$
zxgd5F&#vK05v<`~z`c+GAy?>K!&|(*hCM~7hGPK_SVp*pXEsBMNDcRFh7{4c?B)!$
z?0G^pOetc>_Mqqx2iwD5!(IdO6MLa`iUcT>BtiB_f_wyKNr8L<W=Vrw4Q9!J%muRq
z=5p7ti!;=+*RTgOXv$W3fwO85IK?X@<|*VCr7I*R6_*qxCYLDWrzw<Vq$+^&P_aTm
zQED+L-zj9~DI~zsOo9T41<CJ4p!}i9dW*Frza%l|7JG4Na&l^M@hy(D#LS%1qSWGB
zY^g;>`9;OISW|NgN-B%QK{<q}sKif`sR*1mBtZ#Sih+SalL>4Xm<V|ZGPg(?Bqzhb
zz~ELS3(7*wT3QNKOk7-5%nAw$RZLn6Rm=)?3cncjOF_w1q3H0+(&FOGVlJ*CIR*xX
zQjpPHTndh*$)$N<4=I!s<(HNnUa6qS#Z@ZIz`y`1E{hdXD-N$rE-g8{vRJ`Np%j$I
zxq?fRlMk;bwo<6#(ot|t&PYuLvAJ~=T#JfQON&4p4jqNC%#>6s1x?;tEcpegdAC@K
zQWH~(K&8elj#Nnbo_dQpCpGUDPkL%ed@7_oFTN!K;*~)P=J>Rt{9KsSEw0Ss%)H`~
z#JuFxB2a;Oi!-wr<doFn;v#lX$Z><Trlgi6X66*%;s9|#xmZ&G5tg?&U{QICIW05q
z7AMpt`9-%_!I654G4B>LC}vnd+*=%QXYmxJ7Q<Xpe2YCVDITnV3(APk&jttUEq17m
zTkKFjKuR4@6cm9AKwd}@9AA<jpI?*?ii+Ya1_lNu7A8grWc$Ox#>2?PDD$6%iHVWz
zKL-;BBL^c3Ba8&GxEQ&>d=5q-Mgb-kMlMDHMixc^Mh-?1My3W9MkPi8CJ{z1MlnV<
zMwb6z%*6JOiHYSO3v-brD6F_31t=(hFsda`^#?BAKxJJCLkVLILo;JDBO?R2o@T1@
z0B4ch%-qamaCS(^PX+~s9*D@zPf<uK%}WMVuV7_q`9%r|2+I-_AZ)OlpC;2S)`FtU
zyb`dZG#QJmK#3Y0SYQGiV(d_JgFpo~C;<tu7TJLE1S2@ZXiDDV1vL)xDwFf`N{TX*
zZpou?^<Z@{Jgy<BPzAdxX!Jle-BN?7(ksX*P0!3L)=Mq`w?yKh@_NYyU}h00%x>W@
z5*j}71&Kw)sYT$lTLfyw-BN%U4s|!&p^3#MFtu!;xRS%J44S}-Z|UQg*F$gbKynLv
zW?nI<;dG0mBsI4HRBGK~$}hgfTwGZUsR`Mke!Rtp7AEXYj?Uh$elE9|i%W{YF$azh
wq?C?`JPsR3eA|J_tYQ@g1_llW9!3sE5C)}J5Y58~N#h)h0!%#IB1}Ri0J6a2lmGw#

literal 0
HcmV?d00001

diff --git a/Tp5/minesweeper/__pycache__/cell.cpython-310.pyc b/Tp5/minesweeper/__pycache__/cell.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a4135726b4249c25e1f7d142a5331cf43a7b6ebc
GIT binary patch
literal 2828
zcmd1j<>g{vU|`^{I+MDMlY!weh=Yuo85kHG7#J9eO&Ay$QW&Bb+!<0BQ<z#9Qka^V
zq8L+|Qkb)uiX>84Qdo1CqnJ~f7qFzTEo5Y5NMQ{IV@>udEiS9v{1mH%<kXy;1cluE
zl+v73E-tIY(vpn)A}a+hE~}Kpl2j0bD;e2t5St0v{#1r2#uSDqCWs57m{XWjSXvmO
zSW;M1*jgB(SX0<jI9eE@*itxCxLO#Z*i*QJ88mrru{fvZ<RmkKjDunj8)ULG$Y)|8
zpE1@j#51ITNX8VV8ishL6y{(CO_szmMg|5h1t`eO%Ph%E%*m`uRY+9GOD$K($V^E|
z%~Jq*Od&r_AyFYWGcUEcJT<i-wMe~KA-yOwMGvk!wIZ{)BsDKN6{0jLKQ~E7A+Izy
zDYXbB0^%1dWacU4rDmpQB;^-n<macrHD@H2r7D!<D<q{V6qh8Hq^2n3B$lKWAxwv>
zEGSA%&d*E9EXmBzvr@>*&r5|%xmG0R7UZNBTXDgKR8&+z&R4Ki00okUCc1=PW^p{o
zWpHt~#GGP;iBRnzRYj>~sfjtM2q$A#nFlhhI6gBk9;-hM5Ei`zMV6l?^DTC$8*XuD
z7RSS^xh00(q?L@fSc+3~(pEAQaWF72{PNY$$j?pH&oR``smx1B)JsXs$W6>k)k`fY
z)pyBHF3nBND=F4bEYO8Y=z^8$hZLCVBSoe@D2nw8DsOSb$AeNqe7pcC>98>{Ft7=;
zF>*0h@q)rn4<?%oN?{=PgD{8<%17YTCd9zNP{Y8&kj0R~XwJX{N_9-Z44TY|-pDD<
zswlOjv?$L?!4En9tco*JQWa9u(o&O4tQ0cyl8aJ7&Q~bONF|hzKq(9qEb!o^ax%dl
z8F1SW(F#v7dC5ibkklWap9W527^wnFawK4nA>787piuYIWGrH3U|=W$MHDzaKnP9-
z28LTIpa3M~1a(j}gNh0vfhtXK6ceKhBl<xmfTI61sI&zaGYl!<Xs>zzcX4ihN@iN6
z0wjS$ayhMI4Jkjtoq;{uLR^I<La-STQdEj4B0@lsz=A6h*dPX5!h)HLuZkNS%n)&$
z0a?V$z`&r%Ty+`l?t;=1g+v8V=>jT5L1|q9QOr>}wL=RexZT*ptT?p<oUXBl8px$^
z1297jRA69Dwj3~HJ>g--4=sIQGB`u6SPoqJWHA)+)-Yr-7ICC71~Zf})i7i+H!}u9
zlVsv1tR+#RLUBn^W?s5NQEEX^YH?~_Ng}9<fhAE$f`xm?s;H#0Ak_+_2QEfbBtWZL
z1-LF~fq}h-DlRF~NKVbsRIs&GP*+fgYeET6s0n(IB!w0mC?*&XFoBr7kI#HV0_MXa
z5T6-NILx@k==6(GL6fBjoYz3f=N5BuNfGYyk3BxVxTGjPJ_?kMK;;sfI2$7iBNr13
za}^Ib4?-3AX>x$-y}ZQS)cE*YT=DU_;3iyr{4JjN_`=e}9EeO2$c!Q$P)_Fq5&R%R
z7({?7Vo1RYW`RoIB2e)RQdSJoz`?-5#39Zh#38^V2$liamz$WG7av~)DmwkD*r64$
zChINs`1q9k<oI~7!Xgn+QO=QAkYiYqT3m9A9Yp5lryyAexAPW<4aDVkAj`oPvoP~<
NapZ6?@-edf0{|zorV;=E

literal 0
HcmV?d00001

diff --git a/Tp5/minesweeper/__pycache__/minesweeper.cpython-310.pyc b/Tp5/minesweeper/__pycache__/minesweeper.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6217132647b82e81abf6470663bb12751261b307
GIT binary patch
literal 6349
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
N^&A2mjC_nN{{TXQU)cZv

literal 0
HcmV?d00001

diff --git a/Tp5/minesweeper/minesweeper.py b/Tp5/minesweeper/minesweeper.py
index 0476c3b..64ad2d3 100755
--- a/Tp5/minesweeper/minesweeper.py
+++ b/Tp5/minesweeper/minesweeper.py
@@ -78,7 +78,7 @@ class Minesweeper():
     10
     $$$ game.nbombs
     4
-    $$$ game.state== GameStat.unfinished
+    $$$ game.state== GameState.unfinished
     True
     $$$ cel= game.get_cell(1, 2)
     $$$ cell.is revealed
@@ -113,13 +113,13 @@ class Minesweeper():
         4
         $$$ game.state ==GameState.unfinished 
         True
+        
         """
         self.width= width
         self.height= height
-        self.state= GameState.unfinished
         self.nbombs=nbombs
-    
-        self.grid=[(cell() for x in range(width) for y in range(height))]
+        self.state=GameState.unfinished
+        self.grid=[[Cell() for x in range(width)] for y in range(height)]
         
         
         
@@ -134,9 +134,7 @@ class Minesweeper():
         $$$ sum(1 for x in range(20) for y in range(10) if game.get_cell(x, y).is_bomb)
         4
         """
-       
-        
-      
+        return self.grid[x][y]
             
 
     def _put_a_bomb_at(self, x: int, y: int):
@@ -162,7 +160,13 @@ class Minesweeper():
         $$$ all(game.get_cell(x, y).nbombs_in_neighborhood == 1 for x, y in voisins)
         True
         """
-        ...
+        Cell=self.get_cell(x,y)
+        if not Cell.is_bomb:
+            Cell.is_bomb=True
+            neighbors=self.get_neighbors(x,y)
+            for neighbors in neighbors:
+                neighbors.nbombs_in_neighborhood+=1
+                
 
     def all_cells_are_revealed_or_bomb(self) -> bool:
         """
@@ -171,7 +175,11 @@ class Minesweeper():
         précondition: none
 
         """
-        ...
+        for row in self.grid:
+            for Cell in row:
+                if not Cell.is_revealed and not Cell.is_bomb:
+                    return Fals
+        return True
 
     def reveal_all_cells_from(self, x, y):
         """
@@ -184,7 +192,7 @@ class Minesweeper():
           winning
         
         precondition: 0 <= x < width of game and O <= y < height of game
-
+    
         exemples:
 
         $$$ game = Minesweeper(20, 10, 0)
@@ -209,8 +217,26 @@ class Minesweeper():
         $$$ game.state
         GameState.losing
         """
-        ...
-
+       
+        Cell=self.get_cell(x,y)
+        if Cell.is_bomb:
+            self.state=GameState.losing
+        else:
+             Cell.is_revealed=True
+             if Cell.nbomb_in_neighborhood==0:
+                 
+                 
+                neighbor =self.get_neighbors(x,y)
+                for neighbor in neighbors:
+                    
+                    if not neighbor.is_revealed:
+                        
+                        self.reveal_all_Cells_from(neighbor.x,neighbor.y)
+                        if self.all_Cells_are_revealed_or_bomb():
+                            
+                            self.state=GameState.winning
+                
+               
 
 if (__name__ == '__main__'):
     import apl1test
-- 
GitLab