<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Another question, but it should be simple</title>
		<link>http://www.allegro.cc/forums/view/587187</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 25 Aug 2006 16:07:01 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><b>EDITED MOST RECENT POST (*THE* MOST RECENT ONE) </b></p><p>Sorry for posting for help again, but this one is something I honestly have not learnt before.</p><p>How would I create multiple instances of a class (e.g bullet), and how would I, written in the class, &quot;delete&quot; the class.<br />And how could this be implemented for walls and static obstacles that are part of a map?</p><p>I have checked other games to see if I can find out how, but it&#39;s not plainly there.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simsimius)</author>
		<pubDate>Wed, 23 Aug 2006 19:51:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There are a variety of ways. You can use linked lists, arrays, vectors, or any other method you choose. Google for &quot;data structures&quot;, or <a href="http://forums.dreamincode.net/showtopic10157.htm">read this</a>. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Or look into the the STL&#39;s <a href="http://www.msoe.edu/eecs/ce/courseinfo/stl/vector.htm">vector</a> and <a href="http://www.msoe.edu/eecs/ce/courseinfo/stl/list.htm">list</a>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Derezo)</author>
		<pubDate>Wed, 23 Aug 2006 20:03:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the links.</p><p>It&#39;s a lot to read, and the information on queues seems to be what I&#39;m looking for.<br />However, I&#39;m not sure to make a class work with queues (making lots of it), or how the class can delete itself (so the delete part of queues would have to be in the, for example, bullet class). The tutorial actually puts the queue in a class be itself.<br />So how would I go around doing that? Or am I missing something that I overlooked?</p><p>I guess the answer isn&#39;t as simple as I was hoping for. If anyone can help me out, or at least make things a little clearer, then thanks. Otherwise, I might stick to the usual &quot;one projectile per character&quot; method I usually opt for.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simsimius)</author>
		<pubDate>Wed, 23 Aug 2006 20:20:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, the way that <i>I</i> would do it is to use a std::list and do this:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;list&gt;</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">class</span> Bullet</td></tr><tr><td class="number">7</td><td><span class="k2">{</span></td></tr><tr><td class="number">8</td><td>public:</td></tr><tr><td class="number">9</td><td>  Bullet<span class="k2">(</span><span class="k1">float</span> _x, <span class="k1">float</span> _y<span class="k2">)</span> <span class="k2">{</span> x <span class="k3">=</span> _x<span class="k2">;</span> y <span class="k3">=</span> _y<span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">10</td><td>  ~Bullet<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span> <span class="c">/* cleanup here */</span> <span class="k2">}</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>  <span class="k1">void</span> Render<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span> <a href="http://www.allegro.cc/manual/circlefill" target="_blank"><span class="a">circlefill</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,x,y,<span class="n">2</span>,<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">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">13</td><td>  <span class="k1">void</span> Update<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span> y <span class="k3">-</span><span class="k3">=</span> <span class="n">2</span>.<span class="n">3f</span><span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">14</td><td>private:</td></tr><tr><td class="number">15</td><td>  <span class="k1">float</span> x, y<span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>list <span class="k3">&lt;</span>Bullet <span class="k3">*</span><span class="k3">&gt;</span> bullets<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td><span class="k1">void</span> AddBullet<span class="k2">(</span>Bullet <span class="k3">*</span>_bullet<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>  bullets.push_back<span class="k2">(</span>_bullet<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td><span class="k2">}</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td><span class="k1">int</span> main<span class="k2">(</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> <span class="c">// initialization stuff goes here</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</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></td></tr><tr><td class="number">30</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">31</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> AddBullet<span class="k2">(</span><span class="k1">new</span> Bullet<span class="k2">(</span>player_x, player_y<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>  </td></tr><tr><td class="number">33</td><td>    list <span class="k3">&lt;</span>Bullet <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator i<span class="k2">;</span></td></tr><tr><td class="number">34</td><td>    <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> bullets.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> i <span class="k3">!</span><span class="k3">=</span> bullets.end<span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>bullets.empty<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></td></tr><tr><td class="number">35</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">36</td><td>      <span class="k2">(</span><span class="k3">*</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>      <span class="k2">(</span><span class="k3">*</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td>    <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">42</td><td>&#160;</td></tr><tr><td class="number">43</td><td>  <span class="c">// to cleanup the bullets:</span></td></tr><tr><td class="number">44</td><td>  list <span class="k3">&lt;</span>Bullet <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator i<span class="k2">;</span></td></tr><tr><td class="number">45</td><td>  <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> bullets.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> i <span class="k3">!</span><span class="k3">=</span> bullets.end<span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>bullets.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="k2">)</span></td></tr><tr><td class="number">46</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">47</td><td>    <span class="k1">delete</span> <span class="k3">*</span>i<span class="k2">;</span></td></tr><tr><td class="number">48</td><td>    i <span class="k3">=</span> bullets.erase<span class="k2">(</span>i<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">50</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
There are 4,890,322 things that should be changed in this code, but I think you might be able to get the idea. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />Bullets shouldn&#39;t delete themselves, they should just let the controller know when to delete them. For example, by returning 0 on their update function or setting a &quot;dead&quot; flag. The controller would check for that and delete the bullet.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Derezo)</author>
		<pubDate>Wed, 23 Aug 2006 20:45:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>With queue you can only add/remove at the end. For you purpose use std::list, it&#39;s good when you need to add/remove lost of objects in the middle. Here&#39;s small example in C++:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">class</span> Bullet
<span class="k2">{</span>
   public:
      Bullet<span class="k2">(</span><span class="k2">)</span>
      <span class="k2">{</span>
         bulletList.push_back<span class="k2">(</span><span class="k1">this</span><span class="k2">)</span><span class="k2">;</span>
      <span class="k2">}</span>

      ~Bullet<span class="k2">(</span><span class="k2">)</span>
      <span class="k2">{</span>
         bulletList.remove<span class="k2">(</span><span class="k1">this</span><span class="k2">)</span><span class="k2">;</span>
      <span class="k2">}</span>

   private:
      std::list<span class="k3">&lt;</span>Bullet <span class="k3">*</span><span class="k3">&gt;</span> bulletList<span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Hrvoje Ban)</author>
		<pubDate>Wed, 23 Aug 2006 20:49:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the examples. They&#39;ve cleared it up a lot.</p><p>There&#39;s a few questions left though:
</p><div class="source-code snippet"><div class="inner"><pre>  <span class="k1">void</span> Render<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span> <a href="http://www.allegro.cc/manual/circlefill" target="_blank"><span class="a">circlefill</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,x,y,<span class="n">2</span>,<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">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
  <span class="k1">void</span> Update<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span> y <span class="k3">-</span><span class="k3">=</span> <span class="n">2</span>.<span class="n">3f</span><span class="k2">;</span> <span class="k2">}</span>
</pre></div></div><p>

<s>I&#39;m not entirely sure what the Update function does.</s><br />The update function changes the bullet location, etc., right?</p><div class="source-code snippet"><div class="inner"><pre>  <span class="c">// to cleanup the bullets:</span>
  list <span class="k3">&lt;</span>Bullet <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator i<span class="k2">;</span>
  <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> bullets.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> i <span class="k3">!</span><span class="k3">=</span> bullets.end<span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>bullets.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="k2">)</span>
  <span class="k2">{</span>
    <span class="k1">delete</span> <span class="k3">*</span>i<span class="k2">;</span>
    i <span class="k3">=</span> bullets.erase<span class="k2">(</span>i<span class="k2">)</span><span class="k2">;</span>
  <span class="k2">}</span>
