From 831c4799d4f16f001f656591ab0b4755d967e890 Mon Sep 17 00:00:00 2001
From: ClemW <clement.wang@student-cs.fr>
Date: Mon, 7 Jun 2021 18:30:44 +0200
Subject: [PATCH] add imperfections in maze generator

---
 __pycache__/gen_algo.cpython-38.pyc | Bin 9332 -> 9607 bytes
 gen_algo.py                         |  15 ++++++++++++++-
 main.py                             |   3 ++-
 main_seq.py                         |   3 ++-
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/__pycache__/gen_algo.cpython-38.pyc b/__pycache__/gen_algo.cpython-38.pyc
index 405cda6c515797b0d78076361d961454e2fab437..e443f1958249d7a16fd85be2d5794cce403be55b 100644
GIT binary patch
delta 2276
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
ImKF#H08~WNSO5S3

delta 1997
zcmZqo{^G$G%FD~ez`($e7q~Y;SA8R24P(7<3R4Pm3u6>>ibx7;3R??f6iX^=3VRAi
z3qvzw6k94=7JCXOoX48NmBI~{;Yj7kVo%|L^H@`OQ~1C#oT;2y>?!;(UW!19U<*SO
zSBg+DgQn;$7Wc&5)RjyxnHd-uUa~XDF)$=Eft&=z><kPHAneS*z))<*I9Z43G9%L@
zX7O<55}q37X2uluY~~4!MM^cy3wTr57c$ne)G*bsG&9z+*08!T#0u21)i5vMt6^Kn
z$jC5(v5>FuRSI(rLl$=pLl(OYLkfrnVGbLH6oz01O`gpbESniQqFBpPi%K%1CVyrv
zU@ziiU|`VXpIpq=!>`GHi={X<C#^`3fq|h&bh0A5#AG*iIYzC?sqDI&SFk5A`A9P`
zFx+BGPtD8EO)U}uDFdsO0I?)NgcOKS01@IKLJp*!xj40?NDRbf0}(PH8##&;Cx>up
z%d3J!R6qm^oL~iMVkyW;taP6|kE=^k5iSE(1ClNRIizZ`BexT;E=X37fq`KqQ<382
z3EUE_Ai289Yq|B+L2@e@Z?VRwR%DhG>4Q{)jQ|s1b3l%1n#{~&rwmeCWCT)T03yIj
zzyw@f8<Lq(tns;tRjF9b1cgi2<Xtc`O+dzBGZUn)Z}M7h>B;XzIVaom3X6c;pviQL
zwV)_7uLKgl`jgXm<rF7@QV2NdFjnz{5|tiU3D^yOnv6vplUMQT>ZpNi(gB4YM?q13
zL26M+B{-mNu@$G5l%y6FfqV-w)@*X1s`z9nK0!u{%{qK<nHkk5O9>e>uAA&9WW=a3
zxlzb3TpMH%PikIDd_jJ3W=Up#-YwRm#Ju#>A`OrXr(a@js%ueEeo>JS$X;O(0g7);
z&LU8Z-Qq|tN=*c7<H}8}h|fvQOE1YN(wM9wY{v?6>Eg}l!l8^xAT3}Mi$K{xlNGEv
zimAddimAfr7Grji%H(?@Qj7;D{}l1j1O?Da#whl9XcEL0r6AW`n4Bl-1c_1~kh`!2
zKS<pbXz)A9xqy^mGY%9CHzxauxvGLJ*JLd61*yblAV}pssDYZ3|A?vMHq?oMf#K0)
zM{%D_sG)wi3<art0grtqP3|IdkWvc}VF`){_W1ae{N(ufB2btXd4t5QKm^EpMb;n|
z$X!KFpa^FxvSDCgm^N8h!jREsass2s<QP8A%}Elq%u=o(m2RM{$p}`Y$y8(qGM+Jh
z@^5JwRtE+K2HwdsGBF$=2d`u-(w^KPqsAyQdAUrvAt>UC<Ut025?>L-K9FXX;{2i#
zXnH7004WFu5lNH%WyMqyLCh!+fyn=1ATBt=fqe6yVRNUfFJpou$XU!qU?;kRRCq8j
zF!*V5A|<>ekTA$|5O;v>LUjx@W!+-SE6q(xEh>T=RHQQ5OkSB$Y;%<SJ4S1;U%;lN
zf{e_97AzpP7l;5C319-`%v)T^Mft_W@%d$`MXHmV6)zZoeFY8+a8zJ(2s1c|7iEHs
zQ<>bXq{wJAd8yK3QLxo1AW^XWxgb{d<XB}HMw`i1%IzAUkS~e=iAI75up__($R$P5
z3=9k|j0_A#F_Se_l<H$aVa8IF15%j>BEW7+1F^8A@>^^v`Jg=I$jHD@3@W7=7&#a@
z7^^tl9rYkGnyh|Bfgs&MAR-t<gn+EzLQ9WD{vateaAg1rJctXxegQipACe9O7#JAd
mPEu9m2Qf4`Zn5T-<`z^I$xb#<m1YCSW5DD<Rbys8fp7rB#ft#|

diff --git a/gen_algo.py b/gen_algo.py
index 5aba5f0..2c5be11 100644
--- a/gen_algo.py
+++ b/gen_algo.py
@@ -12,7 +12,7 @@ class Game(object):
     # entrance : 2
     # exit : 3
 
-    def __init__(self, shape=(3, 7)):
+    def __init__(self, shape=(3, 7), holes=0):
 
         self.dist_factor = 5
         self.exploration_factor = 6
@@ -65,6 +65,19 @@ class Game(object):
             for i in temp:
                 queue.append(i)
 
+        for _ in range(holes):
+            if random.random() < 0.5:
+                verti = 2 * random.randint(
+                    1, self.maze.shape[1] // 2 - 1
+                )  # odd between 0 and shape[1]-1
+                hori = 2 * random.randint(0, self.maze.shape[0] // 2 - 1) + 1
+            else:
+                hori = 2 * random.randint(1, self.maze.shape[0] // 2 - 1)
+                verti = 2 * random.randint(0, self.maze.shape[1] // 2 - 1) + 1
+
+            if self.maze[hori, verti] == 1:
+                self.maze[hori, verti] = 0
+
         self.maze[self.entrance] = 2
         self.maze[self.exit] = 3
 
diff --git a/main.py b/main.py
index 5aef399..af17180 100644
--- a/main.py
+++ b/main.py
@@ -18,6 +18,7 @@ show_path_color = (160, 225, 55)
 
 #### Back
 shape = (10, 10)
+holes = 5
 number_of_generations = 1000
 pop_card = 3000
 elite = 0.01
@@ -33,7 +34,7 @@ pygame.init()
 # Init game
 t0 = time.time()
 
-game = Game(shape)
+game = Game(shape=shape, holes=holes)
 algo = GA(
     game,
     genome_length=max_moves,
diff --git a/main_seq.py b/main_seq.py
index ad07dc4..307c032 100644
--- a/main_seq.py
+++ b/main_seq.py
@@ -18,6 +18,7 @@ show_path_color = (160, 225, 55)
 
 #### Back
 shape = (10, 20)
+holes = 10
 number_of_generations = 1000
 pop_card = 3000
 elite = 0.01
@@ -33,7 +34,7 @@ pygame.init()
 # Init game
 t0 = time.time()
 
-game = Game(shape)
+game = Game(shape=shape, holes=holes)
 algo = GA(
     game,
     genome_length=max_moves,
-- 
GitLab