<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Help with bomb creating in my bomberman.</title>
		<link>http://www.allegro.cc/forums/view/586689</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 02 Aug 2006 22:41:04 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ts been some time since I posted here, till now I&#39;ve been managing to RTFM to solve my multiple problems, but since I&#39;ve been over a week stuck on the same one, I guess I&#39;ll let you guys have a look at it so you can (hopefully) tell me what&#39;s wrong.</p><p>Now, to business. I&#39;ve been making the typical all-round bomberman, just to learn how to use pointers, and how memory management works, and on the part of dynamically creating my bombs when the player preses the space key, a weird bug hapens. You can place the first bomb, and afther that the game keeps running, but if the player tries to move in all but one specific direction, he stops being able to move and ends up stuck on top of the bomb, though nothing else hapens. And obviously, he can&#39;t place any more bombs. here&#39;s the bit of code relevant to the issue.</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">//----- Clases --------//</span></td></tr><tr><td class="number">2</td><td><span class="k1">class</span> Una_Bomba</td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>  public:</td></tr><tr><td class="number">5</td><td>   Una_Bomba<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>   ~Una_Bomba<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>   <span class="k1">void</span> colocar<span class="k2">(</span><span class="k1">int</span>, <span class="k1">int</span>, <span class="k1">int</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>   <span class="k1">void</span> explotar<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>   </td></tr><tr><td class="number">10</td><td>  private:</td></tr><tr><td class="number">11</td><td>    </td></tr><tr><td class="number">12</td><td>   <span class="k1">int</span>    tiempo_a_explotar<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>   <span class="k1">int</span>    potencia<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>   <span class="k1">int</span>    coordenada<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><span class="k1">class</span> Pj</td></tr><tr><td class="number">18</td><td><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>  public:</td></tr><tr><td class="number">20</td><td>   Pj<span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>   ~Pj<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>   <span class="k1">int</span>  moverse<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>   <span class="k1">void</span> dibujarse<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>   <span class="k1">void</span> crear_pj<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>   <span class="k1">void</span> poner_bomba<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>  private:</td></tr><tr><td class="number">28</td><td>   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>dibu_pj<span class="k2">;</span></td></tr><tr><td class="number">29</td><td>   <span class="k1">int</span>    <span class="k3">*</span>celda_actual<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>   <span class="k1">char</span>   <span class="k3">*</span>celda_derecha, <span class="k3">*</span>celda_izquierda, <span class="k3">*</span>celda_arriba, <span class="k3">*</span>celda_abajo<span class="k2">;</span></td></tr><tr><td class="number">31</td><td>   <span class="k1">int</span>    inicio, I, J, max_bombas, bombas_actuales, poder<span class="k2">;</span></td></tr><tr><td class="number">32</td><td>   Una_Bomba <span class="k3">*</span> puntero_a_bomba<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>   Una_Bomba<span class="k3">*</span> bomba<span class="k2">[</span>MAX_BOMBS<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td><span class="c">//------ Clases functions ------//</span></td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td>&#160;</td></tr><tr><td class="number">39</td><td><span class="k1">int</span> Pj::moverse<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">40</td><td><span class="k2">{</span> </td></tr><tr><td class="number">41</td><td>  <span class="k1">if</span><span class="k2">(</span>tiempo1 <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">42</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">43</td><td>   tiempo1<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_arriba    <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span><span class="k2">)</span>    <span class="k2">{</span> J--<span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">45</td><td>   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_abajo     <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span><span class="k2">)</span>  <span class="k2">{</span> J<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">46</td><td>   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_izquierda <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span>  <span class="k2">{</span> I--<span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">47</td><td>   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_derecha   <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span> I<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">48</td><td>   </td></tr><tr><td class="number">49</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">50</td><td>  </td></tr><tr><td class="number">51</td><td>  celda_actual<span class="k2">[</span>cID<span class="k2">]</span> <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.ID<span class="k2">;</span> <span class="c">//Sabe su ID,</span></td></tr><tr><td class="number">52</td><td>  celda_actual<span class="k2">[</span>cX<span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.x<span class="k2">;</span>   <span class="c">// x, </span></td></tr><tr><td class="number">53</td><td>  celda_actual<span class="k2">[</span>cY<span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.y<span class="k2">;</span>   <span class="c">// y. </span></td></tr><tr><td class="number">54</td><td>  </td></tr><tr><td class="number">55</td><td>  celda_arriba      <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J-1<span class="k2">]</span>.estado<span class="k2">;</span> <span class="c">//Y averiguamos el estado de las otras</span></td></tr><tr><td class="number">56</td><td>  celda_abajo       <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.estado<span class="k2">;</span>  <span class="c">//celdas circundantes </span></td></tr><tr><td class="number">57</td><td>  celda_izquierda   <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I-1<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado<span class="k2">;</span></td></tr><tr><td class="number">58</td><td>  celda_derecha     <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k3">+</span><span class="n">1</span><span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado<span class="k2">;</span> </td></tr><tr><td class="number">59</td><td>&#160;</td></tr><tr><td class="number">60</td><td>  <span class="k1">return</span> <span class="k3">*</span>celda_actual<span class="k2">[</span>cID<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">61</td><td><span class="k2">}</span></td></tr><tr><td class="number">62</td><td>&#160;</td></tr><tr><td class="number">63</td><td>&#160;</td></tr><tr><td class="number">64</td><td><span class="k1">void</span> Pj::dibujarse<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">65</td><td><span class="k2">{</span></td></tr><tr><td class="number">66</td><td>  <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>mapa_pj, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>mapa_pj, dibu_pj,<span class="k3">*</span>celda_actual<span class="k2">[</span>cX<span class="k2">]</span>,<span class="k3">*</span>celda_actual<span class="k2">[</span>cY<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, mapa_pj, <span class="n">80</span>, <span class="n">80</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td>&#160;</td></tr><tr><td class="number">70</td><td><span class="k2">}</span></td></tr><tr><td class="number">71</td><td>&#160;</td></tr><tr><td class="number">72</td><td><span class="k1">void</span> Pj::poner_bomba<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">73</td><td><span class="k2">{</span></td></tr><tr><td class="number">74</td><td><span class="c">/*</span></td></tr><tr><td class="number">75</td><td><span class="c">This is the function causing all the trouble, basically, if the player presses </span></td></tr><tr><td class="number">76</td><td><span class="c">spacebar, he's under his max_bombs limit and the current_tile status is different</span></td></tr><tr><td class="number">77</td><td><span class="c">of "whith_bomb", it creates a new bomb, it pases the parameters needed, and puts </span></td></tr><tr><td class="number">78</td><td><span class="c">out a pointer to that bomb. Then it changes map tile's status, so the map.draw </span></td></tr><tr><td class="number">79</td><td><span class="c">function can take care of the graphics, and increments the number of bombs the</span></td></tr><tr><td class="number">80</td><td><span class="c">player has set.</span></td></tr><tr><td class="number">81</td><td><span class="c">*/</span></td></tr><tr><td class="number">82</td><td><span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> bombas_actuales <span class="k3">&lt;</span> max_bombas <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">*</span>celda_actual<span class="k2">[</span>cEstado<span class="k2">]</span> <span class="k3">!</span><span class="k3">=</span> Con_Bomba<span class="k2">)</span></td></tr><tr><td class="number">83</td><td> <span class="k2">{</span>  </td></tr><tr><td class="number">84</td><td>  puntero_a_bomba <span class="k3">=</span> <span class="k1">new</span> Una_Bomba<span class="k2">;</span></td></tr><tr><td class="number">85</td><td>  puntero_a_bomba-&gt;colocar<span class="k2">(</span>poder, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k3">*</span>celda_actual<span class="k2">[</span>cX<span class="k2">]</span>, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k3">*</span>celda_actual<span class="k2">[</span>cY<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">86</td><td>  bomba<span class="k2">[</span>bombas_actuales<span class="k2">]</span> <span class="k3">=</span> puntero_a_bomba<span class="k2">;</span></td></tr><tr><td class="number">87</td><td>  </td></tr><tr><td class="number">88</td><td>  mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado <span class="k3">=</span> Con_Bomba<span class="k2">;</span> </td></tr><tr><td class="number">89</td><td>  bombas_actuales<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">90</td><td> <span class="k2">}</span></td></tr><tr><td class="number">91</td><td><span class="k2">}</span></td></tr><tr><td class="number">92</td><td>&#160;</td></tr><tr><td class="number">93</td><td>&#160;</td></tr><tr><td class="number">94</td><td><span class="k1">void</span> Una_Bomba::colocar<span class="k2">(</span><span class="k1">int</span> poder_act, <span class="k1">int</span> coord_x_act, <span class="k1">int</span> coord_y_act<span class="k2">)</span></td></tr><tr><td class="number">95</td><td><span class="k2">{</span></td></tr><tr><td class="number">96</td><td>  potencia <span class="k3">=</span> poder_act<span class="k2">;</span></td></tr><tr><td class="number">97</td><td>  coordenada<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> coord_x_act<span class="k2">;</span></td></tr><tr><td class="number">98</td><td>  coordenada<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> coord_y_act<span class="k2">;</span></td></tr><tr><td class="number">99</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