</pre></div></div><p>

The other question is about:<br />bullets.erase();<br />bullets.begin();<br />bullets.end()<br />bullets.empty();</p><p>Should I worry about them? (As in, what should I do with them, or are they part of the list/queue/thing?)</p><p><s>And one part that isn&#39;t cleared up: If, for example, the bullet collides with an object (let&#39;s say that code is in &quot;bullet.detect&quot;), how should that code request for that instance of bullet to be deleted?</s><br />I think I got it. The update function, as you said.</p><p>Sorry for asking, but my knowledge isn&#39;t too great. I&#39;ve gotten the grasp of it, I hope.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simsimius)</author>
		<pubDate>Wed, 23 Aug 2006 21:04:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The update function changes the bullet location, etc., right?
</p></div></div><p>That&#39;s right. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />See the link in my first post for a complete rundown of std::list.</p><p>list::erase() removes a node from the list. <br />list::begin() is the first node in the list.<br />list::end() is the last node in the list.<br />list::empty() returns true if the list is empty (contains 0 bullets), otherwise returns false.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Derezo)</author>
		<pubDate>Wed, 23 Aug 2006 21:58:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>EDIT AT BOTTOM!</p><p>Right. Got it.</p><p>I&#39;ll try to implement it into my game, or at least a test program.</p><p>Thanks for the help!</p><p>EDIT:<br />I managed to get the code to work in a sample program, so the code looks like this:
