-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathtest.html
94 lines (79 loc) · 16 KB
/
test.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<div class="highlight"><pre><span class="kn">import</span> <span class="nn">random</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="k">class</span> <span class="nc">Square</span><span class="p">:</span>
<span class="sd">"""This is the abstraction of one Square"""</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">attrib</span><span class="p">,</span> <span class="n">root</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
<span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
<span class="bp">self</span><span class="o">.</span><span class="n">attrib</span> <span class="o">=</span> <span class="n">attrib</span>
<span class="bp">self</span><span class="o">.</span><span class="n">root</span> <span class="o">=</span> <span class="n">root</span>
<span class="bp">self</span><span class="o">.</span><span class="n">rep</span> <span class="o">=</span> <span class="n">attrib</span>
<span class="k">class</span> <span class="nc">Screen</span><span class="p">:</span>
<span class="sd">"""The Screen Array of the game"""</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x_size</span><span class="p">,</span> <span class="n">y_size</span><span class="p">,</span> <span class="n">tokens</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">x_size</span> <span class="o">=</span> <span class="n">x_size</span>
<span class="bp">self</span><span class="o">.</span><span class="n">y_size</span> <span class="o">=</span> <span class="n">y_size</span>
<span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="o">=</span> <span class="n">tokens</span>
<span class="bp">self</span><span class="o">.</span><span class="n">childs</span> <span class="o">=</span> <span class="p">[]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">squares</span> <span class="o">=</span> <span class="p">[]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">populate</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">childs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">squares</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">childs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">rep</span> <span class="o">=</span> <span class="s">'#'</span>
<span class="k">def</span> <span class="nf">get_near_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">child</span><span class="p">):</span>
<span class="n">vecinos</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">if</span> <span class="n">child</span><span class="o">.</span><span class="n">x</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">vecinos</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_square</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">child</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
<span class="k">if</span> <span class="n">child</span><span class="o">.</span><span class="n">y</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">vecinos</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_square</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">child</span><span class="o">.</span><span class="n">y</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
<span class="k">if</span> <span class="n">child</span><span class="o">.</span><span class="n">x</span> <span class="o">+</span> <span class="mi">1</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">x_size</span><span class="p">:</span>
<span class="n">vecinos</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_square</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">x</span> <span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">child</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
<span class="k">if</span> <span class="n">child</span><span class="o">.</span><span class="n">y</span> <span class="o">+</span> <span class="mi">1</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">y_size</span><span class="p">:</span>
<span class="n">vecinos</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_square</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">child</span><span class="o">.</span><span class="n">y</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span>
<span class="k">return</span> <span class="p">[</span><span class="n">vecino</span> <span class="k">for</span> <span class="n">vecino</span> <span class="ow">in</span> <span class="n">vecinos</span> <span class="k">if</span><span class="p">(</span><span class="ow">not</span> <span class="n">vecino</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">childs</span><span class="p">)]</span>
<span class="k">def</span> <span class="nf">get_square</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">squares</span><span class="p">[</span><span class="n">y</span><span class="p">][</span><span class="n">x</span><span class="p">]</span>
<span class="k">def</span> <span class="nf">populate</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">y_size</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">squares</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">random_square</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">x_size</span><span class="p">)])</span>
<span class="k">def</span> <span class="nf">random_square</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
<span class="n">attrib</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span>
<span class="n">square</span> <span class="o">=</span> <span class="n">Square</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">attrib</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
<span class="k">return</span> <span class="n">square</span>
<span class="k">def</span> <span class="nf">check_arround</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">child</span><span class="p">):</span>
<span class="sd">"""We check the attrib of the near squares"""</span>
<span class="n">vecinos</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_near_to</span><span class="p">(</span><span class="n">child</span><span class="p">)</span>
<span class="k">if</span> <span class="n">vecinos</span><span class="p">:</span>
<span class="k">for</span> <span class="n">vecino</span> <span class="ow">in</span> <span class="n">vecinos</span><span class="p">:</span>
<span class="k">if</span> <span class="p">(</span><span class="n">vecino</span><span class="o">.</span><span class="n">attrib</span> <span class="o">==</span> <span class="n">child</span><span class="o">.</span><span class="n">attrib</span><span class="p">):</span>
<span class="n">vecino</span><span class="o">.</span><span class="n">rep</span> <span class="o">=</span> <span class="s">'#'</span>
<span class="bp">self</span><span class="o">.</span><span class="n">childs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">vecino</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="n">output</span> <span class="o">=</span> <span class="s">''</span>
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">squares</span><span class="p">:</span>
<span class="n">output</span> <span class="o">+=</span> <span class="s">''</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s">'</span><span class="si">%s</span><span class="s"> '</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">rep</span><span class="p">)</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">row</span><span class="p">])</span>
<span class="n">output</span> <span class="o">+=</span> <span class="s">'</span><span class="se">\n</span><span class="s">'</span>
<span class="k">return</span> <span class="n">output</span>
<span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attrib</span><span class="p">):</span>
<span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">childs</span><span class="p">:</span>
<span class="n">child</span><span class="o">.</span><span class="n">attrib</span> <span class="o">=</span> <span class="n">attrib</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">check_arround</span><span class="p">(</span><span class="n">child</span><span class="p">)</span>
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">'__main__'</span><span class="p">:</span>
<span class="n">screen</span> <span class="o">=</span> <span class="n">Screen</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="p">[</span><span class="s">'1'</span><span class="p">,</span> <span class="s">'2'</span><span class="p">,</span> <span class="s">'3'</span><span class="p">,</span> <span class="s">'4'</span><span class="p">,</span> <span class="s">'5'</span><span class="p">])</span>
<span class="k">print</span> <span class="n">screen</span>
<span class="n">screen</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">screen</span><span class="o">.</span><span class="n">childs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">attrib</span><span class="p">)</span> <span class="c">#dirty Hack</span>
<span class="n">limit</span> <span class="o">=</span> <span class="mi">18</span>
<span class="n">win</span> <span class="o">=</span> <span class="bp">False</span>
<span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">limit</span><span class="p">):</span>
<span class="n">a</span> <span class="o">=</span> <span class="nb">raw_input</span><span class="p">(</span><span class="s">'_ '</span><span class="p">)</span>
<span class="n">screen</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s">'clear'</span><span class="p">)</span>
<span class="k">print</span> <span class="n">screen</span>
<span class="k">print</span> <span class="s">"</span><span class="si">%4d</span><span class="s"> moves of </span><span class="si">%4d</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">limit</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">screen</span><span class="o">.</span><span class="n">childs</span><span class="p">)</span> <span class="o">==</span> <span class="n">screen</span><span class="o">.</span><span class="n">x_size</span><span class="o">*</span><span class="n">screen</span><span class="o">.</span><span class="n">y_size</span><span class="p">:</span>
<span class="n">win</span> <span class="o">=</span> <span class="bp">True</span>
<span class="k">break</span>
<span class="k">if</span> <span class="n">win</span><span class="p">:</span>
<span class="k">print</span> <span class="s">"You Win"</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">print</span> <span class="s">"You loose"</span>
</pre></div>