<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>2 class objects same reaction.</title>
		<link>http://www.allegro.cc/forums/view/585974</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 19 Jun 2006 20:45:40 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have 2 Monsters, one&#39;s direction is left, one&#39;s right.<br />I created RLE sprites of bitmaps, when I assign their direction, the 2nd monster gets the direction of the first one. It&#39;s like they&#39;re sharing the same sprites:<br />        </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>dir<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="c">//right</span></td></tr><tr><td class="number">2</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">3</td><td>            bmp <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">"ag1.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">//walk frame 1</span></td></tr><tr><td class="number">4</td><td>            B1<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>            bmp <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">"ag2.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">//walk frame 2</span></td></tr><tr><td class="number">6</td><td>            B2<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>            bmp <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">"ag4.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">//attack frame</span></td></tr><tr><td class="number">8</td><td>            X<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">10</td><td>        <span class="k1">if</span><span class="k2">(</span>dir<span class="k3">=</span><span class="k3">=</span><span class="n">1</span><span class="k2">)</span><span class="c">//left</span></td></tr><tr><td class="number">11</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>            bmp <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">"ag1l.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>            B1<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>            bmp <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">"ag2l.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>            B2<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>            bmp <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">"ag4l.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>            X<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>        DEF<span class="k3">=</span>B1<span class="k2">;</span></td></tr></tbody></table></div></div><p>
Later, I use allways DEF and change the sprite when it&#39;s needed, like DEF=B2;<br />I define the objects:<br />    </p><div class="source-code snippet"><div class="inner"><pre>Monster monster<span class="k2">(</span><span class="n">5</span>,<span class="n">5</span>,<span class="n">5</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">//4th variable is the direction</span>
    Monster monster1<span class="k2">(</span><span class="n">5</span>,<span class="n">5</span>,<span class="n">5</span>,<span class="n">1</span>,<span class="n">150</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
And drawing the objects:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/draw_rle_sprite" target="_blank"><span class="a">draw_rle_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, monster.DEF, monster.x, monster.y<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/draw_rle_sprite" target="_blank"><span class="a">draw_rle_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, monster1.DEF, monster1.x, monster1.y<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
Please help <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tony Montana)</author>
		<pubDate>Sun, 18 Jun 2006 13:03:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That is a horrible way to manage the loading of bitmaps. Don&#39;t let each object handle it&#39;s own loading of them, or you will end up with copies. It might not be a problem with just 2 monsters of the same type, but imagine 100 of them, each loading the same bitmap, and all wasting RAM.</p><p>You also have some memory leakage in the code you have posted. You load &quot;bmp&quot; 3 times, and only destroy it once. That means there&#39;s the memory for the other two loaded copies floating around...somewhere...</p><p>It&#39;s almost impossible to tell where your problem is without more code. Specifically, more on the monster class. Post more, and lets see if we can&#39;t fix it.</p><p>Also, if I remember correctly, RLE sprites don&#39;t do a whole lot for you anymore unless you are targetting older systems. Because of this, you might want to just pack all of your monster/player/npc graphics into one datafile, load it at the begining of the game, use the graphics directly from it, and unload the datafile at the end of the game. Someone correct me if I&#39;m wrong here.</p><p>To use a bitmap from a datafile, It&#39;s something like...
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>data_f<span class="k2">[</span>MONSTER_1<span class="k2">]</span>.dat<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>bmp, frame_buffer, <span class="n">0</span>, <span class="n">0</span>, x, y, bmp-&gt;w, bmp-&gt;h<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

where MONSTER_1 is defined as the bitmap&#39;s position in the datafile. Use grabber&#39;s auto-header for this.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elverion)</author>
		<pubDate>Sun, 18 Jun 2006 15:23:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I understand, now I&#39;m working for a tilesystem, when expanding my project I&#39;ll us grabber.<br />Full Monster class:
