<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>beginner problem</title>
		<link>http://www.allegro.cc/forums/view/572899</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 15 Mar 2006 04:37:40 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi all!</p><p>I decided to write my first game. I have less programming experience so i think i did some beginners mistakes.</p><p>the code looks like that:</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">void</span> Map::draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    prebuffer <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>maxview_x<span class="k3">+</span>tilesize,maxview_y<span class="k3">+</span>tilesize<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span><span class="s">"tiles.dat"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>    <span class="k1">int</span> p<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>    <span class="c">//Point (x,y) where to start draw</span></td></tr><tr><td class="number">8</td><td>    Point startpoint <span class="k2">(</span>viewpoint.getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> maxview_x <span class="k3">-</span> tilesize,viewp.getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> maxview_y <span class="k3">-</span> tilesize<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    Point endpointp <span class="k2">(</span>viewpoint.getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> maxview_x <span class="k3">+</span> tilesize,viewp.getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> maxview_y <span class="k3">+</span> tilesize<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    </td></tr><tr><td class="number">11</td><td>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> x <span class="k3">=</span> startpoint.getX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> x <span class="k3">&lt;</span> endpoint.getX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>x<span class="k3">+</span><span class="k3">=</span>tilesize<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>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> y <span class="k3">=</span> startpoint.getY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> y <span class="k3">&lt;</span> endpoint.getY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>y<span class="k3">+</span><span class="k3">=</span>tilesize<span class="k2">)</span></td></tr><tr><td class="number">14</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>            <span class="c">//check if tile is still on map</span></td></tr><tr><td class="number">16</td><td>            <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>Point<span class="k2">(</span>x,y<span class="k2">)</span>.onMap<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> p <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>            <span class="k1">else</span> <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>            p<span class="k3">=</span>this.getTile<span class="k2">(</span>x,y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">20</td><td>            <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>prebuffer,<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<span class="k2">[</span>p<span class="k2">]</span>.dat,x<span class="k3">+</span>lborder,y<span class="k3">+</span>uborder<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">22</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">23</td><td>    <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a></td></tr><tr><td class="number">24</td><td>    <span class="k2">(</span>buffer, prebuffer,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

Hope the code is clear to understand.</p><p>Now if I start the game it draws everything allright, but the problem is that the space requirement is increasing permanently.<br />So after a while my computer crashes because of a lack of free memory space.<br />My game runs at 70 fps, but when i ran it with 10 fps i got the same problems.<br />Or do you suggest I did something else wrong?</p><p>Where do I have to free my memory or what shall i do?<br />thx for all help comments and stuff <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />mfg mastasucka
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Benjamin Hiltpolt)</author>
		<pubDate>Wed, 15 Mar 2006 03:45:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>1) Every call to a load_ or create_ function must be matched with a corresponding destroy_ call when you&#39;re done with the resource you loaded or created.</p><p>2) You&#39;re loading all your graphics and creating your buffers within the drawing loop itself. Never do this. Load them <i>once</i>, at the beginning of your program, and then unload them at the end.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Wed, 15 Mar 2006 03:48:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s best to use constructors for something like this. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />For example:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">class</span> Map
<span class="k2">{</span>
  public:
    Map<span class="k2">(</span><span class="k2">)</span>
      <span class="k2">{</span>
        prebuffer <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>maxview_x<span class="k3">+</span>tilesize,maxview_y<span class="k3">+</span>tilesize<span class="k2">)</span><span class="k2">;</span>
        data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span><span class="s">"tiles.dat"</span><span class="k2">)</span><span class="k2">;</span>
      <span class="k2">}</span>
    ~Map<span class="k2">(</span><span class="k2">)</span>
      <span class="k2">{</span>
        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>prebuffer<span class="k2">)</span><span class="k2">;</span>
        <a href="http://www.allegro.cc/manual/unload_datafile" target="_blank"><span class="a">unload_datafile</span></a><span class="k2">(</span>data<span class="k2">)</span><span class="k2">;</span>
      <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>

[edit: my blocky coding style looks <i>scary</i> on these forums <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />]
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Derezo)</author>
		<pubDate>Wed, 15 Mar 2006 04:04:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You should study the &quot;Dynamic Allocation in the Heap&quot; to understand what you are doing. Search a C++ manual that speak about &quot;new&quot; and &quot;delete&quot;, or &quot;alloc&quot;/&quot;malloc&quot; and &quot;free&quot;....</p><p>When you have understood this, proceed to read the allegro manual using the .CHM help file.</p><p>Best regards.<br />ciao
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LordHolNapul)</author>
		<pubDate>Wed, 15 Mar 2006 04:20:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>thank you all for good and fast help!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Benjamin Hiltpolt)</author>
		<pubDate>Wed, 15 Mar 2006 04:37:40 +0000</pubDate>
	</item>
</rss>