Thats more or less it, and I think that&#39;s all the code needed for helping me out, if anyone needs more, pray tell, and I&#39;ll upload the whole project (it&#39;s quite small anyway).</p><p>I sincerely hope you guys can help me, cause inin spitef myself, I still get lost when playing with the PC&#39;s memory.</p><p>Cheers, and thanks!!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Wed, 26 Jul 2006 17:48:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
It&#39;s probably because the tile underneath the player is marked as a bomb and hence not-walkable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Wed, 26 Jul 2006 17:53:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sadlly, I&#39;ts not so simple a bug, if you look closelly you&#39;ll see that the Pj:moverse function checks the surrounding 4 tiles to see if it can move, it doesnt care for the actual_position_tile, I designed it this way specifically for the bomb placing. I gess that me using spanish words as variables doesnt help much either...</p><p>Anyway, thanks for triying! </p><p>*^_^*
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Wed, 26 Jul 2006 19:01:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Without looking at the code that wold have been my first guess, too.</p><p>You probably wrote the game that way, that the player can´t walk ON placed bombs.<br />But if the player stands ON the bomb he places, he can´t move OFF the bomb.</p><p>Try to disable collision checking with bombs and see if movemnt works then.</p><p><b>[EDIT]</b><br />too slow. Sorry.<br />Yes. The spanish makes it hard to understand the code.<br />I will have a closer look at the code when I&#39;m at home.<br />Don&#39;t have the time to investigate it closely right now.</p><p>But you could still try to disable collision detection and see what happens.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Wed, 26 Jul 2006 19:04:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What&#39;s the difference between <tt>celda_actual[cX]</tt> and <tt>I</tt>?</p><p>Are you using two different coordinate systems?</p><p>If so, the problem might be in the synchronisation of the two. (Just check where you change <tt>I</tt> and <tt>J</tt>, respectively).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Indeterminatus)</author>
		<pubDate>Wed, 26 Jul 2006 19:15:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Where do you calculate cX and cY?<br />And where do you set the tile with the bomb on it to not passable?</p><p>I only see mapa.celda[I][J].estado = Con_Bomba;<br />But that sets that the tile has a bomb. Not whether it is passable or not.</p><p>Am I missing something?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Wed, 26 Jul 2006 22:48:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hum, my bad, I&#039;ll just upload the whole code so you people can look at it at ease, It&#039;s not too long anyhow.
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="c">///-- Clases.h --////</span>
<span class="number">  2</span><span class="p">#ifndef clases</span>
<span class="number">  3</span><span class="p">#define clases</span>
<span class="number">  4</span>
<span class="number">  5</span><span class="p">#define map_w 21</span>
<span class="number">  6</span><span class="p">#define map_h 19</span>
<span class="number">  7</span><span class="p">#define MAX_BOMBS 10</span>
<span class="number">  8</span><span class="c">/*Falta hacer un pj que se mueva por la pantalla sin meterse en el muro.*/</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="k1">class</span> Celda
<span class="number"> 11</span><span class="k2">{</span>
<span class="number"> 12</span>  public:
<span class="number"> 13</span>   <span class="k1">int</span>  x, y, ID<span class="k2">;</span>
<span class="number"> 14</span>   <span class="k1">char</span> estado<span class="k2">;</span> 
<span class="number"> 15</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 16</span>
<span class="number"> 17</span><span class="k1">class</span> Mapa
<span class="number"> 18</span><span class="k2">{</span>
<span class="number"> 19</span>  public:
<span class="number"> 20</span>   Celda celda<span class="k2">[</span>map_w<span class="k2">]</span><span class="k2">[</span>map_h<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 21</span>   <span class="k1">void</span> crear_mapa<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>   <span class="k1">void</span> dibujar_mapa<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>   <span class="k1">void</span> destruir_mapa<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 25</span>
<span class="number"> 26</span><span class="k1">class</span> Una_Bomba
<span class="number"> 27</span><span class="k2">{</span>
<span class="number"> 28</span>  public:
<span class="number"> 29</span>   Una_Bomba<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>   ~Una_Bomba<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>   <span class="k1">void</span> colocar<span class="k2">(</span><span class="k1">int</span>, <span class="k1">int</span>, <span class="k1">int</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>   <span class="k1">void</span> explotar<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>   
<span class="number"> 34</span>  private:
<span class="number"> 35</span>    
<span class="number"> 36</span>   <span class="k1">int</span>    tiempo_a_explotar<span class="k2">;</span>
<span class="number"> 37</span>   <span class="k1">int</span>    potencia<span class="k2">;</span>
<span class="number"> 38</span>   <span class="k1">int</span>    coordenada<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 39</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 40</span>
<span class="number"> 41</span><span class="k1">class</span> Pj
<span class="number"> 42</span><span class="k2">{</span>
<span class="number"> 43</span>  public:
<span class="number"> 44</span>   Pj<span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>   ~Pj<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>   <span class="k1">int</span>  moverse<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>   <span class="k1">void</span> dibujarse<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 48</span>   <span class="k1">void</span> crear_pj<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span>   <span class="k1">void</span> poner_bomba<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>
<span class="number"> 51</span>  private:
<span class="number"> 52</span>   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>dibu_pj<span class="k2">;</span>
<span class="number"> 53</span>   <span class="k1">int</span>    <span class="k3">*</span>celda_actual<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 54</span>   <span class="k1">char</span>   <span class="k3">*</span>celda_derecha, <span class="k3">*</span>celda_izquierda, <span class="k3">*</span>celda_arriba, <span class="k3">*</span>celda_abajo<span class="k2">;</span>
<span class="number"> 55</span>   <span class="k1">int</span>    inicio, I, J, max_bombas, bombas_actuales, poder<span class="k2">;</span>
<span class="number"> 56</span>   Una_Bomba <span class="k3">*</span> puntero_a_bomba<span class="k2">;</span>
<span class="number"> 57</span>   Una_Bomba<span class="k3">*</span> bomba<span class="k2">[</span>MAX_BOMBS<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 58</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 59</span>
<span class="number"> 60</span><span class="c">//"So I was walking and I saw this prostitute, then I asked how much. She said for 300 bucks; she'd do anything. I said Bitch, paint my house." -Cafiene</span>
<span class="number"> 61</span><span class="p">#endif</span>
</div></div><p>

</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="c">///---interfaz_clases.h---///</span>
<span class="number">   2</span><span class="p">#ifndef interfaz_clases</span>
<span class="number">   3</span><span class="p">#define interfaz_clases</span>
<span class="number">   4</span>
<span class="number">   5</span><span class="p">#include "clases.h"</span>
<span class="number">   6</span><span class="c">/*aui los funcionamientos de las clases, enpezando por el mapa*/</span>
<span class="number">   7</span><span class="p">#define map_w 21</span>
<span class="number">   8</span><span class="p">#define map_h 19</span>
<span class="number">   9</span><span class="p">#define tam_celda 32</span>
<span class="number">  10</span><span class="p">#define ein  if(bombas_actuales==1) textout_ex(buffer, font, "Pues si", 0, 180, makecol(255,0,0), -1); else textout_ex(buffer, font, "Pues no", 0, 200, makecol(255,0,0), -1);</span>
<span class="number">  11</span>
<span class="number">  12</span> 
<span class="number">  13</span><span class="k1">enum</span> <span class="k2">{</span>Pisable, Caja, Muro, Con_Bomba<span class="k2">}</span><span class="k2">;</span>
<span class="number">  14</span><span class="k1">enum</span> <span class="k2">{</span>cID, cX, cY, cEstado<span class="k2">}</span><span class="k2">;</span>
<span class="number">  15</span><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer, <span class="k3">*</span>del_mapa, <span class="k3">*</span>fondo_mapa, <span class="k3">*</span>el_muro, <span class="k3">*</span>la_caja, <span class="k3">*</span>mapa_pj, <span class="k3">*</span>dibu_bomba, <span class="k3">*</span>dibu_fuego<span class="k2">;</span>
<span class="number">  16</span><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a> palette<span class="k2">;</span>
<span class="number">  17</span><span class="k1">extern</span> <span class="k1">volatile</span> <span class="k1">int</span> tiempo1<span class="k2">;</span>
<span class="number">  18</span>
<span class="number">  19</span>Mapa mapa<span class="k2">;</span>
<span class="number">  20</span>Pj player1<span class="k2">(</span><span class="n">378</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  21</span><span class="c">//I was about to take over the world, but then I was distracted by something...shiny. oOOohHh...shhiinnny....</span>
<span class="number">  22</span>
<span class="number">  23</span><span class="k1">void</span> Mapa::crear_mapa<span class="k2">(</span><span class="k2">)</span>
<span class="number">  24</span><span class="k2">{</span> 
<span class="number">  25</span><span class="k1">int</span> i, j, <a href="http://www.delorie.com/djgpp/doc/libc/libc_639.html" target="_blank">random</a> <span class="k3">=</span><span class="n">0</span>, ident <span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  26</span>    <span class="k1">for</span><span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> map_w<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  27</span>    <span class="k2">{</span>
<span class="number">  28</span>        <span class="k1">for</span><span class="k2">(</span>j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> map_h<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  29</span>            <span class="k2">{</span>
<span class="number">  30</span>             mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.x<span class="k3">=</span>i<span class="k3">*</span><span class="n">32</span><span class="k2">;</span>
<span class="number">  31</span>             mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.y<span class="k3">=</span>j<span class="k3">*</span><span class="n">32</span><span class="k2">;</span>
<span class="number">  32</span>             
<span class="number">  33</span>              <a href="http://www.delorie.com/djgpp/doc/libc/libc_639.html" target="_blank">random</a> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">2</span><span class="k2">;</span>
<span class="number">  34</span>            
<span class="number">  35</span>              <span class="k1">if</span> <span class="k2">(</span>j<span class="k3">=</span><span class="k3">=</span><span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> i<span class="k3">=</span><span class="k3">=</span><span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> i<span class="k3">=</span><span class="k3">=</span>map_w-1 <span class="k3">|</span><span class="k3">|</span> j<span class="k3">=</span><span class="k3">=</span>map_h-1<span class="k2">)</span> mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.estado <span class="k3">=</span> Muro<span class="k2">;</span> <span class="c">// Si esta en los bordes, se considera muro</span>
<span class="number">  36</span>              <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>i%<span class="n">2</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> j%<span class="n">2</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span> mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.estado <span class="k3">=</span> Muro<span class="k2">;</span>                    <span class="c">// Hay muros en zonas pares, para hacer una estructura de pasillos</span>
<span class="number">  37</span>              <span class="k1">else</span> mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.estado <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_639.html" target="_blank">random</a><span class="k2">;</span>                                        <span class="c">// Elige entre 0 y 1 (pisable, o con caja)</span>
<span class="number">  38</span>              
<span class="number">  39</span>             mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.ID <span class="k3">=</span> ident<span class="k2">;</span>
<span class="number">  40</span>             ident<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="c">// La ID</span>
<span class="number">  41</span>            <span class="k2">}</span>
<span class="number">  42</span>    <span class="k2">}</span>
<span class="number">  43</span> mapa.celda<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.estado <span class="k3">=</span> Pisable<span class="k2">;</span>
<span class="number">  44</span> mapa.celda<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.estado <span class="k3">=</span> Pisable<span class="k2">;</span>
<span class="number">  45</span> mapa.celda<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.estado <span class="k3">=</span> Pisable<span class="k2">;</span>
<span class="number">  46</span> mapa.celda<span class="k2">[</span>map_w-3<span class="k2">]</span><span class="k2">[</span>map_h-2<span class="k2">]</span>.estado <span class="k3">=</span> Pisable<span class="k2">;</span>
<span class="number">  47</span> mapa.celda<span class="k2">[</span>map_w-2<span class="k2">]</span><span class="k2">[</span>map_h-3<span class="k2">]</span>.estado <span class="k3">=</span> Pisable<span class="k2">;</span>
<span class="number">  48</span> mapa.celda<span class="k2">[</span>map_w-2<span class="k2">]</span><span class="k2">[</span>map_h-2<span class="k2">]</span>.estado <span class="k3">=</span> Pisable<span class="k2">;</span> <span class="c">//Nos aseguramos q los pjs aparezcan en pisable</span>
<span class="number">  49</span><span class="k2">}</span>
<span class="number">  50</span> <span class="c">//...don't question my logic. ¬¬</span>
<span class="number">  51</span> <span class="c">//Pop! goes the kitten... and other fun microwave games :P</span>
<span class="number">  52</span><span class="k1">void</span> Mapa::dibujar_mapa<span class="k2">(</span><span class="k2">)</span>
<span class="number">  53</span><span class="k2">{</span>
<span class="number">  54</span><span class="k1">int</span> i, j<span class="k2">;</span>
<span class="number">  55</span><a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>del_mapa, fondo_mapa, tam_celda, tam_celda<span class="k2">)</span><span class="k2">;</span> <span class="c">//Fondo del mapa</span>
<span class="number">  56</span>
<span class="number">  57</span> <span class="k1">for</span><span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> map_w<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>                                <span class="c">//Dibujar, segun el estado de la celda, muro o caja si es necesario</span>
<span class="number">  58</span>    <span class="k2">{</span>
<span class="number">  59</span>        <span class="k1">for</span><span class="k2">(</span>j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> map_h<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  60</span>            <span class="k2">{</span>
<span class="number">  61</span>              <span class="k1">if</span> <span class="k2">(</span>mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.estado <span class="k3">=</span><span class="k3">=</span> Muro<span class="k2">)</span>
<span class="number">  62</span>                   <span class="k2">{</span>
<span class="number">  63</span>                    <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>del_mapa, el_muro, mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.x,mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.y<span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>                   <span class="k2">}</span>
<span class="number">  65</span>              <span class="k1">if</span> <span class="k2">(</span>mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.estado <span class="k3">=</span><span class="k3">=</span> Caja<span class="k2">)</span>
<span class="number">  66</span>                   <span class="k2">{</span>
<span class="number">  67</span>                    <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>del_mapa, la_caja, mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.x,mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.y<span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>                   <span class="k2">}</span>
<span class="number">  69</span>              <span class="k1">if</span> <span class="k2">(</span>mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.estado <span class="k3">=</span><span class="k3">=</span> Con_Bomba<span class="k2">)</span>
<span class="number">  70</span>                   <span class="k2">{</span>
<span class="number">  71</span>                    <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>del_mapa, dibu_bomba, mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.x,mapa.celda<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span>.y<span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>                   <span class="k2">}</span>
<span class="number">  73</span>            <span class="k2">}</span>
<span class="number">  74</span>    <span class="k2">}</span>
<span class="number">  75</span><a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, del_mapa, <span class="n">80</span>, <span class="n">80</span><span class="k2">)</span><span class="k2">;</span>                   <span class="c">//Pasar el dibu al buffer</span>
<span class="number">  76</span>
<span class="number">  77</span><span class="k2">}</span>
<span class="number">  78</span><span class="c">//I cannot be held responsible for further messages, as apparently, my cats have learned to type... - VickyUWE             </span>
<span class="number">  79</span>
<span class="number">  80</span><span class="k1">void</span> Mapa::destruir_mapa<span class="k2">(</span><span class="k2">)</span>                             <span class="c">//Autoexplicativo</span>
<span class="number">  81</span><span class="k2">{</span>
<span class="number">  82</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>del_mapa<span class="k2">)</span><span class="k2">;</span>
<span class="number">  83</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>fondo_mapa<span class="k2">)</span><span class="k2">;</span>
<span class="number">  84</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>el_muro<span class="k2">)</span><span class="k2">;</span>
<span class="number">  85</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>la_caja<span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span><span class="k2">}</span>
<span class="number">  87</span>
<span class="number">  88</span>Pj::Pj<span class="k2">(</span><span class="k1">int</span> pos_ini<span class="k2">)</span>
<span class="number">  89</span><span class="k2">{</span>
<span class="number">  90</span><span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i<span class="k3">&lt;</span><span class="n">5</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>celda_actual<span class="k3">&lt;</span>i&gt; <span class="k3">=</span> <span class="k1">new</span> <span class="k1">int</span><span class="k2">;</span> <span class="k3">*</span>celda_actual<span class="k3">&lt;</span>i&gt; <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  91</span>celda_arriba <span class="k3">=</span> <span class="k1">new</span> <span class="k1">char</span><span class="k2">;</span>
<span class="number">  92</span>celda_abajo <span class="k3">=</span> <span class="k1">new</span> <span class="k1">char</span><span class="k2">;</span>
<span class="number">  93</span>celda_derecha <span class="k3">=</span> <span class="k1">new</span> <span class="k1">char</span><span class="k2">;</span>
<span class="number">  94</span>celda_izquierda <span class="k3">=</span> <span class="k1">new</span> <span class="k1">char</span><span class="k2">;</span>
<span class="number">  95</span><span class="k3">*</span>celda_actual<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  96</span><span class="k3">*</span>celda_arriba <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  97</span><span class="k3">*</span>celda_abajo <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  98</span><span class="k3">*</span>celda_derecha <span class="k3">=</span>  <span class="n">0</span><span class="k2">;</span>
<span class="number">  99</span><span class="k3">*</span>celda_izquierda <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 100</span>inicio <span class="k3">=</span> pos_ini<span class="k2">;</span>
<span class="number"> 101</span>I<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 102</span>J<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 103</span>max_bombas <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 104</span>bombas_actuales<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 105</span><span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k2">;</span> i<span class="k3">&lt;</span> MAX_BOMBS<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span> bomba<span class="k3">&lt;</span>i&gt;<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 106</span>poder <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 107</span><span class="k2">}</span>
<span class="number"> 108</span>
<span class="number"> 109</span>Pj::~Pj<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 110</span><span class="k2">{</span>
<span class="number"> 111</span><span class="k1">delete</span><span class="k2">[</span><span class="k2">]</span> celda_actual<span class="k2">;</span>
<span class="number"> 112</span><span class="k1">delete</span> celda_arriba <span class="k2">;</span>
<span class="number"> 113</span><span class="k1">delete</span> celda_abajo<span class="k2">;</span>
<span class="number"> 114</span><span class="k1">delete</span> celda_izquierda<span class="k2">;</span>
<span class="number"> 115</span><span class="k1">delete</span> celda_derecha<span class="k2">;</span>
<span class="number"> 116</span><span class="k1">delete</span><span class="k2">[</span><span class="k2">]</span> bomba<span class="k2">;</span>
<span class="number"> 117</span><span class="k2">}</span>
<span class="number"> 118</span>
<span class="number"> 119</span><span class="c">//"Before you criticize someone, you should walk a mile in their shoes. That way, when you criticize them, you're a mile away and you have their shoes. - Bluelance"</span>
<span class="number"> 120</span><span class="k1">void</span> Pj::crear_pj<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 121</span><span class="k2">{</span>
<span class="number"> 122</span><span class="k1">int</span> ii<span class="k3">=</span><span class="n">0</span>, jj<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> 
<span class="number"> 123</span><span class="k1">bool</span> flag1 <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 124</span>
<span class="number"> 125</span><span class="k1">for</span><span class="k2">(</span>ii<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> ii<span class="k3">&lt;</span> map_w<span class="k2">;</span> ii<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>   <span class="c">// Con este apaño, celda actual apunta a la celda donde empieza </span>
<span class="number"> 126</span> <span class="k2">{</span>  
<span class="number"> 127</span>   <span class="k1">for</span><span class="k2">(</span>jj<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> jj<span class="k3">&lt;</span>map_h<span class="k2">;</span> jj<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 128</span>   <span class="k2">{</span>
<span class="number"> 129</span>    <span class="k1">if</span><span class="k2">(</span>mapa.celda<span class="k2">[</span>ii<span class="k2">]</span><span class="k2">[</span>jj<span class="k2">]</span>.ID <span class="k3">=</span><span class="k3">=</span> inicio<span class="k2">)</span> <span class="k2">{</span>flag1 <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span><span class="k2">}</span> 
<span class="number"> 130</span>   <span class="k2">}</span>
<span class="number"> 131</span>   <span class="k1">if</span><span class="k2">(</span>flag1<span class="k2">)</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 132</span> <span class="k2">}</span> 
<span class="number"> 133</span> 
<span class="number"> 134</span>  I <span class="k3">=</span> ii<span class="k2">;</span>
<span class="number"> 135</span>  J <span class="k3">=</span> jj<span class="k2">;</span>
<span class="number"> 136</span>  celda_actual<span class="k2">[</span>cID<span class="k2">]</span> <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.ID<span class="k2">;</span>     <span class="c">// Sabe su ID,</span>
<span class="number"> 137</span>  celda_actual<span class="k2">[</span>cX<span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.x<span class="k2">;</span>      <span class="c">// x, </span>
<span class="number"> 138</span>  celda_actual<span class="k2">[</span>cY<span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.y<span class="k2">;</span>      <span class="c">// y,</span>
<span class="number"> 139</span>  celda_actual<span class="k2">[</span>cEstado<span class="k2">]</span> <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado<span class="k2">;</span> <span class="c">// estado.</span>
<span class="number"> 140</span>    
<span class="number"> 141</span>  celda_arriba      <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J-1<span class="k2">]</span>.estado<span class="k2">;</span>  <span class="c">// Y averiguamos el estado de las otras</span>
<span class="number"> 142</span>  celda_abajo       <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.estado<span class="k2">;</span>  <span class="c">// celdas circundantes </span>
<span class="number"> 143</span>  celda_izquierda   <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I-1<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado<span class="k2">;</span>
<span class="number"> 144</span>  celda_derecha     <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k3">+</span><span class="n">1</span><span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado<span class="k2">;</span> 
<span class="number"> 145</span>  
<span class="number"> 146</span> dibu_pj <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>tam_celda,tam_celda<span class="k2">)</span><span class="k2">;</span>      <span class="c">// Crear el bitmap del dibu</span>
<span class="number"> 147</span> <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>dibu_pj, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 148</span> dibu_pj <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"imagenes/dibu_pj.pcx"</span>, palette<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 149</span> 
<span class="number"> 150</span><span class="k2">}</span>
<span class="number"> 151</span>
<span class="number"> 152</span>
<span class="number"> 153</span><span class="k1">int</span> Pj::moverse<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 154</span><span class="k2">{</span> 
<span class="number"> 155</span>  <span class="k1">if</span><span class="k2">(</span>tiempo1 <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 156</span>  <span class="k2">{</span>
<span class="number"> 157</span>   tiempo1<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 158</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_arriba    <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span><span class="k2">)</span>    <span class="k2">{</span> J--<span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 159</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_abajo     <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span><span class="k2">)</span>  <span class="k2">{</span> J<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 160</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_izquierda <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span>  <span class="k2">{</span> I--<span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 161</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_derecha   <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span> I<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 162</span>   
<span class="number"> 163</span>  <span class="k2">}</span>
<span class="number"> 164</span>  
<span class="number"> 165</span>  celda_actual<span class="k2">[</span>cID<span class="k2">]</span> <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.ID<span class="k2">;</span> <span class="c">//Sabe su ID,</span>
<span class="number"> 166</span>  celda_actual<span class="k2">[</span>cX<span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.x<span class="k2">;</span>   <span class="c">// x, </span>
<span class="number"> 167</span>  celda_actual<span class="k2">[</span>cY<span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.y<span class="k2">;</span>   <span class="c">// y. </span>
<span class="number"> 168</span>  
<span class="number"> 169</span>  celda_arriba      <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J-1<span class="k2">]</span>.estado<span class="k2">;</span> <span class="c">//Y averiguamos el estado de las otras</span>
<span class="number"> 170</span>  celda_abajo       <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.estado<span class="k2">;</span>  <span class="c">//celdas circundantes </span>
<span class="number"> 171</span>  celda_izquierda   <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I-1<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado<span class="k2">;</span>
<span class="number"> 172</span>  celda_derecha     <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k3">+</span><span class="n">1</span><span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado<span class="k2">;</span> 
<span class="number"> 173</span>
<span class="number"> 174</span>  <span class="k1">return</span> <span class="k3">*</span>celda_actual<span class="k2">[</span>cID<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 175</span><span class="k2">}</span>
<span class="number"> 176</span>
<span class="number"> 177</span>
<span class="number"> 178</span><span class="k1">void</span> Pj::dibujarse<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 179</span><span class="k2">{</span>
<span class="number"> 180</span>  <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>mapa_pj, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 181</span>  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>mapa_pj, dibu_pj,<span class="k3">*</span>celda_actual<span class="k2">[</span>cX<span class="k2">]</span>,<span class="k3">*</span>celda_actual<span class="k2">[</span>cY<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 182</span>  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, mapa_pj, <span class="n">80</span>, <span class="n">80</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 183</span>  
<span class="number"> 184</span>  ein
<span class="number"> 185</span><span class="k2">}</span>
<span class="number"> 186</span>
<span class="number"> 187</span><span class="k1">void</span> Pj::poner_bomba<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 188</span><span class="k2">{</span>
<span class="number"> 189</span><span class="c">/*</span>
<span class="number"> 190</span><span class="c">Player le da a la tecla de poner bomba,</span>
<span class="number"> 191</span><span class="c">se mira cuantas bombas tiene puestas el pj,</span>
<span class="number"> 192</span><span class="c">si tiene menos del maximo, y la celda actual es estado != bomba,</span>
<span class="number"> 193</span><span class="c">se guarda la posicionactual del pj</span>
<span class="number"> 194</span><span class="c">en el momento de poner la bomba (posi_bomba[nºbombas][coordenada (x o y)])</span>
<span class="number"> 195</span><span class="c">esa celda pasa a estado == bomba,</span>
<span class="number"> 196</span><span class="c">se conecta el timer, a los 5 secs la bomba explota</span>
<span class="number"> 197</span><span class="c">*/</span>
<span class="number"> 198</span><span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> bombas_actuales <span class="k3">&lt;</span> max_bombas <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">*</span>celda_actual<span class="k2">[</span>cEstado<span class="k2">]</span> <span class="k3">!</span><span class="k3">=</span> Con_Bomba<span class="k2">)</span>
<span class="number"> 199</span> <span class="k2">{</span>  
<span class="number"> 200</span>  puntero_a_bomba <span class="k3">=</span> <span class="k1">new</span> Una_Bomba<span class="k2">;</span>
<span class="number"> 201</span>  puntero_a_bomba-&gt;colocar<span class="k2">(</span>poder, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k3">*</span>celda_actual<span class="k2">[</span>cX<span class="k2">]</span>, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k3">*</span>celda_actual<span class="k2">[</span>cY<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 202</span>  bomba<span class="k2">[</span>bombas_actuales<span class="k2">]</span> <span class="k3">=</span> puntero_a_bomba<span class="k2">;</span>
<span class="number"> 203</span>  
<span class="number"> 204</span>  mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado <span class="k3">=</span> Con_Bomba<span class="k2">;</span> 
<span class="number"> 205</span>  bombas_actuales<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 206</span> <span class="k2">}</span>
<span class="number"> 207</span><span class="k2">}</span>
<span class="number"> 208</span>
<span class="number"> 209</span>
<span class="number"> 210</span><span class="k1">void</span> Una_Bomba::colocar<span class="k2">(</span><span class="k1">int</span> poder_act, <span class="k1">int</span> coord_x_act, <span class="k1">int</span> coord_y_act<span class="k2">)</span>
<span class="number"> 211</span><span class="k2">{</span>
<span class="number"> 212</span>  potencia <span class="k3">=</span> poder_act<span class="k2">;</span>
<span class="number"> 213</span>  coordenada<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> coord_x_act<span class="k2">;</span>
<span class="number"> 214</span>  coordenada<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> coord_y_act<span class="k2">;</span>
<span class="number"> 215</span><span class="k2">}</span>
<span class="number"> 216</span>
<span class="number"> 217</span>Una_Bomba::Una_Bomba<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 218</span>Una_Bomba::~Una_Bomba<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 219</span>
<span class="number"> 220</span><span class="p">#endif</span>
</div></div><p>

</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="c">/// --- base.ccp --- ///</span>
<span class="number">  2</span><span class="p">#include "interfaz_clases.h"</span>
<span class="number">  3</span><span class="p">#include &lt;time.h&gt;</span>
<span class="number">  4</span>
<span class="number">  5</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>raton, <span class="k3">*</span>buffer, <span class="k3">*</span>del_mapa, <span class="k3">*</span>fondo_mapa, <span class="k3">*</span>el_muro, <span class="k3">*</span>la_caja, <span class="k3">*</span>mapa_pj, <span class="k3">*</span>dibu_bomba, <span class="k3">*</span>dibu_fuego<span class="k2">;</span>
<span class="number">  6</span><a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a> palette<span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="k1">void</span> iniciartodo<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> 
<span class="number">  9</span><span class="k1">void</span> salir<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span><span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="k1">volatile</span> <span class="k1">int</span> tiempo1 <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 13</span><span class="k1">void</span> ticker<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 14</span><span class="k2">{</span>
<span class="number"> 15</span>    tiempo1<span class="k3">=</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 16</span><span class="k2">}</span>
<span class="number"> 17</span><a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>ticker<span class="k2">)</span>
<span class="number"> 18</span>
<span class="number"> 19</span><span class="k1">void</span> iniciartodo<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 20</span><span class="k2">{</span>
<span class="number"> 21</span>   <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>   <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>   <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>   <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>   <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT, <span class="n">1024</span>, <span class="n">768</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>   
<span class="number"> 27</span>   <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>   <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>ticker<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>   <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>tiempo1<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>   <a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a><span class="k2">(</span>ticker, BPS_TO_TIMER<span class="k2">(</span><span class="n">15</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>   
<span class="number"> 32</span>   
<span class="number"> 33</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a> <span class="k2">(</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span> <span class="c">/* initialize random generator */</span>
<span class="number"> 34</span>   
<span class="number"> 35</span>   buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>   raton <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>   clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>   <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>raton, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>   
<span class="number"> 40</span>   del_mapa <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>map_w <span class="k3">*</span> tam_celda, map_h <span class="k3">*</span> tam_celda<span class="k2">)</span><span class="k2">;</span> <span class="c">//crea el bitmap del_mapa</span>
<span class="number"> 41</span>   <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>del_mapa, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>                 <span class="c">// y lo limpia a transparente</span>
<span class="number"> 42</span> 
<span class="number"> 43</span>   mapa_pj <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>map_w <span class="k3">*</span> tam_celda, map_h <span class="k3">*</span> tam_celda<span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 44</span>   <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>mapa_pj, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span> 
<span class="number"> 46</span>   fondo_mapa <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>map_w-1 <span class="k3">*</span> tam_celda, map_h-1 <span class="k3">*</span> tam_celda<span class="k2">)</span><span class="k2">;</span> <span class="c">//Crea el bitmap del fondo del mapa</span>
<span class="number"> 47</span>   <span class="c">//clear_to_color(fondo_mapa, makecol(255, 0, 255));  //Porque no funciona el clear? da error de ejcucion</span>
<span class="number"> 48</span>   fondo_mapa <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"imagenes/fondo.pcx"</span>, palette<span class="k2">)</span><span class="k2">;</span>              <span class="c">//y carga la imagen del fondo </span>
<span class="number"> 49</span> 
<span class="number"> 50</span>   el_muro <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>tam_celda,tam_celda<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span>   <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>el_muro, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span>   el_muro <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"imagenes/muro.pcx"</span>, palette<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 53</span> 
<span class="number"> 54</span>   la_caja <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>tam_celda,tam_celda<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 55</span>   <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>la_caja, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span>   la_caja <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"imagenes/caja.pcx"</span>, palette<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>   
<span class="number"> 58</span>   dibu_bomba <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>tam_celda,tam_celda<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>   <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>dibu_bomba, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>   dibu_bomba <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"imagenes/bomba.pcx"</span>, palette<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 61</span>   
<span class="number"> 62</span> 
<span class="number"> 63</span>   <a href="http://www.allegro.cc/manual/show_mouse" target="_blank"><span class="a">show_mouse</span></a><span class="k2">(</span>raton<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 64</span>   
<span class="number"> 65</span><span class="k2">}</span>
<span class="number"> 66</span>
<span class="number"> 67</span><span class="c">//Why can't Mr. Fork and Mrs. Eletrical outlet be friends?</span>
<span class="number"> 68</span><span class="k1">void</span> salir<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span> <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 69</span>
<span class="number"> 70</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 71</span><span class="k2">{</span> 
<span class="number"> 72</span>    iniciartodo<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 73</span>    mapa.crear_mapa<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 74</span>    player1.crear_pj<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 75</span>   
<span class="number"> 76</span>   <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span>
<span class="number"> 77</span>  <span class="k2">{</span> 
<span class="number"> 78</span>   clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>   
<span class="number"> 79</span>   player1.moverse<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 80</span>   player1.poner_bomba<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>   
<span class="number"> 81</span>   
<span class="number"> 82</span>   mapa.dibujar_mapa<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>     
<span class="number"> 83</span>   player1.dibujarse<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>   
<span class="number"> 84</span>   <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, raton,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 85</span>   <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>       
<span class="number"> 86</span>   
<span class="number"> 87</span>   salir<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>   
<span class="number"> 88</span>  <span class="k2">}</span>
<span class="number"> 89</span>  
<span class="number"> 90</span>   mapa.destruir_mapa<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 91</span>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>raton<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 92</span>   <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 93</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 94</span><span class="k2">}</span>
<span class="number"> 95</span><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span>
</div></div><p>

Hum, please just ignore unaccountable comments, it&#039;s just personal joke with a fried (and the ARE funny xD, not mine though). <br />The code should answer the questions posted above, and I still think the problem is in the memory management, cause I suck at that kind of things. ;P</p><p>The answer is in the interfaz_clases.h file with all probability, but, much easier to understand everything if I upload all the files. On a side note, as I&#039;m still a beginner to all kinds of programing, and to making games and so on, if you spot any other problems, or find prettier solutions (which shouldn&#039;t be hard considering this code...) to anything I&#039;ve done, point them out <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /> </p><p>Cheers, and thanks for lending me some of your time solve this problem.</p><p>(_/)<br />( ·.·)<br />(&quot;) (&quot;)</p><p>[EDIT]<br />While you&#039;re at it,check the timer in base.cpp cause I&#039;m not shure if it&#039;s used that way. Thanks again!!!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Thu, 27 Jul 2006 17:53:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>when you use this:
</p><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">enum</span> <span class="k2">{</span>cID, cX, cY, cEstado<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>

This,
</p><div class="source-code snippet"><div class="inner"><pre>  celda_actual<span class="k2">[</span>cX<span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.x<span class="k2">;</span>   <span class="c">// x, </span>
  celda_actual<span class="k2">[</span>cY<span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.y<span class="k2">;</span>   <span class="c">// y. </span>
</pre></div></div><p>

will always equal this
</p><div class="source-code snippet"><div class="inner"><pre>  celda_actual<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.x<span class="k2">;</span>   <span class="c">// x, </span>
  celda_actual<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.y<span class="k2">;</span>   <span class="c">// y. </span>
</pre></div></div><p>

Is that what you want?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Thu, 27 Jul 2006 23:26:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, indeed, I&#39;ts only I find it clearer to use names in the [] rather than numbers, but I still think the bug is in the memory management issue of the void Pj::poner_bomba() function. Anyway, thanks for cheking.</p><p>*^_^*
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Fri, 28 Jul 2006 02:44:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m having a hard time reading the code, the Spanish keeps confusing me <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /> Based on your description, though, it doesn&#39;t sound like an issue with memory management. You said that the player <i>can</i> move in one direction after placing the bomb. If you move in that direction, can you then set more bombs?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kauhiz)</author>
		<pubDate>Fri, 28 Jul 2006 03:14:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>nope, you can&#39;t keep on placing bobms
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Fri, 28 Jul 2006 03:29:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What direction?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Erkle)</author>
		<pubDate>Fri, 28 Jul 2006 04:45:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you supposed to be able to place more bombs?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kauhiz)</author>
		<pubDate>Fri, 28 Jul 2006 14:27:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Upwards is the only direction that works, and yes, you are suposed to be able to set more bombs, as shown below:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/// From Pj::Pj ///</span></td></tr><tr><td class="number">2</td><td>max_bombas <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">3</td><td>bombas_actuales<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="c">/// From Pj::poner_bomba() ///</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> bombas_actuales <span class="k3">&lt;</span> max_bombas <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">*</span>celda_actual<span class="k2">[</span>cEstado<span class="k2">]</span> <span class="k3">!</span><span class="k3">=</span> Con_Bomba<span class="k2">)</span></td></tr><tr><td class="number">8</td><td><span class="c">/*So if user presses SPACE_KEY AND bombas actuales (initially 0 but it increments</span></td></tr><tr><td class="number">9</td><td><span class="c"> at the end of this function) is less than max bombas (wich has a value of 3, and</span></td></tr><tr><td class="number">10</td><td><span class="c"> will remain like that for a while) AND the actual cell doesn't already have a </span></td></tr><tr><td class="number">11</td><td><span class="c">bomb... do all the stuff below*/</span></td></tr><tr><td class="number">12</td><td> <span class="k2">{</span>  </td></tr><tr><td class="number">13</td><td>  puntero_a_bomba <span class="k3">=</span> <span class="k1">new</span> Una_Bomba<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>  puntero_a_bomba-&gt;colocar<span class="k2">(</span>poder, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k3">*</span>celda_actual<span class="k2">[</span>cX<span class="k2">]</span>, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k3">*</span>celda_actual<span class="k2">[</span>cY<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>  bomba<span class="k2">[</span>bombas_actuales<span class="k2">]</span> <span class="k3">=</span> puntero_a_bomba<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>  </td></tr><tr><td class="number">17</td><td>  mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado <span class="k3">=</span> Con_Bomba<span class="k2">;</span> </td></tr><tr><td class="number">18</td><td>  bombas_actuales<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="c">// here is the increment I said about bombas_actuales</span></td></tr><tr><td class="number">19</td><td> <span class="k2">}</span></td></tr></tbody></table></div></div><p>

In short, it can and should be able to set 2 more bombs.</p><p>Hey, I really apreciate you guys mulling over my code, cookies for the first one who finds out whats wrong *^_^*
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Fri, 28 Jul 2006 18:19:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m telling you how I understand your code. Please say if I&#39;m right.</p><p>Here you check wheter field_left, field_right... are passable and if so move to the field.
</p><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">if</span><span class="k2">(</span>tiempo1 <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
  <span class="k2">{</span>
   tiempo1<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_arriba    <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span><span class="k2">)</span>    <span class="k2">{</span> J--<span class="k2">;</span> <span class="k2">}</span>
   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_abajo     <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span><span class="k2">)</span>  <span class="k2">{</span> J<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="k2">}</span>
   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_izquierda <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span>  <span class="k2">{</span> I--<span class="k2">;</span> <span class="k2">}</span>
   <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>celda_derecha   <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span> I<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="k2">}</span>
   
  <span class="k2">}</span>
</pre></div></div><p>


And here you give field_left ... the type of the sourunding fields. Right?
</p><div class="source-code snippet"><div class="inner"><pre>  celda_arriba      <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J-1<span class="k2">]</span>.estado<span class="k2">;</span> <span class="c">//Y averiguamos el estado de las otras</span>
  celda_abajo       <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.estado<span class="k2">;</span>  <span class="c">//celdas circundantes </span>
  celda_izquierda   <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I-1<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado<span class="k2">;</span>
  celda_derecha     <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k3">+</span><span class="n">1</span><span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.estado<span class="k2">;</span>
</pre></div></div><p>

The possible field types are
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">enum</span> <span class="k2">{</span>Pisable, Caja, Muro, Con_Bomba<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>

Shouldn&#39;t then this
</p><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">char</span>   <span class="k3">*</span>celda_derecha, <span class="k3">*</span>celda_izquierda, <span class="k3">*</span>celda_arriba, <span class="k3">*</span>celda_abajo<span class="k2">;</span>
</pre></div></div><p>

look like this
</p><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">int</span>   celda_derecha, celda_izquierda, celda_arriba, celda_abajo<span class="k2">;</span>
</pre></div></div><p>

I&#39;m absolutely not sure if this is related to your problem.<br />But I wondered about this anyway.</p><p>EDIT<br />If that would be the problem, i guess you couldn&#39;t move at all. <br />But I&#39;m still wondering why it&#39;s char and not int.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Fri, 28 Jul 2006 19:10:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>As far as I know (but I might be wrong, not too unusual) char takes up less memory than int (0 to 255 I seem to remember) and as I&#39;m only going to use up to 10 different states or so, I din&#39;t think I&#39;d need an full int. </p><p>Thanks for cheking anyhow. *^_^*
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Fri, 28 Jul 2006 20:03:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>you are totaly right! My brain doesn&#39;t work that good the last few days <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" /><br />char is -128 to 127. </p><p>[EDIT]<br />hey, wait.<br />char c; is -128 to 127. </p><p>but you are using char *c;<br />Isn&#39;t that a little difference?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Fri, 28 Jul 2006 20:10:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, as I said somewere at the begginign of this whole bussines, I started the whole bomberman project just to learn about pointers, son cant say much there xD<br />As far as I can gess &quot;pointer to char called c&quot; should ocuppy less than the same but whith int. Anyhow, if you&#39;re asking about the program dynamics, the movement part worked fine whith the pointers set as they are (till you try to set a bomb that is) so I dont think theres much to worry about there.</p><p>And back to the begining, I still think the void Pj::poner_bomba() function does something fishy somewere whith the memory. But that might just be me, and as I have absolutely no idea what it may be...</p><p>Cheers and thanks for raking your brains for me Christopher. *^_^*
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Fri, 28 Jul 2006 21:21:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>but if you want to use characters not numbers this happens.</p><p>char char = &#39;a&#39;; this is ok (equals a number, like int)<br />char char = &quot;asdj&quot;; wrong </p><p>char *string = &#39;d&#39;; wrong<br />char *string = &quot;hallo&quot;; correct (a number too???)</p><p>So I thought that there is another difference?</p><p>I never got that difference between those two, so maybe I&#39;m wrong again.</p><p>No I will wait till the experts come and solve your problem.<br />I think my help is not leeding anywhere.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (count)</author>
		<pubDate>Fri, 28 Jul 2006 21:26:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>EDIT:<br />*celda_actual[5] = 0;<br />memory overwrite!<br />celda_actual has only 5 elements, labelled 0 to 4.  don&#39;t try to read or write celda_actual[5].<br />-----------<br />There is one suspicious part about how you use the 4 pointers celda_abajo, celda_derecha etc.<br />They make you allocate 4 characters on startup, just so they don&#39;t point to void... They even force you to make something strange with tiempo1.<br />I don&#39;t know how much this part is ok.<br />You could completely remove them, as well as tiempo1, so your Pj::moverse() will look like:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> Pj::moverse<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span> 
  <span class="k1">if</span><span class="k2">(</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span>  <span class="k2">[</span>J-1<span class="k2">]</span>.estado <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span><span class="k2">)</span>    <span class="k2">{</span> J--<span class="k2">;</span> <span class="k2">}</span>
  <span class="k1">if</span><span class="k2">(</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span>  <span class="k2">[</span>J<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.estado <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span><span class="k2">)</span>  <span class="k2">{</span> J<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="k2">}</span>
  <span class="k1">if</span><span class="k2">(</span>mapa.celda<span class="k2">[</span>I-1<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>  .estado <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span>  <span class="k2">{</span> I--<span class="k2">;</span> <span class="k2">}</span>
  <span class="k1">if</span><span class="k2">(</span>mapa.celda<span class="k2">[</span>I<span class="k3">+</span><span class="n">1</span><span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>  .estado <span class="k3">=</span><span class="k3">=</span> Pisable   <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span> I<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="k2">}</span>
  
  celda_actual<span class="k2">[</span>cID<span class="k2">]</span> <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.ID<span class="k2">;</span> <span class="c">//Sabe su ID,</span>
  celda_actual<span class="k2">[</span>cX<span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.x<span class="k2">;</span>   <span class="c">// x, </span>
  celda_actual<span class="k2">[</span>cY<span class="k2">]</span>  <span class="k3">=</span> <span class="k3">&amp;</span>mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span>.y<span class="k2">;</span>   <span class="c">// y. </span>

  <span class="k1">return</span> <span class="k3">*</span>celda_actual<span class="k2">[</span>cID<span class="k2">]</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
Such change SHOULD have not effect - if it makes your problem disappear or change bahaviour, it means there was something weird in the removed part.</p><p>One word of general advice: you rarely need pointers to struct members which are simple numbers: For example, since ID, x and y are plain numbers, you can simply:
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// declare one pointer to a Cell</span>
Celda <span class="k3">*</span> celda_actual<span class="k2">;</span>
<span class="c">// set it</span>
celda_actual <span class="k3">=</span> <span class="k3">&amp;</span> mapa.celda<span class="k2">[</span>I<span class="k2">]</span><span class="k2">[</span>J<span class="k2">]</span><span class="k2">;</span>
<span class="c">// then you can refer to ANY property of this cell: here you read values</span>
<a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"ID[%d]  x[%d]  y[%d]\n"</span>,
   celda_actual-&gt;ID, <span class="c">// synonym of &amp;celda_actual.ID</span>
   celda_actual-&gt;x,
   celda_actual-&gt;y<span class="k2">)</span><span class="k2">;</span>
<span class="c">// here you modify them</span>
celda_actual-&gt;estado <span class="k3">=</span> Con_Bomba<span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Fri, 28 Jul 2006 22:13:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I cant chek it right now, not on my comp and also quite in a hurry, but tomorrow I&#39;ll be able to. Just wanted to thank you for such a helpfull post! So... thanks!<br /><img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /></p><p>I&#39;ll check  as soon as I can to see if it solves the problem, and do what you sugest, I am aware of lots of really useles or unecesary stuff in there, but thats why people like you exist ot there, to point them out so I can rectify.<br /> <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> </p><p>Cheers and thanks!!!<br />(_/)<br />( ^.^)<br />(&quot;) (&quot;)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Fri, 28 Jul 2006 22:18:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I edited above a few seconds ago
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Fri, 28 Jul 2006 22:23:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just a small correction (and very nit-picky), sorry for derailing the topic, it just popped in my eye:</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
celda_actual-&gt;ID, // synonym of <b>(*</b>celda_actual<b>)</b>.ID
</p></div></div><p>

<i>edit: </i> To clarify: as this is apparently all about learning pointers, such small issues can possibly make a huge difference in the understanding, which is what justifies my being pedantic, imho. <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Indeterminatus)</author>
		<pubDate>Sat, 29 Jul 2006 00:08:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hum, sorry for taking so long to reply,</p><p> Audric, The pj::moverse is like that:</p><p>if(*celda_arriba    == Pisable   &amp;&amp; key[KEY_UP])    { J--; }<br />if(*celda_abajo...</p><p>to simplyfy reading (at least in spanish xD), and tiempo1 is something of the timer set up at the begginign of base.ccp (which btw, I dont know if i&#39;ts beeing used properly, thought it does slow down movement speed for the Pj), and the: </p><p>celda_arriba      = &amp;mapa.celda[I][J-1].estado;<br />celda abajo ...</p><p>Is repointing the pointers to where they were, but as they are not your typical int or char variables (they are pointers so they dont need to check again to see the value if its changed or something like that), I gess thats not needed? (asking here).</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
/ declare one pointer to a Cell<br />Celda * celda_actual;<br />// set it<br />celda_actual = &amp; mapa.celda[I][J];<br />// then you can refer to ANY property of this cell: here you read values<br />printf(&quot;ID[%d]  x[%d]  y[%d]\n&quot;,<br />   celda_actual-&gt;ID, // synonym of &amp;celda_actual.ID<br />   celda_actual-&gt;x,<br />   celda_actual-&gt;y);<br />// here you modify them<br />celda_actual-&gt;estado = Con_Bomba;
</p></div></div><p>

I had read that in some manual, but with your example light just cliked on in my head and I understood it <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> thanks!!</p><p>Indeterminatus, thanks to you too for making shure I wouldnt spend hours scrathing my head wondering what the hell was going on xD</p><p>But still the error remains, that damm litle bomberman still seems to think his job is done as soon as he sets down his first bomb, anyone have any idea why this is??</p><p>Cheers everyone, and thanks again!!<br />(PS: My offer of cookies for the first one who solves this problem, still stands!! xD)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Sun, 30 Jul 2006 20:12:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sorry if I wasn&#39;t clear, I wrote in a hurry.<br />celda_actual is allocated as:<br />int    *celda_actual[5];<br />You can then use celda_actual[0] to celda_actual[4], ONLY. celda_actual[5] is out of your array.</p><p>In Pj::Pj(), you wrote:<br /><span class="source-code"><span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i<span class="k3">&lt;</span><span class="n">5</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>celda_actual<span class="k3">&lt;</span>i&gt; <span class="k3">=</span> <span class="k1">new</span> <span class="k1">int</span><span class="k2">;</span> <span class="k3">*</span>celda_actual<span class="k3">&lt;</span>i&gt; <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span><span class="k2">}</span></span><br />This is fine, but later:<br /><span class="source-code"><span class="k3">*</span>celda_actual<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></span><br />This line is wrong, and writes 0 to a random address. Enough to cause crashes or random behaviors of your program.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Mon, 31 Jul 2006 04:09:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yet another array overflow <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kauhiz)</author>
		<pubDate>Mon, 31 Jul 2006 14:38:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yep, sorry for forgeting xD I did fix that part and it still gives the same bug, so the mistake is elswere. </p><p>Cheers!! *^_^*
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Mon, 31 Jul 2006 15:47:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Look.... Im doing a bomberman game. </p><p>If i put a bomb:  colisao_bomba=1; //show that the bomber is on the bomb. (last bomb) and look that he cant put another bomb if he is on a bomb</p><p>and than...</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">if</span><span class="k2">(</span>numero_bombas&gt;<span class="k3">=</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span> <span class="c">//if has bomb on the game.</span></td></tr><tr><td class="number">2</td><td>    <span class="k1">if</span><span class="k2">(</span>colisao_bomba<span class="k3">=</span><span class="k3">=</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span>    <span class="c">//if the bomber is on the bomb.          </span></td></tr><tr><td class="number">3</td><td>         colisao_bomba <span class="k3">=</span> colisao<span class="k2">(</span>image1_bb_left, image1_bb_top </td></tr><tr><td class="number">4</td><td>         ,image1_bb_right , image1_bb_bottom, bombax<span class="k2">[</span>numero_bombas<span class="k2">]</span>, bombay<span class="k2">[</span>numero_bombas<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//if bomber is still on the bomb, colision will </span></td></tr><tr><td class="number">5</td><td>                                                                                         <span class="c">//be 1, if not, collision is 0;</span></td></tr><tr><td class="number">6</td><td>                            <span class="k2">}</span></td></tr><tr><td class="number">7</td><td>                            <span class="k2">}</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td><span class="k1">if</span><span class="k2">(</span>numero_bombas&gt;<span class="k3">=</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span>     </td></tr><tr><td class="number">12</td><td>      <span class="k1">if</span><span class="k2">(</span>colisao_bomba<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k2">{</span>   <span class="c">//bomber is not on the bomb.               </span></td></tr><tr><td class="number">13</td><td>         <span class="k1">for</span><span class="k2">(</span>i<span class="k3">=</span><span class="n">1</span><span class="k2">;</span>i<span class="k3">&lt;</span><span class="k3">=</span>numero_bombas<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>   <span class="c">//colission after bomber go out of the bomb               </span></td></tr><tr><td class="number">14</td><td>           <span class="k1">if</span><span class="k2">(</span>collision<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span> collision <span class="k3">=</span> colisao<span class="k2">(</span>image1_bb_left, image1_bb_top, image1_bb_right, image1_bb_bottom,</td></tr><tr><td class="number">15</td><td>                                  bombax<span class="k3">&lt;</span>i&gt;, bombay<span class="k3">&lt;</span>i&gt;<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>                             <span class="k2">}</span> </td></tr><tr><td class="number">17</td><td>                             <span class="k2">}</span>  </td></tr><tr><td class="number">18</td><td>                             <span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (_v3n0w_)</author>
		<pubDate>Tue, 01 Aug 2006 08:01:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I can see what you mean <u>v3n0w</u>, but still, Ive made the move function to check the surrounding cells so it really doesn&#39;t (or din&#39;t ought to anyhow) matter what kind of cell the player is on in any given moment...</p><p>Wait a sec, just had an idea... But it still doesn&#39;t acount for him not being able to lay any more bombs.</p><p>[Edit] Oks, Idea failed <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Tue, 01 Aug 2006 18:42:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Man... give a look at my bomberman.</p><p><a href="http://rapidshare.de/files/27803842/Dev-Cpp.rar.html">http://rapidshare.de/files/27803842/Dev-Cpp.rar.html</a></p><p>Can i see yours? <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (_v3n0w_)</author>
		<pubDate>Tue, 01 Aug 2006 21:07:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Shure, though  you&#39;ve made my bomberman look a little... unfinished, let&#39;s leave it at that xD</p><p>If you can find what the bug is in my code, you get the whole cookie jar <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />I&#39;ve atached the whole project.</p><p>PS: Your bomberman looks fabulous!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Tue, 01 Aug 2006 22:12:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I dont know class, its hard to me find a bug there...<br />And i was thinking that u was using collision...</p><p>thank u and keep your good work <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (_v3n0w_)</author>
		<pubDate>Wed, 02 Aug 2006 01:52:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>O, well, thanks for trying. If anyone else finds what the hell is wrong...<br />Please warn me ^^</p><p>[Edit]</p><p>And I was right, its something to do with memory management,if you add the folowing 2 lines in the main funcition, just before drawing the buffer:</p><p>//  textprintf_ex(buffer, font, 10, 40, makecol(255, 0, 200), -1, &quot;State of cell inicial: %d&quot;, mapa.celda[19][17].estado);<br />  // textprintf_ex(buffer, font, 10, 100, makecol(255, 0, 200), -1, &quot;State of cell superior: %d&quot;, mapa.celda[19][16].estado);</p><p>It hangs the program as soon as you try to set a bomb, about 9 out of 10 times. What is more, if&#39;ve just found proof that it has something to do with it XDDD Half of my keyobord suddently and suspìciously got blocked, for example, shift + numbrer and the arrow keys wont work as I tipe XD thats why  I dint put the above lines in a code tag, couldnt close it cause I can&#39;t write the slash. </p><p>This proves 2 things<br />a) memory messup <br />b) its a bug with a sense of humor.</p><p>Sooo if anyone sees what I can&#39;t spot either cause I need glases or cause I dont know much about memory, new, delete, pointers and so on, please tell <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Lostforever)</author>
		<pubDate>Wed, 02 Aug 2006 22:41:04 +0000</pubDate>
	</item>
</rss>