</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">class</span> Monster</td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>public:</td></tr><tr><td class="number">4</td><td>    <span class="k1">float</span> x, y, xe, ye, xv, yv<span class="k2">;</span><span class="c">//e = enemy, v = velecoity</span></td></tr><tr><td class="number">5</td><td>    <span class="k1">float</span> hp, hptot, att1, att2, power, powertot<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">int</span> damage, <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a>,mode,dir,speed<span class="k2">;</span><span class="c">//mode is used to change frames in 60 turns</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">bool</span> dead, time_set<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">volatile</span> <span class="k1">int</span> my_time,step,attacktime<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <a href="http://www.allegro.cc/manual/RLE_SPRITE" target="_blank"><span class="a">RLE_SPRITE</span></a> <span class="k3">*</span>B1,<span class="k3">*</span>B2,<span class="k3">*</span>X,<span class="k3">*</span>DEF<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    Monster<span class="k2">(</span><span class="k1">int</span> hp,<span class="k1">int</span> att1,<span class="k1">int</span> power, <span class="k1">int</span> dir,<span class="k1">int</span> x<span class="k2">)</span></td></tr><tr><td class="number">12</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>        this-&gt;hp<span class="k3">=</span>hp<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>        hptot<span class="k3">=</span>hp<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>        this-&gt;att1<span class="k3">=</span>att1<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>        this-&gt;power<span class="k3">=</span>power<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>        powertot<span class="k3">=</span>power<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>        this-&gt;dir<span class="k3">=</span>dir<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>        this-&gt;x<span class="k3">=</span>x<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>        xe<span class="k3">=</span><span class="n">100</span>,attacktime<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>        xv<span class="k3">=</span><span class="n">0</span>, x<span class="k3">=</span><span class="n">0</span>, y<span class="k3">=</span><span class="n">50</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>        dead<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>        mode<span class="k3">=</span><span class="n">0</span>,step<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>        <span class="k1">if</span><span class="k2">(</span>dir<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">26</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">27</td><td>            bmp <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">"ag1.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>            B1<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>            bmp <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">"ag2.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>            B2<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>            bmp <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">"ag4.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>            X<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">34</td><td>        <span class="k1">if</span><span class="k2">(</span>dir<span class="k3">=</span><span class="k3">=</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">35</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">36</td><td>            bmp <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">"ag1l.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>            B1<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>            bmp <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">"ag2l.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>            B2<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>            bmp <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">"ag4l.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>            X<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</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>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>        DEF<span class="k3">=</span>B1<span class="k2">;</span></td></tr><tr><td class="number">45</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">46</td><td>&#160;</td></tr><tr><td class="number">47</td><td>    <span class="k1">void</span> Att1<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">48</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">49</td><td>        <span class="k1">if</span><span class="k2">(</span>dir<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">50</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">51</td><td>            <span class="k1">if</span><span class="k2">(</span>x<span class="k3">+</span>DEF-&gt;w<span class="k3">&lt;</span>xe<span class="k2">)</span></td></tr><tr><td class="number">52</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">53</td><td>                xv<span class="k3">=</span><span class="n">0</span>.<span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">55</td><td>            <span class="k1">if</span><span class="k2">(</span>x&gt;xe-20<span class="k2">)</span></td></tr><tr><td class="number">56</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">57</td><td>                power<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>                step<span class="k3">=</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>                mode<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>            <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>        <span class="k1">if</span><span class="k2">(</span>dir<span class="k3">=</span><span class="k3">=</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">63</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">64</td><td>            <span class="k1">if</span><span class="k2">(</span>x&gt;xe<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>                xv<span class="k3">=</span><span class="k3">-</span><span class="n">0</span>.<span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">68</td><td>            <span class="k1">if</span><span class="k2">(</span>x<span class="k3">&lt;</span>xe<span class="k3">+</span><span class="n">20</span><span class="k2">)</span></td></tr><tr><td class="number">69</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">70</td><td>                power<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>                step<span class="k3">=</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>                mode<span class="k3">=</span><span class="n">0</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="k2">}</span></td></tr><tr><td class="number">75</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">76</td><td>    <span class="k1">void</span> Back<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">77</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">78</td><td>        <span class="k1">if</span><span class="k2">(</span>dir<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">79</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">80</td><td>            xv<span class="k3">=</span><span class="k3">-</span><span class="n">0</span>.<span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">81</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">82</td><td>        <span class="k1">if</span><span class="k2">(</span>dir<span class="k3">=</span><span class="k3">=</span><span class="n">1</span><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>            xv<span class="k3">=</span><span class="n">0</span>.<span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">85</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">86</td><td>        <span class="k1">if</span><span class="k2">(</span>power<span class="k3">!</span><span class="k3">=</span>powertot<span class="k2">)</span></td></tr><tr><td class="number">87</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">88</td><td>            power<span class="k3">+</span><span class="k3">=</span><span class="n">0</span>.<span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>        <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="k1">void</span> Update<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">92</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">93</td><td>&#160;</td></tr><tr><td class="number">94</td><td>        <span class="k1">if</span><span class="k2">(</span>dead<span class="k3">=</span><span class="k3">=</span><span class="k1">true</span><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>            y<span class="k3">=</span><span class="n">50</span><span class="k2">;</span></td></tr><tr><td class="number">97</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">98</td><td>        <span class="k1">if</span><span class="k2">(</span>power<span class="k3">&lt;</span>att1<span class="k3">&amp;</span><span class="k3">&amp;</span>step<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">99</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">100</td><td>            Back<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>        <span class="k2">}</span><span class="c">//go back</span></td></tr><tr><td class="number">102</td><td>        <span class="k1">if</span><span class="k2">(</span>power&gt;<span class="k3">=</span>att1<span class="k2">)</span></td></tr><tr><td class="number">103</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">104</td><td>            Att1<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">106</td><td>        <span class="k1">if</span><span class="k2">(</span>step<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">107</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">108</td><td>            Move<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">109</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">110</td><td>        <span class="k1">if</span><span class="k2">(</span>step<span class="k3">=</span><span class="k3">=</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">111</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">112</td><td>            <span class="k1">if</span><span class="k2">(</span>attacktime<span class="k3">&lt;</span><span class="n">60</span><span class="k2">)</span></td></tr><tr><td class="number">113</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">114</td><td>                attacktime<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">115</td><td>                Attack<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">116</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">117</td><td>            <span class="k1">else</span></td></tr><tr><td class="number">118</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">119</td><td>                step<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">120</td><td>                attacktime<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">121</td><td>                mode<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">122</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">123</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">124</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="k2">)</span></td></tr><tr><td class="number">125</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">126</td><td>            hp-<span class="k3">=</span><span class="n">0</span>.<span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">127</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">128</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">129</td><td>    <span class="k1">void</span> Damage<span class="k2">(</span><span class="k1">int</span> damage<span class="k2">)</span></td></tr><tr><td class="number">130</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">131</td><td>        this-&gt;damage<span class="k3">=</span>damage<span class="k2">;</span></td></tr><tr><td class="number">132</td><td>        hp-<span class="k3">=</span>damage<span class="k2">;</span></td></tr><tr><td class="number">133</td><td>        <span class="k1">if</span><span class="k2">(</span>hp<span class="k3">&lt;</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">134</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">135</td><td>            dead<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">136</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">137</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">138</td><td>    <span class="k1">void</span> Move<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">139</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">140</td><td>        mode<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">141</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">60</span><span class="k2">)</span><span class="c">//these are frames</span></td></tr><tr><td class="number">142</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">143</td><td>            mode<span class="k3">=</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">144</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">145</td><td>        x<span class="k3">+</span><span class="k3">=</span>xv<span class="k2">;</span></td></tr><tr><td class="number">146</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">147</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">148</td><td>            DEF<span class="k3">=</span>B1<span class="k2">;</span></td></tr><tr><td class="number">149</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">150</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">10</span><span class="k2">)</span></td></tr><tr><td class="number">151</td><td>        <span class="k2">{</span><span class="k2">}</span><span class="c">//frame 1</span></td></tr><tr><td class="number">152</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">20</span><span class="k2">)</span></td></tr><tr><td class="number">153</td><td>        <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">154</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">30</span><span class="k2">)</span></td></tr><tr><td class="number">155</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">156</td><td>&#160;</td></tr><tr><td class="number">157</td><td>            DEF<span class="k3">=</span>B2<span class="k2">;</span></td></tr><tr><td class="number">158</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">159</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">40</span><span class="k2">)</span></td></tr><tr><td class="number">160</td><td>        <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">161</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">50</span><span class="k2">)</span></td></tr><tr><td class="number">162</td><td>        <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">163</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">164</td><td>    <span class="k1">void</span> Attack<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">165</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">166</td><td>        mode<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">167</td><td>&#160;</td></tr><tr><td class="number">168</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">60</span><span class="k2">)</span></td></tr><tr><td class="number">169</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">170</td><td>            mode<span class="k3">=</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">171</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">172</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">2</span><span class="k2">)</span></td></tr><tr><td class="number">173</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">174</td><td>            DEF<span class="k3">=</span>X<span class="k2">;</span></td></tr><tr><td class="number">175</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">176</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">10</span><span class="k2">)</span></td></tr><tr><td class="number">177</td><td>        <span class="k2">{</span><span class="k2">}</span><span class="c">//frame 1</span></td></tr><tr><td class="number">178</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">20</span><span class="k2">)</span></td></tr><tr><td class="number">179</td><td>        <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">180</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">30</span><span class="k2">)</span></td></tr><tr><td class="number">181</td><td>        <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">182</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">40</span><span class="k2">)</span></td></tr><tr><td class="number">183</td><td>        <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">184</td><td>        <span class="k1">if</span><span class="k2">(</span>mode<span class="k3">=</span><span class="k3">=</span><span class="n">50</span><span class="k2">)</span></td></tr><tr><td class="number">185</td><td>        <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">186</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">187</td><td><span class="k2">}</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tony Montana)</author>
		<pubDate>Sun, 18 Jun 2006 15:38:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I usualy use a bitmap-handler singleton for managing that sort of thing. It becomes quite elegant;
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">//In monsters constructor:</span>
BitmapHandler <span class="k3">*</span>b <span class="k3">=</span> BitmapHandler.getInstance<span class="k2">(</span><span class="k2">)</span>,
myBitmap <span class="k3">=</span> b-&gt;getBitmap<span class="k2">(</span><span class="s">"monster1"</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

And the bitmap-handler looks through an stl map, looking any reference to a bitmap named monster1 - if it finds it, it returns the pointer to it. If not, it loads it, adds it to the map and returns the pointer.</p><p>Also, OP; You should probably not create all your monsters etc on the stack like you do now. A better way is probably Monster *monster = new Monster(....); And then access the members with &#39;-&gt;&#39; insetad of &#39;.&#39;</p><p>This way it wont be automaticly deleted when you leave the function it was created in, and you can send the pointer to a function without having to send all the data in the class.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Sun, 18 Jun 2006 15:44:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Very stupid of me (cost 2 days...):<br />When drawing:<br />First
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/draw_rle_sprite" target="_blank"><span class="a">draw_rle_sprite</span></a><span class="k2">(</span>buffer, monster.DEF, monster.x, monster.y<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/draw_rle_sprite" target="_blank"><span class="a">draw_rle_sprite</span></a><span class="k2">(</span>buffer, monster.DEF, monster1.x, monster1.y<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
Now, corrected:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/draw_rle_sprite" target="_blank"><span class="a">draw_rle_sprite</span></a><span class="k2">(</span>buffer, monster.DEF, monster.x, monster.y<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/draw_rle_sprite" target="_blank"><span class="a">draw_rle_sprite</span></a><span class="k2">(</span>buffer, monster1.DEF, monster1.x, monster1.y<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tony Montana)</author>
		<pubDate>Mon, 19 Jun 2006 17:32:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Jonatan:<br />ooh, pretty!<br />I am currently using load_datafile() since I use &lt; 2Mb data, but I&#39;ve studied closely the &quot;load from disk as needed&quot; that can be seen in Doom and Diablo 2. It brings the problem of &#39;heavy disk activity when new monster arrives&#39;, but in a game with large &quot;possible&quot; resource contents, it&#39;s that or &quot;loading - please wait&quot; <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /><br />Anyway, your method makes it highly readable. And it&#39;s still possible to pre-load any amount of often-used data by putting a series of:<br />b-&gt;getBitmap(&quot;player_walk1&quot;);<br />b-&gt;getBitmap(&quot;player_walk2&quot;);<br />b-&gt;getBitmap(&quot;player_walk3&quot;);<br />b-&gt;getBitmap(&quot;player_walk4&quot;);<br />(...)<br />at moments where disk activity should go unnoticed.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Mon, 19 Jun 2006 20:02:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah just make sure you fix those memory leaks!   ex
</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>dir<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="c">//right</span></td></tr><tr><td class="number">2</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">3</td><td>            bmp <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">"ag1.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">//walk frame 1</span></td></tr><tr><td class="number">4</td><td>            B1<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>            <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>                 <span class="c">//;)</span></td></tr><tr><td class="number">6</td><td>            bmp <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">"ag2.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">//walk frame 2</span></td></tr><tr><td class="number">7</td><td>            B2<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>            <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>                 <span class="c">//;)</span></td></tr><tr><td class="number">9</td><td>            bmp <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">"ag4.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">//attack frame</span></td></tr><tr><td class="number">10</td><td>            X<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>            <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>                 <span class="c">//;)</span></td></tr><tr><td class="number">12</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">13</td><td>        <span class="k1">if</span><span class="k2">(</span>dir<span class="k3">=</span><span class="k3">=</span><span class="n">1</span><span class="k2">)</span><span class="c">//left</span></td></tr><tr><td class="number">14</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>            bmp <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">"ag1l.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>            B1<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>            <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>                 <span class="c">//;)</span></td></tr><tr><td class="number">18</td><td>            bmp <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">"ag2l.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>            B2<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>            <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>                 <span class="c">//;)</span></td></tr><tr><td class="number">21</td><td>            bmp <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">"ag4l.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>            X<span class="k3">=</span><a href="http://www.allegro.cc/manual/get_rle_sprite" target="_blank"><span class="a">get_rle_sprite</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>            <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>                 <span class="c">//;)</span></td></tr><tr><td class="number">24</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">25</td><td>        DEF<span class="k3">=</span>B1<span class="k2">;</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ron Novy)</author>
		<pubDate>Mon, 19 Jun 2006 20:45:40 +0000</pubDate>
	</item>
</rss>