</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="p">#include &lt;list&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> buf <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><span class="n">800</span>, <span class="n">600</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="k1">class</span> Bullet</td></tr><tr><td class="number">9</td><td><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>public:</td></tr><tr><td class="number">11</td><td>  Bullet<span class="k2">(</span><span class="k1">float</span> _x, <span class="k1">float</span> _y<span class="k2">)</span> <span class="k2">{</span> x <span class="k3">=</span> _x<span class="k2">;</span> y <span class="k3">=</span> _y<span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">12</td><td>  ~Bullet<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>  <span class="k2">}</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>  <span class="k1">void</span> Render<span class="k2">(</span> <span class="k2">)</span> <span class="k2">{</span> <a href="http://www.allegro.cc/manual/circlefill" target="_blank"><span class="a">circlefill</span></a><span class="k2">(</span>buf,x,y,<span class="n">2</span>,<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">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">15</td><td>  <span class="k1">int</span> Update<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span> <span class="k1">if</span><span class="k2">(</span>y<span class="k3">&lt;</span><span class="n">30</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> <span class="n">0</span><span class="k2">;</span><span class="k2">}</span> <span class="k1">else</span> <span class="k2">{</span> y <span class="k3">-</span><span class="k3">=</span> <span class="n">2</span>.<span class="n">3f</span><span class="k2">;</span><span class="k2">}</span> <span class="k2">}</span></td></tr><tr><td class="number">16</td><td>private:</td></tr><tr><td class="number">17</td><td>  <span class="k1">float</span> x, y<span class="k2">;</span></td></tr><tr><td class="number">18</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td>list <span class="k3">&lt;</span>Bullet <span class="k3">*</span><span class="k3">&gt;</span> bullets<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td><span class="k1">void</span> AddBullet<span class="k2">(</span>Bullet <span class="k3">*</span>_bullet<span class="k2">)</span></td></tr><tr><td class="number">23</td><td><span class="k2">{</span></td></tr><tr><td class="number">24</td><td>  bullets.push_back<span class="k2">(</span>_bullet<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">28</td><td><span class="k2">{</span></td></tr><tr><td class="number">29</td><td> <span class="c">// initialization stuff goes here</span></td></tr><tr><td class="number">30</td><td> <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></td></tr><tr><td class="number">31</td><td>    <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></td></tr><tr><td class="number">32</td><td>    <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">800</span>, <span class="n">600</span>, <span class="n">0</span>, <span class="n">0</span><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">while</span><span class="k2">(</span><span class="k3">!</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></td></tr><tr><td class="number">35</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td>   clear<span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</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> AddBullet<span class="k2">(</span><span class="k1">new</span> Bullet<span class="k2">(</span><span class="n">400</span>, <span class="n">300</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>  </td></tr><tr><td class="number">40</td><td>    list <span class="k3">&lt;</span>Bullet <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator i<span class="k2">;</span></td></tr><tr><td class="number">41</td><td>    <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> bullets.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> i <span class="k3">!</span><span class="k3">=</span> bullets.end<span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>bullets.empty<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></td></tr><tr><td class="number">42</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">43</td><td>      <span class="k2">(</span><span class="k3">*</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>      <span class="k2">(</span><span class="k3">*</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Render<span class="k2">(</span><span class="k2">)</span><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>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buf, <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></td></tr><tr><td class="number">48</td><td>    <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>  </td></tr><tr><td class="number">51</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td>  <span class="c">// to cleanup the bullets:</span></td></tr><tr><td class="number">54</td><td>  list <span class="k3">&lt;</span>Bullet <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator i<span class="k2">;</span></td></tr><tr><td class="number">55</td><td>  <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> bullets.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> i <span class="k3">!</span><span class="k3">=</span> bullets.end<span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>bullets.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><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>    <span class="k1">delete</span> <span class="k3">*</span>i<span class="k2">;</span></td></tr><tr><td class="number">58</td><td>    i <span class="k3">=</span> bullets.erase<span class="k2">(</span>i<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">60</td><td>  </td></tr><tr><td class="number">61</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>  <span class="k1">return</span> <span class="n">0</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><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><span class="k2">;</span></td></tr></tbody></table></div></div><p>.</p><p>It works <s>, but if I push space I get a LONG line of cicles travelling up to the top of the screen, and none seem to get deleted.</s> but I can&#39;t get the buffer to work, otherwise, without it, I can&#39;t see whether or not the circles do get deleted!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simsimius)</author>
		<pubDate>Thu, 24 Aug 2006 19:55:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;ll need to modify that update loop <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />It should look like this:
</p><div class="source-code snippet"><div class="inner"><pre>    list <span class="k3">&lt;</span>Bullet <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator i<span class="k2">;</span>
    <span class="k1">for</span><span class="k2">(</span>i <span class="k3">=</span> bullets.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> i <span class="k3">!</span><span class="k3">=</span> bullets.end<span class="k2">(</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span>bullets.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="k2">)</span>
    <span class="k2">{</span>
      <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Update<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> 
      <span class="k2">{</span>
        <span class="k2">(</span><span class="k3">*</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Render<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="k1">else</span> <span class="k2">{</span> <span class="k1">delete</span> <span class="k3">*</span>i<span class="k2">;</span> i <span class="k3">=</span> bullets.erase<span class="k2">(</span>i<span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
    <span class="k2">}</span>
</pre></div></div><p>

You&#39;ll also need to create the buffer <b>AFTER</b> setting the graphics mode. Don&#39;t use create_bitmap() as the initialization for a global variable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Derezo)</author>
		<pubDate>Thu, 24 Aug 2006 21:06:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>By the way : switch to OpenLayer  it&#39;s a lot faster and you won&#39;t need that offscreen bitmap (foublebuffering comes free)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Thu, 24 Aug 2006 21:17:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Areisnl:<br />I&#39;ve heard of openlayer, but no idea what it is <u>exactly</u>.</p><p>Derezo:<br />Thanks ever so much! I got a test program running! It all works fine!<br />Once, again, thanks! All I have to do is implement in my main game (but some of the code needs changing).<br />Thanks again!</p><p><s>EDIT:
Actually, I still need to seperate each bullet. I&#39;m sure I can try and work that out...I hope.
</s></p><p>EDIT2:<br />Is there was for me to display the number of bullet instances on the screen (for developer purposes)? <br />I hoping to find a way to either limit the number of bullets on the screen, or to limit the number of bullets fired per 3 seconds (still trying to work it out, with no prevail)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simsimius)</author>
		<pubDate>Thu, 24 Aug 2006 21:52:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="source-code"><span class="k1">unsigned</span> bullets_on_screen <span class="k3">=</span> bullets.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Faerber)</author>
		<pubDate>Fri, 25 Aug 2006 01:25:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>OpenLayer is a &quot;layer&quot; above allegro and OpenGL. It has all kinds of primitives ( line,circle etc) and blitting functions and so on.. just like allegro BUT openLayer routines are hardware accellerated !!!</p><p>Besides OpenLayer hase some nice things like translucency, timers, lagtime(the time it toook to complete a game cycle), double buffering etc.</p><p>Here&#39;s an overview  <a href="http://retrospec.sgn.net/~openlayer/">http://retrospec.sgn.net/~openlayer/</a></p><p>It comes with easy to understand examples.</p><p>If you use OpenLayer you can still use allegro for everything else ( sound, datastorage etc)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Fri, 25 Aug 2006 13:37:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
to limit the number of bullets fired per 3 seconds (still trying to work it out, with no prevail)
</p></div></div><p>
The player class (or anything that shoots, anyway) could have a shoot_delay&quot; member. This allows to set different delays for different weapons, if needed.
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> Player::update<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
   <span class="k1">if</span> <span class="k2">(</span>shoot_delay <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
      shoot_delay <span class="k3">-</span><span class="k3">-</span><span class="k2">;</span>

   <span class="c">// controls</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> shoot_delay <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
   <span class="k2">{</span>
      AddBullet<span class="k2">(</span><span class="k1">new</span> Bullet<span class="k2">(</span>player_x, player_y<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
      shoot_delay <span class="k3">=</span> <span class="n">20</span><span class="k2">;</span> <span class="c">// no more shooting for some time</span>
   <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>

(edit: fixed a ( [ mismatch. I use a lousy screen at work)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Fri, 25 Aug 2006 15:39:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you!</p><p>I was too busy trying to work it out with the existing code!<br />That&#39;s cleared that up. Hopefully I should have no more problems/questions.</p><p>Thanks everyone!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simsimius)</author>
		<pubDate>Fri, 25 Aug 2006 16:07:01 +0000</pubDate>
	</item>
</rss>
