<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Looking for a Game Tutorial</title>
		<link>http://www.allegro.cc/forums/view/606117</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 28 Jan 2011 18:04:19 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi everybody...<br /> I am looking for a tutorial on how to make a game...not the programing...I looking for the concepts...for example..<br />I make the scroll of my game creating a variable CameraX and then adding each time you press the right button...<br />Then all I draw..tilemaps, enemy, etc... I subtract they x value from CameraX..
</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="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 2</span>  CameraX<span class="k3">+</span><span class="k3">=</span>Speed<span class="k2">;</span>
<span class="number"> 3</span>
<span class="number"> 4</span>
<span class="number"> 5</span>Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>Buffer<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 6</span>  <a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span>Sprite, Buffer, Frame<span class="k3">*</span>W, Stance<span class="k3">*</span>H, x <span class="k3">-</span> CameraX, y, W, H<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 7</span><span class="k2">}</span>
</div></div><p>
It works..but when i start to put enemies to stage it becomes dificult and my program become a really mess...:P<br />  All I want is some concepts of things like...To scroll I create a object Camera or make the variables in the player object....There is another way better to scroll??<br />Things like that would help me a lot...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Tue, 18 Jan 2011 20:27:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It sounds to me like your problem is just organizing data and code. Perhaps what you are looking for is object-oriented programming? Perhaps you&#39;re looking for something like this to clean the code up:</p><div class="source-code snippet"><div class="inner"><pre>renderer.render<span class="k2">(</span>player, camera<span class="k2">)</span><span class="k2">;</span>
renderer.render<span class="k2">(</span>enemy1, camera<span class="k2">)</span><span class="k2">;</span>
renderer.render<span class="k2">(</span>enemy2, camera<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

<img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /></p><p>Otherwise, I&#39;m afraid that I don&#39;t understand what you&#39;re asking. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Tue, 18 Jan 2011 22:12:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think what she&#39;s (?) asking is how to make a <i>game</i>, she&#39;s got the C/C++ language and Allegro API down, but what&#39;s next?</p><p>@Gabriel Campos:<br />It would help if you told us what kind of game you&#39;re making, I&#39;m guessing a side scroller of some type?  Do you have some commercial game in mind to emulate?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 18 Jan 2011 22:29:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Gabriel is a male name. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dario ff)</author>
		<pubDate>Tue, 18 Jan 2011 22:33:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So why did he pick a hot chick for his avatar?</p><p>[EDIT]</p><p>Upon zooming way in to the image, I guess it could be a guy...  a great big ODARN echos through the trailer park!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 18 Jan 2011 22:34:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you think that&#39;s a <i>hot chick</i>, then so be it. I&#39;m not going to question your tastes. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>On-topic: Gabriel, there are quite a lot of tutorials on the net depending on the genre you&#39;re looking for. I remember finding once a tutorial for a 2D map style like the old JRPGs(think SNES), and it was specific to Allegro as well. These are quite helpful in opening up more room for thinking and creating new, different engines. In the end, it all comes down to your creativity in doing an engine that can be maintained, that is efficient, and flexible. And that it doesn&#39;t give you a headache when coding.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dario ff)</author>
		<pubDate>Tue, 18 Jan 2011 22:44:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899314#target">Dario ff</a> said:</div><div class="quote"><p>If you think that&#39;s a hot chick, then so be it.</p></div></div><p>
Hot is debatable, but it&#39;s definitely a chick.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Tue, 18 Jan 2011 23:00:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Looks like a male FF character to me. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899300#target">Gabriel Campos</a> said:</div><div class="quote"><p> It works..but when i start to put enemies to stage it becomes dificult and my program become a really mess...:P
</p></div></div><p>What is a mess? The code? Or does the game not render correctly?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Tue, 18 Jan 2011 23:11:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#39;s the article I was talking about.</p><p><a href="http://pixwiki.bafsoft.com/mags/9/articles/begin/article.html">The Beginners Guide to RPG&#39;s in Allegro and C/C++</a></p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899316#target">gnolam</a> said:</div><div class="quote"><p>Hot is debatable, but it&#39;s definitely a chick.</p></div></div><p>
The size of the head seems to steer it into the &quot;chick&quot; side, though with the FF style, you never know. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dario ff)</author>
		<pubDate>Tue, 18 Jan 2011 23:13:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>it&#39;s a bloke, I think:<br /><a href="http://en.wikipedia.org/wiki/Sephiroth_%28Final_Fantasy%29">http://en.wikipedia.org/wiki/Sephiroth_%28Final_Fantasy%29</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Tue, 18 Jan 2011 23:21:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ah, yes</p><p><span class="remote-thumbnail"><span class="json">{"name":"sephiroth.jpg","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/e\/fe29d8fa7ec9d9abc59a03c66f76c1a8.jpg","w":432,"h":405,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/f\/e\/fe29d8fa7ec9d9abc59a03c66f76c1a8"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/f/e/fe29d8fa7ec9d9abc59a03c66f76c1a8-240.jpg" alt="sephiroth.jpg" width="240" height="225" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 18 Jan 2011 23:27:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Indeed, it&#39;s Sephiroth:
</p><div class="spoiler"><p>
<span class="remote-thumbnail"><span class="json">{"name":"sugg-sephiroth.jpg","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/9\/198ef57c0d7ca8c9fef293bfe8769391.jpg","w":400,"h":665,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/9\/198ef57c0d7ca8c9fef293bfe8769391"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/1/9/198ef57c0d7ca8c9fef293bfe8769391-240.jpg" alt="sugg-sephiroth.jpg" width="240" height="399" /></span>
</p></div><p>
EDIT: Ninjad!</p><p>EDIT: Ok, so what does this tell us regarding gnolam and Arthur? <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dario ff)</author>
		<pubDate>Tue, 18 Jan 2011 23:28:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I must state that I know nothing of Final Fantasy, I just found it here, which was really quite good I thought:</p><p><a href="http://www.tineye.com/">http://www.tineye.com/</a></p><p>and pointed it at the forum static image.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Tue, 18 Jan 2011 23:30:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And I selected the Sephiroth string and right-clicked to &quot;Search Google&quot; then selected Images.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 18 Jan 2011 23:32:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://www.youtube.com/watch?v=rxOMOKqEOVc">http://www.youtube.com/watch?v=rxOMOKqEOVc</a></p><p><img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Tue, 18 Jan 2011 23:42:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899328#target">Dario ff</a> said:</div><div class="quote"><p>Ok, so what does this tell us regarding gnolam and Arthur? <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p></div></div><p>
That we&#39;re not anime-damaged enough to view ladyboys as male?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Wed, 19 Jan 2011 00:06:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Swift escape. At least you didn&#39;t call him <i>hot</i>. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /> Though in my defense, I based myself on the fact that the name is common for males on Latin America. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>Ok, enough off-topic for now.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dario ff)</author>
		<pubDate>Wed, 19 Jan 2011 00:11:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well...Its Sephiroth from Final Fantasy...I will change later:P;D<br />(*thinking* They program games and dont know final fantasy?::))<br />I will try to be more clear . . .<br />I am making a platform game...a megaman game..<br />the link for my game. . .<br /><a href="http://www.4shared.com/file/jfK0vjFo/MEGAMAN.html">http://www.4shared.com/file/jfK0vjFo/MEGAMAN.html</a><br /> A = shoot (hold to charge)<br /> Z = jump<br /> ESC = exit game</p><p>I have a good knowledge in c++ and allegro... This is some codes from my game...
</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">//I create a Header file for each class</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">class</span> cPlayer <span class="k2">:</span> <span class="k1">public</span> cRect<span class="k2">{</span> <span class="c">// cRect is a class to check collision</span>
<span class="number">  4</span>private:
<span class="number">  5</span>        <span class="k1">int</span> x, y...etc
<span class="number">  6</span>        <span class="k1">int</span> CameraX, CameraY<span class="k2">;</span>
<span class="number">  7</span>public:
<span class="number">  8</span>      cPlayer<span class="k2">(</span><span class="k1">int</span>, <span class="k1">int</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Initializate the variables</span>
<span class="number">  9</span>      ~cPlayer<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// dont need to comment</span>
<span class="number"> 10</span>      <span class="k1">void</span> Input<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>      <span class="k1">void</span> Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>     <span class="k1">void</span> Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 16</span>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>GameManager.Done<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 17</span>       clear<span class="k2">(</span>Buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>       Player.Input<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>       Player.Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>       Player.Draw<span class="k2">(</span>Buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>      <a href="http://www.allegro.cc/manual/draw_sprite"><span class="a">draw_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a>, Buffer, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span><span class="k2">}</span>
</div></div><p>
Basiclly this is my code and I use in this manner for the other objects like enemies, etc...</p><p>My problems starts here when I start to put more objects in the game...<br />Because I have to check the position of the objects adding (enemy.x - Player.CameraX) . its become a mess . .<br />  I know I need to learn more OOP so i am asking a light in this point . .<br />I want to know things like:</p><p><img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />  Its better to create on cPlayer a variable CameraX or create a object / class called cCamera?<br /><img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />  If create a object Camera how to make the other objects like player to recognize it?? I tryed to create a pointer in the constructor of the player but doesnt work
</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="k1">class</span> cPlayer<span class="k2">{</span>
<span class="number"> 2</span>     cCamera <span class="k3">*</span>Camera<span class="k2">;</span>
<span class="number"> 3</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 4</span>
<span class="number"> 5</span>cPlayer::cPlayer<span class="k2">(</span>cCamera <span class="k3">*</span>iCamera<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 6</span>  Camera <span class="k3">=</span> iCamera<span class="k2">;</span>
<span class="number"> 7</span><span class="k2">}</span> <span class="c">// this doesnt work for me...</span>
</div></div><p>
<img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />  Whats the better way to scroll??<br />Well, things like that ...Will help a lot me and begginers too..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Wed, 19 Jan 2011 00:23:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899343#target">Gabriel Campos</a> said:</div><div class="quote"><p>Its better to create on cPlayer a variable CameraX or create a object / class called cCamera</p></div></div><p>
Certainly a Camera should be a single object IMO.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>If create a object Camera how to make the other objects like player to recognize it?? I tryed to create a pointer in the constructor of the player but doesnt work</p></div></div><p>
Your code snippet doesn&#39;t look wrong there, I&#39;d say that you&#39;re not passing the pointer properly.</p><p>But IMO, the key is that maybe the objects shouldn&#39;t render themselves to the screen, but actually let a &quot;Renderer&quot; object handle it. That way, you can make different &quot;displays&quot; based on the same world.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>Whats the better way to scroll??</p></div></div><p>
I guess your camera class should handle that.</p><p>EDIT:
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>They program games and dont know final fantasy?</p></div></div><p>
FF7, no. <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" /> I know about the character, but I couldn&#39;t recognize it at first sight on your avatar.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dario ff)</author>
		<pubDate>Wed, 19 Jan 2011 00:27:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmmm....<br /> But I will pass the objects in parameters??
</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="number"> 2</span>Renderer.Render<span class="k2">(</span><span class="k3">&amp;</span>Player, <span class="k3">&amp;</span>Camera<span class="k2">)</span><span class="k2">;</span>
</div></div><p>
But how I define the Renderer class??</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="k1">class</span> cRenderer<span class="k2">{</span>
<span class="number"> 2</span>     
<span class="number"> 3</span>   <span class="k1">void</span> Render<span class="k2">(</span> <span class="c">/* what parameters here??? */</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p><img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Wed, 19 Jan 2011 00:36:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I always have a class Object as a base class for every object that has to be drawn, and have it have at least one virtual function: virtual void draw();<br />Then, I have a vector of Object pointers to all objects. The drawing code looks like this:
</p><div class="source-code snippet"><div class="inner"><pre><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>objectsvector.length<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>
    Renderer.render<span class="k2">(</span>objectsvector<span class="k2">[</span>i<span class="k2">]</span>,<span class="k3">&amp;</span>Camera<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
And in the render function:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> cRenderer::render<span class="k2">(</span>Object<span class="k3">*</span> object, cCamera<span class="k3">*</span> camera<span class="k2">)</span>
<span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span>object-&gt;getSprite<span class="k2">(</span><span class="k2">)</span>, Buffer, object-&gt;getFrame<span class="k2">(</span><span class="k2">)</span><span class="k3">*</span>object-&gt;getW<span class="k2">(</span><span class="k2">)</span>, object-&gt;getStance<span class="k2">(</span><span class="k2">)</span><span class="k3">*</span>object-&gt;getH<span class="k2">(</span><span class="k2">)</span>, object-&gt;getX <span class="k3">-</span> camera-&gt;getX, object-&gt;getY <span class="k3">-</span> camera-&gt;getY<span class="k2">(</span><span class="k2">)</span>, object-&gt;getW<span class="k2">(</span><span class="k2">)</span>, object-&gt;getH<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>
you will have to make getW,getH,getY,getX,getSprite,... virtual members of Object as well.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Wed, 19 Jan 2011 01:32:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899343#target">Gabriel Campos</a> said:</div><div class="quote"><p>
Well...Its Sephiroth from Final Fantasy...I will change later:P;D
</p></div></div><p>
No need to change it. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899343#target">Gabriel Campos</a> said:</div><div class="quote"><p>
(*thinking* They program games and dont know final fantasy?::))
</p></div></div><p>
&lt;------ <b>Ahem</b>.
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899343#target">Gabriel Campos</a> said:</div><div class="quote"><p>
<img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />  Its better to create on cPlayer a variable CameraX or create a object / class called cCamera?
</p></div></div><p>
I would create a camera class. I would probably just name it <span class="source-code">Camera</span> though. Assuming the &#39;c&#39; stands for &quot;class&quot;, it is a useless prefix that won&#39;t add anything useful to the game. If you need more than one camera type then use namespaces to organize them or give them more descriptive names.
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899343#target">Gabriel Campos</a> said:</div><div class="quote"><p>
<img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />  If create a object Camera how to make the other objects like player to recognize it?? I tryed to create a pointer in the constructor of the player but doesnt work</p></div></div><p>
As Dario ff pointed out, I would probably not let the player class know about the camera class. Let the camera be managed separately.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899346#target">Gabriel Campos</a> said:</div><div class="quote"><p>
But how I define the Renderer class??</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">class</span> cRenderer<span class="k2">{</span>
     
   <span class="k1">void</span> Render<span class="k2">(</span> <span class="c">/* what parameters here??? */</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div></div><p>
Rather than passing pointers, you might as well pass references. You might do something like this:
</p><div class="source-code"><div class="toolbar"><span class="name">renderer.hpp</span><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="p">#ifndef RENDERER_HPP</span>
<span class="number">  2</span>    <span class="p">#define RENDERER_HPP</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">class</span> Renderer
<span class="number">  5</span><span class="k2">{</span>
<span class="number">  6</span>private:
<span class="number">  7</span>    <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span> buffer<span class="k2">;</span>
<span class="number">  8</span>    <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span> <a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>    <span class="k1">int</span> getScreenX<span class="k2">(</span><span class="k1">const</span> Camera <span class="k3">&amp;</span>, <span class="k1">const</span> Player <span class="k3">&amp;</span><span class="k2">)</span> <span class="k1">const</span><span class="k2">;</span>
<span class="number"> 11</span>    <span class="k1">int</span> getScreenY<span class="k2">(</span><span class="k1">const</span> Camera <span class="k3">&amp;</span>, <span class="k1">const</span> Player <span class="k3">&amp;</span><span class="k2">)</span> <span class="k1">const</span><span class="k2">;</span>
<span class="number"> 12</span>public:
<span class="number"> 13</span>    Renderer<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>    <span class="k1">void</span> paint<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>    <span class="k1">void</span> render<span class="k2">(</span><span class="k1">const</span> GameTime <span class="k3">&amp;</span>, <span class="k1">const</span> Camera <span class="k3">&amp;</span>, <span class="k1">const</span> Player <span class="k3">&amp;</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span><span class="p">#endif</span>
</div></div><p>
</p><div class="source-code"><div class="toolbar"><span class="name">renderer.cpp</span><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="p">#include "renderer.hpp"</span>
<span class="number">  2</span>
<span class="number">  3</span>Renderer::Renderer<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span> <a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a><span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_48.html" target="_blank">assert</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>    this-&gt;screen <span class="k3">=</span> <a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a><span class="k2">;</span>
<span class="number">  8</span>    this-&gt;buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap"><span class="a">create_bitmap</span></a><span class="k2">(</span>screen-&gt;w, screen-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>this-&gt;buffer<span class="k2">)</span>
<span class="number"> 11</span>    <span class="k2">{</span>
<span class="number"> 12</span>        <span class="k1">throw</span> <span class="k1">new</span> std::runtime_error<span class="k2">(</span>
<span class="number"> 13</span>                <span class="s">"Failed to create screen buffer."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>    <span class="k2">}</span>
<span class="number"> 15</span><span class="k2">}</span>
<span class="number"> 16</span>
<span class="number"> 17</span><span class="k1">int</span> Renderer::getScreenX<span class="k2">(</span>
<span class="number"> 18</span>        <span class="k1">const</span> Camera <span class="k3">&amp;</span> camera,
<span class="number"> 19</span>        <span class="k1">const</span> Player <span class="k3">&amp;</span> player<span class="k2">)</span> <span class="k1">const</span>
<span class="number"> 20</span><span class="k2">{</span>
<span class="number"> 21</span>    <span class="k1">return</span> player.getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> camera.getX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span><span class="k2">}</span>
<span class="number"> 23</span>
<span class="number"> 24</span><span class="k1">int</span> Renderer::getScreenY<span class="k2">(</span>
<span class="number"> 25</span>        <span class="k1">const</span> Camera <span class="k3">&amp;</span> camera,
<span class="number"> 26</span>        <span class="k1">const</span> Player <span class="k3">&amp;</span> player<span class="k2">)</span> <span class="k1">const</span>
<span class="number"> 27</span><span class="k2">{</span>
<span class="number"> 28</span>    <span class="k1">return</span> player.getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> camera.getY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span><span class="k2">}</span>
<span class="number"> 30</span>
<span class="number"> 31</span><span class="k1">void</span> Renderer::render<span class="k2">(</span>
<span class="number"> 32</span>        <span class="k1">const</span> GameTime <span class="k3">&amp;</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a>,
<span class="number"> 33</span>        <span class="k1">const</span> Camera <span class="k3">&amp;</span> camera,
<span class="number"> 34</span>        <span class="k1">const</span> Player <span class="k3">&amp;</span> player<span class="k2">)</span>
<span class="number"> 35</span><span class="k2">{</span>
<span class="number"> 36</span>    <span class="k1">int</span> x <span class="k3">=</span> this-&gt;getScreenX<span class="k2">(</span>camera, player<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>    <span class="k1">int</span> y <span class="k3">=</span> this-&gt;getScreenY<span class="k2">(</span>camera, player<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>    <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span> frame <span class="k3">=</span> player-&gt;getFrame<span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>
<span class="number"> 40</span>    <a href="http://www.allegro.cc/manual/blit"><span class="a">blit</span></a><span class="k2">(</span>frame, this-&gt;buffer, x, y, <span class="n">0</span>, <span class="n">0</span>, frame-&gt;w, frame-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span><span class="k2">}</span>
<span class="number"> 42</span>
<span class="number"> 43</span><span class="k1">void</span> Render::paint<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 44</span><span class="k2">{</span>
<span class="number"> 45</span>    <a href="http://www.allegro.cc/manual/blit"><span class="a">blit</span></a><span class="k2">(</span>
<span class="number"> 46</span>            this-&gt;buffer,
<span class="number"> 47</span>            this-&gt;screen,
<span class="number"> 48</span>            <span class="n">0</span>,
<span class="number"> 49</span>            <span class="n">0</span>,
<span class="number"> 50</span>            <span class="n">0</span>,
<span class="number"> 51</span>            <span class="n">0</span>,
<span class="number"> 52</span>            this-&gt;buffer-&gt;w,
<span class="number"> 53</span>            this-&gt;buffer-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 54</span><span class="k2">}</span>
</div></div><p>
If you&#39;re comfortable with inheritance and polymorphism then you could do as J-Gamer suggested and create an <span class="source-code">IDrawable</span> interface and just make your <span class="source-code">Player</span> class and <span class="source-code">Enemy</span> class and other drawable classes implement that interface. That way you should be able to easily draw <i>anything</i> that supports the drawing logic implemented.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Wed, 19 Jan 2011 01:33:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That picture of Sephiroth isn&#39;t from the game of FF7...thank Yevon for that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Wed, 19 Jan 2011 14:21:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s from the FFVII: Advent Children promotional materials. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> IIRC, I think that I used that very picture of Sephiroth as my A.cc avatar back when I joined in 2006... <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> Prior to switching to Cloud for long forgotten reasons. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Here&#39;s a direct link to the original wallpaper from the official [English] site: <a href="http://na.square-enix.com/dvd/ff7ac/wallpapers/wp1-1.jpg">http://na.square-enix.com/dvd/ff7ac/wallpapers/wp1-1.jpg</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Wed, 19 Jan 2011 21:17:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think the way of J-Gamer show the solution is very good . . .and will help me with other things too..like drawing by the Depth.<br />So, lets see...
</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="k1">class</span> cObject<span class="k2">{</span> <span class="c">// Create a cObject class that will manager all drawable objects</span>
<span class="number">  2</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">class</span> cRenderer<span class="k2">{</span> <span class="c">// Renderer class</span>
<span class="number">  5</span>   <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>Buffer<span class="k2">;</span>
<span class="number">  6</span>   
<span class="number">  7</span><span class="k1">void</span> Render<span class="k2">(</span>cObject <span class="k3">*</span> object, cCamera <span class="k3">*</span>camera<span class="k2">)</span><span class="k2">{</span>
<span class="number">  8</span>     <a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span>object-&gt;getSprite<span class="k2">(</span><span class="k2">)</span>, Buffer, object-&gt;getFrame<span class="k2">(</span><span class="k2">)</span><span class="k3">*</span>object-&gt;getW<span class="k2">(</span><span class="k2">)</span>,     Object-&gt;getStance<span class="k2">(</span><span class="k2">)</span><span class="k3">*</span>object-&gt;getH<span class="k2">(</span><span class="k2">)</span>, object-&gt;getX <span class="k3">-</span> camera-&gt;getX, object-&gt;getY <span class="k3">-</span>    camera-&gt;getY<span class="k2">(</span><span class="k2">)</span>, object-&gt;getW<span class="k2">(</span><span class="k2">)</span>, object-&gt;getH<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span><span class="k2">}</span>
<span class="number"> 10</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span>
<span class="number"> 13</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 14</span>   std::vector<span class="k3">&lt;</span>cObject <span class="k3">*</span><span class="k3">&gt;</span>Objects<span class="k2">;</span>
<span class="number"> 15</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> Objects.length<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"> 16</span>     Renderer.Render<span class="k2">(</span>Objects<span class="k2">[</span>i<span class="k2">]</span>, <span class="k3">&amp;</span>Camera<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>     <span class="k2">}</span>
<span class="number"> 18</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 19</span><a href="http://www.allegro.cc/manual/END_OF_MAIN"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>

Is this the way correct??<br />I dont understood why J-Gamer said to use a virtual void draw();<br />Is really necessary??
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Thu, 20 Jan 2011 00:31:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899486#target">Gabriel Campos</a> said:</div><div class="quote"><p>I dont understood why J said to use a virtual void draw();</p></div></div><p>I haven&#39;t read the thread, but he&#39;s probably referring to polymorphism, i.e. loose coupling is king.</p><p>It means you can have lots of sub-classes but still have call draw() called correctly when using the base class, e.g. assuming Sprite1 and Sprite2 were inherited from Object, then:</p><p>void MyGreatFunction(Object* a) <br />{<br /> a-&gt;draw();<br />}</p><p>if not using virtual then Object::draw would be called. If using virtual then the correct ones are. The drawback is a slight overhead in determining the correct method to call.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Thu, 20 Jan 2011 06:23:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think that J-Gamer starting giving one suggestion and ended up giving a better one. Ignore the part about the <span class="source-code">draw</span> method. Game objects generally shouldn&#39;t know how to draw themselves (they should have no concept of a screen, etc.). A third-party, like the <span class="source-code">Renderer</span> concept should know how to draw all objects. It&#39;s the <span class="source-code">getSprite</span> or <span class="source-code">getFrame</span> method that you&#39;ll want to be virtual (and likely abstract AKA pure virtual) in the base class.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Thu, 20 Jan 2011 22:14:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899590#target">bamccaig</a> said:</div><div class="quote"><p>I think that J-Gamer starting giving one suggestion and ended up giving a better one.</p></div></div><p>
Did I? <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899590#target">bamccaig</a> said:</div><div class="quote"><p>Ignore the part about the draw method.</p></div></div><p>
I always have a draw() method in each game object. Those functions mostly take (BITMAP* buffer,float x,float y) as parameters. I do it this way, because e.g. my spacecraft has to be drawn in different ways according to a frame and mode variable within the spaceship class.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Fri, 21 Jan 2011 00:03:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, at least you were able to identify that your code looks ugly. That&#39;s an important step. Now you just need a decade or so of experience and you might be able to write some decent code. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (james_lohr)</author>
		<pubDate>Fri, 21 Jan 2011 00:08:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So lets see if I understand . . .</p><p>  I must have a class cObject, a class cRenderer . . .</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="k1">class</span> cObject<span class="k2">{</span> <span class="c">// Create a cObject class that will manager all drawable objects</span>
<span class="number">  2</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">class</span> cRenderer<span class="k2">{</span> <span class="c">// Renderer class</span>
<span class="number">  5</span>  <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>Buffer<span class="k2">;</span>
<span class="number">  6</span>   
<span class="number">  7</span><span class="k1">void</span> Render<span class="k2">(</span>cObject <span class="k3">*</span> object, cCamera <span class="k3">*</span>camera<span class="k2">)</span><span class="k2">{</span>
<span class="number">  8</span>   <a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span>object-&gt;getSprite<span class="k2">(</span><span class="k2">)</span>, Buffer, object-&gt;getFrame<span class="k2">(</span><span class="k2">)</span><span class="k3">*</span>object-&gt;getW<span class="k2">(</span><span class="k2">)</span>,     Object-&gt;getStance<span class="k2">(</span><span class="k2">)</span><span class="k3">*</span>object-&gt;getH<span class="k2">(</span><span class="k2">)</span>, object-&gt;getX <span class="k3">-</span> camera-&gt;getX, object-&gt;getY <span class="k3">-</span>    camera-&gt;getY<span class="k2">(</span><span class="k2">)</span>, object-&gt;getW<span class="k2">(</span><span class="k2">)</span>, object-&gt;getH<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span><span class="k2">}</span>
<span class="number"> 10</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span>
<span class="number"> 13</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 14</span>   std::vector<span class="k3">&lt;</span>cObject <span class="k3">*</span><span class="k3">&gt;</span>Objects<span class="k2">;</span>
<span class="number"> 15</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> Objects.length<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"> 16</span>     Renderer.Render<span class="k2">(</span>Objects<span class="k2">[</span>i<span class="k2">]</span>, <span class="k3">&amp;</span>Camera<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>     <span class="k2">}</span>
<span class="number"> 18</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 19</span><a href="http://www.allegro.cc/manual/END_OF_MAIN"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>
Now my last doubt(I think) .  .<br />First, is this code correct?<br />And, where I put the virtual draw??<br />in the class cObject, in the class cRenderer or in the other classes (player, hud, enemy)??:-/
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Fri, 21 Jan 2011 00:36:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899628#target">Gabriel Campos</a> said:</div><div class="quote"><p>And, where I put the virtual draw??<br />in the class cObject, in the class cRenderer or in the other classes (player, hud, enemy)??:-/</p></div></div><p>
You&#39;re mixing up two concepts here... You can do it by putting a virtual draw function in the cObject class, and making all classes like player,hud,enemy,... members of it with their own non-virtual draw that draws them. OR, you can have a cRenderer class draw function that checks all Objects for their type and draws them accordingly. In the latter, you have all drawing code in the cRenderer class, whereas in the former, you have the corresponding drawing code specified in each of the classes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Fri, 21 Jan 2011 01:05:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899620#target">J-Gamer</a> said:</div><div class="quote"><p>
I do it this way, because e.g. my spacecraft has to be drawn in different ways according to a frame and mode variable within the spaceship class.
</p></div></div><p>
Out of curiosity, what kinds of things vary based on the &quot;frame&quot; and &quot;mode&quot;? <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Fri, 21 Jan 2011 01:50:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Most of the time: which of the bitmaps in the different sequences are drawn.</p><p>I have e.g.: a flying mode, propulsion mode, explosion mode, vanish mode, etc.<br />For the flying mode, nothing special, just a plain spaceship sprite.<br />Propulsion mode: increase frame, draw corresponding bitmap in the propulsion sequence<br />Explosion: idem as propulsion, except it doesn&#39;t loop trough the sequence.<br />vanish mode: get smaller and smaller, according to the frame(amount of frames is set beforehand)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Fri, 21 Jan 2011 02:14:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think you should be able to accomplish all of those with an animation class and possibly a separate interface for spaceship position vs. spaceship sprite position (if those aren&#39;t always the same as the position).</p><p>The <span class="source-code">getSprite<span class="k2">(</span>gameTime<span class="k2">)</span></span> or <span class="source-code">getFrame<span class="k2">(</span>gameTime<span class="k2">)</span></span> method should return an appropriate sprite for the given mode/animation/game time. That way the actual drawing can be handled by a single rendering class and the differences in what are drawn get returned by the individual objects (preferably managed by another class under the surface, like an animation class, if non-trivial). This way your objects don&#39;t need to know anything about the drawing surface, or how to be drawn at all. They only store the data that is their state (including the visual and audio representation) and separate service objects, like our renderer, determine what to do with that data.</p><p><img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Fri, 21 Jan 2011 02:31:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I remember about 15 years ago when I first got started into game coding (at that point I thought there was something magical and complicated about how you display moving things, not knowing it was just a case of blanking the screen and drawing stuff elsewhere), I wondered whether when a player picked up an item and moved with it, whether I had to have a graphic with the player and the item and thought this will take a lot of graphics <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Fri, 21 Jan 2011 07:52:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>/me thinks bamccaig is falling into the OO/C++ trap of overcomplicated, overengineered patterned designs...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Fri, 21 Jan 2011 08:20:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That might be what it sounds like, but in actuality it&#39;s simplifying the design instead of complicating it. Instead of making 20 different redundant calls to <span class="source-code"><a href="http://www.allegro.cc/manual/blit"><span class="a">blit</span></a></span> or <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a></span> or whatever, you make one (or a handful) and everything else just works the same way. Your objects have a visual state and another external class knows how to draw that state (but knows nothing of specific types, like spaceships or moonmen or whathaveyou). It&#39;s actually a lot <i>simpler</i> of a design, but it requires a bit of forethought. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Fri, 21 Jan 2011 09:48:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899689#target">bamccaig</a> said:</div><div class="quote"><p>That might be what it sounds like, but in actuality it&#39;s simplifying the design instead of complicating it.</p></div></div><p>Depends. Every post you come up with more and more complicated patterns to add, for a BEGINNER. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>And no, it isn&#39;t simpler. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Fri, 21 Jan 2011 10:14:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s more complicated language-wise because you need to understand polymorphism, but the solution is simpler than redundantly duplicating the same basic logic over and over again. IIRC, the OP said he was knowledgeable in C++. At least, he seems comfortable enough to be introduced to/reminded of polymorphism and its benefits.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Fri, 21 Jan 2011 11:27:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899711#target">bamccaig</a> said:</div><div class="quote"><p>It&#39;s more complicated language-wise because you need to understand polymorphism</p></div></div><p>And a crap ton of new &quot;design patterns&quot;. I&#39;m not against a little polymprphosm, but springing a bunch of fancy design patterns on a newbie is silly in the extreme.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>At least, he seems comfortable enough to be introduced to/reminded of polymorphism and its benefits.</p></div></div><p>Just my oppinion, but if you haven&#39;t been introduced to Polymorphism, you aren&#39;t comfortable with C++, and you probably aren&#39;t ready for most of the fancy design patterns you are suggesting <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Fri, 21 Jan 2011 11:29:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899712#target">Thomas Fjellstrom</a> said:</div><div class="quote"><p>
And a crap ton of new &quot;design patterns&quot;. I&#39;m not against a little polymprphosm, but springing a bunch of fancy design patterns on a newbie is silly in the extreme.
</p></div></div><p>
You don&#39;t need design patterns to use polymorphism, and there aren&#39;t any design patterns being used here...</p><p>All it is is inheritance, to replicate an interface for different classes, so they can be used interchangeably through a base class pointer.</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="p">#include &lt;allegro.h&gt;</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">class</span> ObjectBase <span class="k2">{</span>
<span class="number">  4</span><span class="k1">protected</span> <span class="k2">:</span>
<span class="number">  5</span>   <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> sprite<span class="k2">;</span>
<span class="number">  6</span>   <span class="k1">int</span> x<span class="k2">;</span>
<span class="number">  7</span>   <span class="k1">int</span> y<span class="k2">;</span>
<span class="number">  8</span><span class="k1">public</span> <span class="k2">:</span>
<span class="number">  9</span>   ObjectBase<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> image , <span class="k1">int</span> xpos , <span class="k1">int</span> ypos<span class="k2">)</span> <span class="k2">:</span> sprite<span class="k2">(</span>image<span class="k2">)</span> , x<span class="k2">(</span>xpos<span class="k2">)</span> , y<span class="k2">(</span>ypos<span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span>
<span class="number"> 10</span>   <span class="k1">virtual</span> <span class="k1">void</span> DrawOn<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> bmp , <span class="k1">int</span> offsetx , <span class="k1">int</span> offsety<span class="k2">)</span> <span class="k1">const</span> <span class="k2">{</span>
<span class="number"> 11</span>      <a href="http://www.allegro.cc/manual/ASSERT"><span class="a">ASSERT</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>      <a href="http://www.allegro.cc/manual/draw_sprite"><span class="a">draw_sprite</span></a><span class="k2">(</span>bmp , sprite , xpos <span class="k3">+</span> offsetx , ypos <span class="k3">+</span> offsety<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>   <span class="k2">}</span>
<span class="number"> 14</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span><span class="k1">class</span> Player <span class="k2">:</span> <span class="k1">public</span> ObjectBase <span class="k2">{</span>
<span class="number"> 17</span><span class="c">// ...</span>
<span class="number"> 18</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span><span class="k1">class</span> Camera <span class="k2">{</span>
<span class="number"> 21</span><span class="k1">protected</span> <span class="k2">:</span>
<span class="number"> 22</span>   <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> background<span class="k2">;</span>
<span class="number"> 23</span>   <span class="k1">int</span> cx<span class="k2">;</span>
<span class="number"> 24</span>   <span class="k1">int</span> cy<span class="k2">;</span>
<span class="number"> 25</span>   <span class="k1">int</span> cw<span class="k2">;</span>
<span class="number"> 26</span>   <span class="k1">int</span> ch<span class="k2">;</span>
<span class="number"> 27</span><span class="k1">public</span> <span class="k2">:</span>
<span class="number"> 28</span>   Camera<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> bg , <span class="k1">int</span> xpos , <span class="k1">int</span> ypos , <span class="k1">int</span> width , <span class="k1">int</span> height<span class="k2">)</span> <span class="k2">:</span>
<span class="number"> 29</span>         background<span class="k2">(</span>bg<span class="k2">)</span> , cx<span class="k2">(</span>xpos<span class="k2">)</span> , cy<span class="k2">(</span>ypos<span class="k2">)</span> , cw<span class="k2">(</span>width<span class="k2">)</span> , ch<span class="k2">(</span>height<span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span>
<span class="number"> 30</span>   <span class="k1">void</span> SetPos<span class="k2">(</span><span class="k1">int</span> xpos , <span class="k1">int</span> ypos<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 31</span>      <span class="c">//... adjust xpos and ypos to make sure the camera doesn't go 'offworld'</span>
<span class="number"> 32</span>      cx <span class="k3">=</span> xpos<span class="k2">;</span>
<span class="number"> 33</span>      cy <span class="k3">=</span> ypos<span class="k2">;</span>
<span class="number"> 34</span>   <span class="k2">}</span>
<span class="number"> 35</span>   <span class="k1">void</span> DrawBackground<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> bmp , <span class="k1">int</span> x , <span class="k1">int</span> y<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 36</span>      <a href="http://www.allegro.cc/manual/ASSERT"><span class="a">ASSERT</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>      <a href="http://www.allegro.cc/manual/blit"><span class="a">blit</span></a><span class="k2">(</span>background , buffer , cx , cy , x , y , cw , ch<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>   <span class="k2">}</span>
<span class="number"> 39</span>   <span class="k1">int</span> X<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> cx<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 40</span>   <span class="k1">int</span> Y<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> cy<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 41</span><span class="k2">}</span>
<span class="number"> 42</span>
<span class="number"> 43</span><span class="k1">class</span> World <span class="k2">{</span>
<span class="number"> 44</span><span class="k1">protected</span> <span class="k2">:</span>
<span class="number"> 45</span>   vector<span class="k3">&lt;</span>ObjectBase<span class="k3">*</span><span class="k3">&gt;</span> objects<span class="k2">;</span>
<span class="number"> 46</span><span class="k1">public</span> <span class="k2">:</span>
<span class="number"> 47</span>   <span class="k1">void</span> DrawOn<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> bmp , <span class="k1">const</span> Camera<span class="k3">&amp;</span> cam<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 48</span>      <a href="http://www.allegro.cc/manual/ASSERT"><span class="a">ASSERT</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span>      cam.DrawBackground<span class="k2">(</span>bmp , <span class="n">0</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>      <span class="k1">int</span> camx <span class="k3">=</span> cam.X<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span>      <span class="k1">int</span> camy <span class="k3">=</span> cam.Y<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</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> objects.size<span class="k2">(</span><span class="k2">)</span> <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 53</span>         objects-&gt;DrawOn<span class="k2">(</span>bmp , <span class="k3">-</span>camx , <span class="k3">-</span>camy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 54</span>      <span class="k2">}</span>
<span class="number"> 55</span>   <span class="k2">}</span>
<span class="number"> 56</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 21 Jan 2011 12:28:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899717#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>You don&#39;t need design patterns to use polymorphism, and there aren&#39;t any design patterns being used here...</p></div></div><p>I was talking about some of the stuff bamccaig was proposing. Fancy adapters and MVC...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Fri, 21 Jan 2011 13:14:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Good use of polymorphism as I said above helps you with loose coupling. What&#39;s worse - having a bit of thought before you write your code, or turning your code into spaghetti within a few weeks with either 30 case statements in a method or 10 methods that do the same thing but slightly different and having to remember what they all are?</p><p>I agree design patterns can be bad in the wrong hands and they do over-complicate things, but where it&#39;s relevant it makes things better. For example, most people end up coding using the Strategy, Adapter and Facade pattern without even realising it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Fri, 21 Jan 2011 18:33:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, lets some code:
</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="k1">class</span> cObject<span class="k2">{</span> <span class="c">// This class will handle all objects in the game</span>
<span class="number">  2</span>  private:      
<span class="number">  3</span>          <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>Buffer<span class="k2">;</span>
<span class="number">  4</span>  public:
<span class="number">  5</span>         <span class="k1">virtual</span> <span class="k1">void</span> Draw<span class="k2">(</span>cObject <span class="k3">*</span>Object, cCamera <span class="k3">*</span>Camera<span class="k2">)</span><span class="k2">{</span>
<span class="number">  6</span>          <span class="c">// here comes a little doubt.. what to put here?</span>
<span class="number">  7</span> <span class="c">// Maybe this? masked_blit(Object-&gt;GetSprite(), Buffer, Object-&gt;GetFrame() * Object-&gt;GetW(), Object-&gt;GetStance() * Object-&gt;GetH(), Object-&gt;Getx(), Object-&gt;Gety(), Object-&gt;GetW(), Object-&gt;GetH());</span>
<span class="number">  8</span><span class="k2">}</span>
<span class="number">  9</span>
<span class="number"> 10</span>   <span class="k1">void</span> UpdateScreen<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 11</span>     <a href="http://www.allegro.cc/manual/draw_sprite"><span class="a">draw_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a>, Buffer, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span><span class="k2">}</span>
<span class="number"> 13</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>.............................................................................
<span class="number"> 16</span>
<span class="number"> 17</span><span class="k1">class</span> cPlayer <span class="k2">:</span> <span class="k1">public</span> cObject<span class="k2">{</span>
<span class="number"> 18</span>  private:
<span class="number"> 19</span>          <span class="k1">int</span> x, y, W, H ..... <span class="c">// or maybe put this variables in the cObject class, because is common in all objects</span>
<span class="number"> 20</span>          <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>Sprite<span class="k2">;</span>
<span class="number"> 21</span>  public:
<span class="number"> 22</span>         <span class="k1">void</span> Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span> <span class="c">// Here I declare the Draw in Normal?? This Way?</span>
<span class="number"> 23</span>            <a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span>Sprite, Buffer, Frame <span class="k3">*</span> W, Stance <span class="k3">*</span> H, x, y, W, H<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span><span class="k2">}</span>
<span class="number"> 25</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 26</span>
<span class="number"> 27</span>.............................................................................
<span class="number"> 28</span>
<span class="number"> 29</span><span class="k1">class</span> cCamera<span class="k2">{</span>
<span class="number"> 30</span>   <span class="k1">int</span> x, y....<span class="c">//and others definitions</span>
<span class="number"> 31</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 32</span>
<span class="number"> 33</span>..............................................................................
<span class="number"> 34</span>
<span class="number"> 35</span><span class="p">#include &lt;vector&gt;</span>
<span class="number"> 36</span>
<span class="number"> 37</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 38</span>  std::vector<span class="k3">&lt;</span>cObject <span class="k3">*</span><span class="k3">&gt;</span>Objects<span class="k2">;</span>
<span class="number"> 39</span>
<span class="number"> 40</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> Objects.lenght<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"> 41</span>  Objects<span class="k2">[</span>i<span class="k2">]</span>.Draw<span class="k2">(</span><span class="k3">&amp;</span>Player, <span class="k3">&amp;</span>Camera<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span><span class="k2">}</span>
<span class="number"> 43</span><a href="http://www.allegro.cc/manual/END_OF_MAIN"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>
Please, help me...I am learning a lot here... <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Fri, 21 Jan 2011 20:36:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>if you have sprites then a good idea is to let the renderer class handle it.just make a spriteholder class(basically a class with a map/list/vector&lt;string,Sprite*&gt; of all the Sprites in your level or even the whole game though it&#39;s not advised) and whenever you instantiate a sprite you register it(insert it) in the sprite holder(&#39;s map/list/vector).so in the game loop the first thing you do is call the renderer and have it blit everything visible on the screen and afterward do every other calculation to change the state of the game,player,character etc so that in the next loop the renderer has all the updated info on the sprites including the new destination point and possibly another frame of the same film.</p><p>i&#39;m currently taking a course in my uni for 2D bitmapped games and this is the way we are doing it.it&#39;s simple enough imo.then again it might not fit in this situation,i didn&#39;t really see the code but it&#39;s a good concept to know.and you don&#39;t need to implement any design patterns.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jhetfield21)</author>
		<pubDate>Fri, 21 Jan 2011 21:50:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This is my take:<br />(I renamed cObject to cSprite because the name Object can cause a lot of confusion in c++.)
</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="k1">class</span> cSprite<span class="k2">{</span> <span class="c">// This class will handle all moving bitmap objects in the game</span>
<span class="number">  2</span>          cSprite<span class="k2">(</span><span class="k2">)</span>
<span class="number">  3</span>          <span class="k2">{</span>
<span class="number">  4</span>              Sprite<span class="k3">=</span>NULL<span class="k2">;</span> <span class="c">// Default: invisible (and non-crashing :) )</span>
<span class="number">  5</span>          <span class="k2">}</span>
<span class="number">  6</span>  public:
<span class="number">  7</span>          <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>Sprite<span class="k2">;</span> <span class="c">// This points to an already allocated bitmap, or NULL when the object is invisible.</span>
<span class="number">  8</span>          <span class="k1">int</span> X, Y<span class="k2">;</span> <span class="c">// Position in pixels, in "world" coordinates.</span>
<span class="number">  9</span>          <span class="k1">int</span> W, H<span class="k2">;</span> <span class="c">// Any other members that all your cSprites need).</span>
<span class="number"> 10</span>          <span class="k1">virtual</span> <span class="k1">void</span> LogicUpdate<span class="k2">(</span><span class="k1">int</span> tick<span class="k2">)</span><span class="k2">;</span> <span class="c">// Called once per game tick (assuming fixed-step timing). Has to be implemented by each derived class.</span>
<span class="number"> 11</span><span class="k2">}</span>
<span class="number"> 12</span>
<span class="number"> 13</span>   <span class="k1">void</span> Draw<span class="k2">(</span>cCamera <span class="k3">*</span>cam, <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>target_buffer<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 14</span>     <span class="k1">if</span> <span class="k2">(</span>Sprite<span class="k3">=</span><span class="k3">=</span>NULL<span class="k2">)</span>
<span class="number"> 15</span>         <span class="k1">return</span><span class="k2">;</span> <span class="c">// To make an object invisible, set its Sprite to NULL;</span>
<span class="number"> 16</span>     <a href="http://www.allegro.cc/manual/draw_sprite"><span class="a">draw_sprite</span></a><span class="k2">(</span>target_buffer, Sprite, X <span class="k3">-</span> cam-&gt;Offset_X, Y <span class="k3">-</span> cam-&gt;Offset_Y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span><span class="k2">}</span>
<span class="number"> 18</span>
<span class="number"> 19</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 20</span>
<span class="number"> 21</span>.............................................................................
<span class="number"> 22</span>
<span class="number"> 23</span><span class="k1">class</span> cPlayer <span class="k2">:</span> <span class="k1">public</span> cObject<span class="k2">{</span>
<span class="number"> 24</span>  public:
<span class="number"> 25</span>
<span class="number"> 26</span>    cPlayer<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 27</span>    <span class="k2">{</span>
<span class="number"> 28</span>        <span class="c">// Initial position</span>
<span class="number"> 29</span>        X<span class="k3">=</span><span class="n">100</span><span class="k2">;</span>
<span class="number"> 30</span>        Y<span class="k3">=</span><span class="n">100</span><span class="k2">;</span>
<span class="number"> 31</span>    <span class="k2">}</span>
<span class="number"> 32</span>   
<span class="number"> 33</span>    <span class="k1">void</span> LogicUpdate<span class="k2">(</span><span class="k1">int</span> tick<span class="k2">)</span> <span class="c">// Logic for player, not very interactive here.</span>
<span class="number"> 34</span>    <span class="k2">{</span>
<span class="number"> 35</span>        Sprite <span class="k3">=</span> Player_sprite<span class="k2">[</span><span class="n">10</span> <span class="k3">+</span> <span class="k2">(</span><span class="k2">(</span>tick<span class="k3">/</span><span class="n">6</span><span class="k2">)</span> % <span class="n">4</span><span class="k2">)</span><span class="k2">]</span><span class="k2">;</span> <span class="c">// Changes the image once every 6 ticks, and uses sprites 10 to 13 for an array.</span>
<span class="number"> 36</span>        X <span class="k3">=</span> <span class="k2">(</span>tick % <span class="n">200</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">100</span><span class="k2">;</span> <span class="c">// Moves from 100 to 300, 1 pixel per tick, then warp back and repeat.</span>
<span class="number"> 37</span>    <span class="k2">}</span>  
<span class="number"> 38</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 39</span>
<span class="number"> 40</span>..............................................................................
<span class="number"> 41</span>
<span class="number"> 42</span><span class="p">#include &lt;vector&gt;</span>
<span class="number"> 43</span>
<span class="number"> 44</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 45</span>  std::vector<span class="k3">&lt;</span>cSprite <span class="k3">*</span><span class="k3">&gt;</span> Sprites<span class="k2">;</span>
<span class="number"> 46</span>
<span class="number"> 47</span><span class="c">// Code for redrawing all screen:</span>
<span class="number"> 48</span><span class="c">// Erase all here</span>
<span class="number"> 49</span>...
<span class="number"> 50</span><span class="c">// Draw all sprites</span>
<span class="number"> 51</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> Objects.length<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"> 52</span>  Objects<span class="k2">[</span>i<span class="k2">]</span>.Draw<span class="k2">(</span><span class="k3">&amp;</span>Camera, <a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 53</span><span class="k2">}</span>
<span class="number"> 54</span>
<span class="number"> 55</span>....
<span class="number"> 56</span>
<span class="number"> 57</span><span class="c">// Code for the logic of *** all the game*** :</span>
<span class="number"> 58</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> Objects.length<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"> 59</span>  Objects<span class="k2">[</span>i<span class="k2">]</span>.LogicUpdate<span class="k2">(</span>current_frame<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</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/END_OF_MAIN"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>

I didn&#39;t want to make this too complex, but note that the sprites will be displayed in the order of the collection (vector) : last ones are &quot;above&quot;.<br />In my own games, Sprite has a member called Priority, and I build a collection for displaying (I omit the invisible sprites at this step) then I sort this collection by Priority, before browsing it to call Draw().
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Fri, 21 Jan 2011 23:00:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>you have to have priority given one way or the other if you want your characters to be able to go behind graphics as well.<br />this is called z-ordering.where each priority value represents something like a layer of graphics.where the layer with the lowest priority is the background,the next priority is anything else static or not that you always want your character or other characters to pass in front of,then it&#39;s your player&#39;s character with any other characters/enemies and stuff and then the highest priority is the layer with all graphics that you want your character or others to pass behind of.this is just an example nothing more.you can have more or less layers depending on what you want to do.</p><p>and principally Audric&#39;s solution is the same as what i said.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jhetfield21)</author>
		<pubDate>Fri, 21 Jan 2011 23:18:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899521#target">Neil Walker</a> said:</div><div class="quote"><p>The drawback is a slight overhead in determining the correct method to call.</p></div></div><p>
ehh... I didn&#39;t know virtual functions cause overhead... BTW, what is overhead exactly(srr for the noobish question)</p><p>@bamccaig:<br />I always have the drawing code in a draw function in each class that is to be displayed on screen. It&#39;s easier to debug them because you know where to find the exact drawing code your looking for. In a cRenderer that checks the type etc, you&#39;ll have a LOT of get-functions, so you&#39;ll have to put all those in the classes as well. As you&#39;re looping trough an array of objects, the get-functions need to be declared in the object functions, but not all objects share the same properties. E.g.: a spaceship needs multiple bitmap vectors/arrays to store different animation sequences. a black hole/planet only needs one bitmap.<br />Because of this, you <b>could</b> have a virtual getcurrentbitmap() function or something like that in the object class, but that would completely destroy the purpose of an external renderer. You can as well have a draw function in your class.<br />In my case, the only purpose of a renderer is to sort the objects by depth and move the drawing calls out of your main loop, to avoid messy code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Sat, 22 Jan 2011 00:09:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>overhead is a term to describe the excess work that the CPU or any other part of the pc has to do when given a difficult task.for example if you call too many functions then you get an overhead in the call stack.you make too many records of function calls when you could have made less to attain the same goal.another example of overhead is polling.before interrupts where implemented the CPU had to poll the hard disk to see if a transaction had ended thus having to queue many other processes and perform context switches all the time just to make sure the transaction of a data transfer was completed.then interrupts came and then DMA.when a data transfer needs to be done it is approved and started and then DMA manages it until it&#39;s finished without having the CPU involved.</p><p>And virtual functions cause a little overhead because every object uses late binding to determine which function to use,that of the super class or the derived.but i don&#39;t think it&#39;s such an overhead to even be mentioned.i mean with today&#39;s hardware and all the object oriented programs in c++ lying around and very often well known ones at that you can see it doesn&#39;t pose a problem.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jhetfield21)</author>
		<pubDate>Sat, 22 Jan 2011 00:36:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;d say overhead is best described by the computer doing at runtime with brute force what you were too lazy to do with your brain at program design time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Sat, 22 Jan 2011 00:38:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i hadn&#39;t thought of it like that....interesting <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jhetfield21)</author>
		<pubDate>Sat, 22 Jan 2011 00:45:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The very slight overhead with virtual methods is because the program has to lookup the function in a vtable at run-time (every time the method is called using a pointer or reference). It&#39;s this very mechanism that allows inheritance and polymorphism. Nearly every language that supports these concepts will implement it in a similar way. It&#39;s nothing to be concerned about. It will almost never be a bottleneck in your code.</p><p>@J-Gamer: <tt>/me is writing an example program.</tt> It&#39;s nearly 500 lines and counting, but that initial overhead should be outweighed by the code reuse later on (in a real game, when there&#39;s many different types of objects to be drawn). I think all I should have to do now is A5 stuff (initializing A5, loading some bitmaps, etc.). Well, and then debug it. <img src="http://www.allegro.cc/forums/smileys/lipsrsealed.gif" alt=":-X" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Sat, 22 Jan 2011 01:25:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899791#target">J-Gamer</a> said:</div><div class="quote"><p>a spaceship needs multiple bitmap vectors/arrays to store different animation sequences. </p></div></div><p>
Hmmmm be careful that &quot;each instance of a spaceship&quot; doesn&#39;t need it.</p><p>For small games, you should load such bitmaps once, on startup, and release them once, when quitting program.</p><p>Putting them as static members of each game object&#39;s class isn&#39;t an universal solution either : It prevents you from having several game elements that &quot;share&quot; the same image: For example a &quot;computer-controlled allied ship&quot; that needs the same sprites as the player ship.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Sat, 22 Jan 2011 02:12:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think the Speed game included in the latest Allegro 5 releases demonstrates well a situation where you render the same objects in different ways:<br /><div class="media-player youtube"><div style="margin: 1em 2em; background: url(/images/movie.png); width: 180px; height: 100px; text-align: center;"><a href="http://www.allegro.cc//www.youtube.com/watch?v=N1tWcT8DMgc" target="_blank"><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/object/9/2/920fda6ddd2de96c482285864514623c.jpg" border="0" alt="video" title="Click to play video" /></a></div></div><br />Having draw methods for each of these different camera styles for each object would be complicated, while different renderers could do this just by having different attributes(Screen position and size as well).</p><p>While the Speed game is pure C, it uses different &quot;view&quot; structures for rendering the same game objects.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dario ff)</author>
		<pubDate>Sat, 22 Jan 2011 02:22:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899351#target">Gabriel Campos</a> said:</div><div class="quote"><p>
void cObject::Draw(cObject *Object, cCamera *Camera) {...}
</p></div></div><p>
You don&#39;t want to include a parameter for the cObject in cObject::Draw because it is already there in the hidden &#39;this&#39; parameter.</p><div class="quote_container"><div class="title">Gabriel Campos said:</div><div class="quote"><p>
class cPlayer : public cObject{<br />...<br />   void Draw();<br />...<br />};
</p></div></div><p>
Note that cPlayer::Draw() is not derived from your virtual cObject::Draw(cObject* Object , cCamera* Camera) function. They have two different function signatures. You&#39;re overloading the name, but not the function. The function signature of your Draw function in CPlayer should match the function signature of Draw in the cObject base class :
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">class</span> Base <span class="k2">{</span>
...
   <span class="k1">virtual</span> <span class="k1">void</span> Function<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>

<span class="k1">class</span> Derived <span class="k2">:</span> <span class="k1">public</span> Base <span class="k2">{</span>
...
   <span class="k1">void</span> Function<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span><span class="c">// correct, function signatures match</span>
   <span class="k1">void</span> Function<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="c">// incorrect, function signatures are different</span>
<span class="k2">}</span>
</pre></div></div><p>

You might want to take a look at the cplusplus.com <a href="http://www.cplusplus.com/doc/tutorial/">tutorial</a>, or the section on <a href="http://www.cplusplus.com/doc/tutorial/polymorphism/">polymorphism</a>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 22 Jan 2011 10:27:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I kept it all in one file to keep it simple on the forum, but I would put each class in its own header and source file <i>for real</i>. The actual main program stuff is hacked in and hard coded, but the polymorphic API is what matters anyway. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> Sadly, I have noticed one annoying shortcoming of my particular implementation. The player has dynamic dimensions. In order to retrieve them you need to query the current animation for the current frame, which requires the current animation to be set and started, and therefore requires game time as well. It&#39;s a little bit heavy doing all of that to determine the width and height, but one could always code static dimensions if they needed it to be cheaper/easier. The only reason I really needed it was to center the &quot;player&quot; on the screen for aesthetic reasons. I was able to get it done with prior knowledge anyway.</p><p>The code is pretty long. I counted 745 lines using <tt>wc</tt>. It&#39;s obviously a lot of overhead for what little it accomplishes in this simple example, but the code is reusable now. You can create <i>n</i> different types of objects that follow these same interfaces. It should save a lot of code, though you may find the interfaces need revision to deal with cases that I haven&#39;t accounted for.</p><p>The program mostly just dumps errors and exits if anything goes wrong, but it doesn&#39;t have to. It&#39;s built using RAII types and exception handling, so in theory it should be easy to handle errors gracefully (as can be seen in the drawing section of the main loop). I will say this: it&#39;s a lot easier to write this sort of code using Allegro 5 than it was with Allegro 4. <a href="http://code.google.com/p/intern-quest">Intern&#39;s Quest</a><span class="ref"><sup>[<a href="#">1</a>]</sup></span> wasn&#39;t designed as well as this from the start (though I learned a lot from it that lead me to here). That aside, it was still a lot more difficult to write because of all of the global state in Allegro 4 that we had to try to wrap and work around. With Allegro 5 there&#39;s less global state to deal with, and the global state that you are stuck with is already neatly hidden beneath interfaces. If I wore hats I would take one of them off to honor the developers! <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><h4>Teh Codez</h4><p>

<i>(A.cc seems to be wrongly counting my post as 90 KB long, when in fact it&#39;s only 19 KB long, so I&#39;m forced to <i>attach</i> the code and link to it instead of inlining it, which would have been a much more convenient way to read it IMHO, but I digress)</i></p><pre>           (see below)</pre><p>
<tt>that --&gt; <a href="http://www.allegro.cc/files/attachment/603167">al5polytut.tar.gz</a>    &lt;-- that</tt>
</p><pre>            ^ this</pre><p>

The following QnD GNU Makefile was used during the development of this demonstration and could be used to build it given a compatible platform.
</p><div class="source-code"><div class="toolbar"><span class="name">Makefile</span><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>al5polytut: main.cpp
<span class="number"> 2</span>  g<span class="k3">+</span><span class="k3">+</span> <span class="k3">-</span>o $@ <span class="k3">-</span>Wall main.cpp `pkg-config <span class="k3">-</span><span class="k3">-</span>cflags <span class="k3">-</span><span class="k3">-</span>libs allegro-5.1`
</div></div><p>
If you&#39;re on an incompatible platform then you&#39;ll just need to know how to compile a single C++ source file and link to the core of Allegro 5. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p><i>Meh.</i> This is the way that I like to code. It&#39;s more fun for me, but then I&#39;ve never finished a game... <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> I also find it a lot easier to work with though. It&#39;s a lot less error prone because you&#39;re writing once instead of writing over and over again.</p><p>The code could still use revision, but I think it&#39;s a pretty good start. If anybody actually finds it useful enough to use directly in a game then I would appreciate a mention in any credits or whatever, but I&#39;m not going to demand it. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p><i>Update: moving camera now so you can see it working.</i>
</p><div class="ref-block"><h2>References</h2><ol><li>The project is stalled, but planned to be one day resurrected. It has also been moved to <a href="https://github.com/bamccaig/intern-quest-old/network/members">GitHub</a>.</li></ol></div></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Sun, 23 Jan 2011 10:27:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899856#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>
You don&#39;t want to include a parameter for the cObject in cObject::Draw because it is already there in the hidden &#39;this&#39; parameter.
</p></div></div><p>
So, if a I understand i can do this
</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="k1">class</span> cObject<span class="k2">{</span>
<span class="number">  2</span>    private:
<span class="number">  3</span>          <span class="k1">int</span> x, y, W, H<span class="k2">;</span> <span class="c">// all objects will inherit these variables</span>
<span class="number">  4</span>   
<span class="number">  5</span>    public:
<span class="number">  6</span>           <span class="k1">virtual</span> <span class="k1">void</span> Draw<span class="k2">(</span>cCamera <span class="k3">*</span>Camera<span class="k2">)</span><span class="k2">{</span>
<span class="number">  7</span>             <a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span>this-&gt;sprite, Buffer, this-&gt;frame<span class="k3">*</span>this-&gt;W, this-&gt;stance<span class="k3">*</span>this-&gt;H, this-&gt;x, this-&gt;y, this-&gt;W, this-&gt;H<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span><span class="k2">}</span>
<span class="number">  9</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>
Sorry if I am wrong...I am studying and trying to learn...is a bit dificulty <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" /><br />Thanx for the advice of the virtual function...so it must be exactlly equal to the derived classes functions...and thanx to the site..very good...<br />I am working now <img src="http://www.allegro.cc/forums/smileys/angry.gif" alt="&gt;:(" />, in home I will read with attention . ..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Mon, 24 Jan 2011 20:37:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900080#target">Gabriel Campos</a> said:</div><div class="quote"><p>
So, if a I understand i can do this
</p></div></div><p>

When writing a class method, you don&#39;t need to use the <i>this</i> pointer to refer to data members, but you can if it helps you keep your code straight. You probably don&#39;t want to hardcode <i>Buffer</i> into your classes either, but use a parameter for the bitmap to draw to.</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="number">  2</span><span class="k1">class</span> cObject<span class="k2">{</span>
<span class="number">  3</span>private:
<span class="number">  4</span>   <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> sprite<span class="k2">;</span>
<span class="number">  5</span>   <span class="k1">int</span> x, y, W, H<span class="k2">;</span> <span class="c">// all derived classes will inherit these variables</span>
<span class="number">  6</span>
<span class="number">  7</span>public:
<span class="number">  8</span>   <span class="k1">virtual</span> <span class="k1">void</span> Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> dest , cCamera <span class="k3">*</span>Camera<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  9</span>      <a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span>sprite , dest , <span class="n">0</span> , <span class="n">0</span> , x <span class="k3">-</span> Camera-&gt;x , y <span class="k3">-</span> Camera-&gt;y , W , H<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>   <span class="k2">}</span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span><span class="k1">enum</span> STANCES <span class="k2">{</span>
<span class="number"> 15</span>   CROUCH_LEFT <span class="k3">=</span> <span class="n">0</span>,
<span class="number"> 16</span>   CROUCH_RIGHT <span class="k3">=</span> <span class="n">1</span>,
<span class="number"> 17</span>   STAND_LEFT <span class="k3">=</span> <span class="n">2</span>,
<span class="number"> 18</span>   STAND_RIGHT <span class="k3">=</span> <span class="n">3</span>
<span class="number"> 19</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 20</span>
<span class="number"> 21</span><span class="p">#define NUM_STANCES 4</span>
<span class="number"> 22</span><span class="p">#define NUM_FRAMES 4</span>
<span class="number"> 23</span>
<span class="number"> 24</span><span class="k1">class</span> Player <span class="k2">:</span> <span class="k1">public</span> cObject <span class="k2">{</span>
<span class="number"> 25</span><span class="k1">private</span> <span class="k2">:</span>
<span class="number"> 26</span>   <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> frames<span class="k2">[</span>NUM_STANCES<span class="k2">]</span><span class="k2">[</span>NUM_FRAMES<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 27</span>   STANCES stance<span class="k2">;</span>
<span class="number"> 28</span>   <span class="k1">int</span> frame_num<span class="k2">;</span>
<span class="number"> 29</span>
<span class="number"> 30</span><span class="k1">public</span> <span class="k2">:</span>
<span class="number"> 31</span>   <span class="k1">void</span> SetStance<span class="k2">(</span>STANCES new_stance<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 32</span>      stance <span class="k3">=</span> new_stance<span class="k2">;</span>
<span class="number"> 33</span>      frame_num <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 34</span>      sprite <span class="k3">=</span> frames<span class="k2">[</span>stance<span class="k2">]</span><span class="k2">[</span>frame_num<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 35</span>   <span class="k2">}</span>
<span class="number"> 36</span>   <span class="c">// No need to redefine cObject::Draw here, but you can if you like :</span>
<span class="number"> 37</span>   <span class="k1">virtual</span> <span class="k1">void</span> Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> dest , cCamera<span class="k3">*</span> Camera<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 38</span>      cObject::Draw<span class="k2">(</span>dest , Camera<span class="k2">)</span><span class="k2">;</span><span class="c">// call the base class method until we decide otherwise</span>
<span class="number"> 39</span>   <span class="k2">}</span>
<span class="number"> 40</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 25 Jan 2011 01:22:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Isn&#39;t it also better to have the x and y variables of cCamera private? This to prevent accidental changes of these values. Just have a getX() and getY() function in the class.</p><p>With accidental changes, I mean like looking over something like this:<br /><span class="source-code"><span class="k1">if</span><span class="k2">(</span>camera.y<span class="k3">=</span><span class="n">0</span><span class="k2">)</span></span><br />instead of<br /><span class="source-code"><span class="k1">if</span><span class="k2">(</span>camera.y<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span></span><br />If they&#39;re private, the compiler will throw an error here... If not, each time this if-statement is called, the code underneath will execute and camera.y will be set to 0.</p><p>I had this problem a lot when learning C++ after I had been programming in a BASIC language for a long time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Tue, 25 Jan 2011 01:35:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/899859#target">bamccaig</a> said:</div><div class="quote"><p>(A.cc seems to be wrongly counting my post as 90 KB long, when in fact it&#39;s only 19 KB long, so I&#39;m forced to attach the code and link to it instead of inlining it, which would have been a much more convenient way to read it IMHO, but I digress)</p></div></div><p>It counts the actual size of the post-processed contents, after its done transforming bb-code and &lt;code&gt; tags, and highlighting code causes the size to bloat up significantly.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 25 Jan 2011 01:46:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>J-Gamer: use the -Wall option of gcc to get warnings on all suspicious code, and it will warn you on each &quot;if (x=y)&quot;.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Tue, 25 Jan 2011 15:13:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My Solution:
</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="k1">class</span> cObject<span class="k2">{</span> <span class="c">// this class will handle all objects...</span>
<span class="number">  2</span>            
<span class="number">  3</span>  public:
<span class="number">  4</span>       <span class="k1">virtual</span> <span class="k1">void</span> GetX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Dont need to comment...</span>
<span class="number">  5</span>       <span class="k1">virtual</span> <span class="k1">void</span> GetY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>       <span class="k1">virtual</span> <span class="k1">void</span> GetW<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>       <span class="k1">virtual</span> <span class="k1">void</span> GetH<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>       <span class="k1">virtual</span> <span class="k1">void</span> GetImage<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>         <span class="c">// and other virtual functions used to draw</span>
<span class="number"> 10</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span>...............................................................................
<span class="number"> 13</span>
<span class="number"> 14</span><span class="k1">class</span> cDrawManager<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 15</span>
<span class="number"> 16</span>  private:
<span class="number"> 17</span>          <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>Buffer<span class="k2">;</span> <span class="c">// Edgar Reynaldo said to not use buffer here, but I couldn't understand why..someone give me a light</span>
<span class="number"> 18</span>          <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>Sprite<span class="k2">[</span>x<span class="k2">]</span><span class="k2">;</span> <span class="c">// x will be the number of all sprites in the game</span>
<span class="number"> 19</span> 
<span class="number"> 20</span> public:
<span class="number"> 21</span>        <span class="k1">void</span> Draw<span class="k2">(</span>cObject <span class="k3">*</span>Object, cCamera <span class="k3">*</span>Camera<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 22</span>          <a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span>Sprite<span class="k2">[</span>Object-&gt;GetImage<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span>, Buffer, Object-&gt;GetFrame<span class="k2">(</span><span class="k2">)</span> <span class="k3">*</span> Object-&gt;GetW<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetStance<span class="k2">(</span><span class="k2">)</span> <span class="k3">*</span> Object-&gt;GetH<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetX<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> Camera-&gt;GetX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetY<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> Camera-&gt;GetY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetW<span class="k2">(</span><span class="k2">)</span>, Object-&gt;GetH<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>       <span class="k2">}</span>
<span class="number"> 24</span>
<span class="number"> 25</span>        <span class="k1">void</span> DrawScreen<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 26</span>           <a href="http://www.allegro.cc/manual/draw_sprite"><span class="a">draw_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a>, Buffer, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>       <span class="k2">}</span>
<span class="number"> 28</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 29</span>
<span class="number"> 30</span>.................................................................................
<span class="number"> 31</span>
<span class="number"> 32</span><span class="k1">class</span> cPlayer <span class="k2">:</span> <span class="k1">public</span> cObject<span class="k2">{</span>
<span class="number"> 33</span>  
<span class="number"> 34</span>  private:
<span class="number"> 35</span>          <span class="k1">int</span> x, y, W, H, Image<span class="k2">;</span> <span class="c">// and all variables (I can put in the cObject too)</span>
<span class="number"> 36</span>
<span class="number"> 37</span>  public:
<span class="number"> 38</span>        <span class="k1">void</span> GetX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// All functions derived from virtual function of cObject class...</span>
<span class="number"> 39</span>        <span class="k1">void</span> GetY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>        <span class="k1">void</span> GetW<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>        <span class="k1">void</span> GetH<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>        <span class="k1">void</span> GetImage<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span><span class="k2">}</span><span class="k2">;</span> <span class="c">// Dont need make any draw function in the player </span>
<span class="number"> 44</span><span class="c">// All objects will follow this recipe..</span>
<span class="number"> 45</span>
<span class="number"> 46</span>..................................................................................
<span class="number"> 47</span>
<span class="number"> 48</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 49</span>     cDrawManager DrawManager<span class="k2">;</span>
<span class="number"> 50</span>     cPlayer Player<span class="k2">;</span>
<span class="number"> 51</span>     cCamera Camera<span class="k2">;</span>
<span class="number"> 52</span>
<span class="number"> 53</span><span class="k1">while</span><span class="k2">(</span>...<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 54</span>  DrawManager.Draw<span class="k2">(</span><span class="k3">&amp;</span>Player, <span class="k3">&amp;</span>Camera<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 55</span>  DrawManager.DrawScreen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// if there is some problem with buffer in the DrawManager class I can send from here as a parameter (DrawScreen(Buffer); :)</span>
<span class="number"> 56</span><span class="k2">}</span>
</div></div><p>
This is the solution I liked...Suggestions will be very apreciate..<br />But I still have doubts...<br />I create a vector and doesnt work... <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":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="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="p">#include &lt;vector&gt;</span>
<span class="number">  3</span>  
<span class="number">  4</span> std::vector<span class="k3">&lt;</span>cDrawManager <span class="k3">*</span><span class="k3">&gt;</span> SpriteObjects<span class="k2">;</span>
<span class="number">  5</span> 
<span class="number">  6</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> SpriteObjects.length<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">  7</span>   DrawManager.Draw<span class="k2">(</span>SpriteObjects<span class="k2">[</span>i<span class="k2">]</span>, <span class="k3">&amp;</span>Camera<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span> <span class="k2">}</span>
</div></div><p>
The compiler says that vector SpriteObjects has no member named length();<br />If I use .size(), .capacity(), it accepts....but not length()..<br />I use allegro 4.2 and DevC++...<br />  Someone??? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Tue, 25 Jan 2011 21:01:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900202#target">Gabriel Campos</a> said:</div><div class="quote"><p>The compiler says that vector SpriteObjects has no member named length();</p></div></div><p>
That&#39;s because std::vector doesn&#39;t have a <span class="source-code">length<span class="k2">(</span><span class="k2">)</span></span> member function. The one you&#39;re after is <span class="source-code">size<span class="k2">(</span><span class="k2">)</span></span>. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Tue, 25 Jan 2011 21:04:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok..but when a put size it doesnt draw anything on screen...<br />Sorry if I am making a topic too long...<br />What is the problem with my logic??
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Tue, 25 Jan 2011 21:07:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;re either showing us parts of your program or you&#39;re forgetting to actually initialize your objects and draw to the screen. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> If you&#39;re still having issues, show us the full program. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Tue, 25 Jan 2011 21:41:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Also: the code you&#39;re giving us shouldn&#39;t even compile...
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span>Sprite<span class="k2">[</span>Object-&gt;GetImage<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span>, Buffer, Object-&gt;GetFrame<span class="k2">(</span><span class="k2">)</span> <span class="k3">*</span> Object-&gt;GetW<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetStance<span class="k2">(</span><span class="k2">)</span> <span class="k3">*</span> Object-&gt;GetH<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetX<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> Camera-&gt;GetX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetY<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> Camera-&gt;GetY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetW<span class="k2">(</span><span class="k2">)</span>, Object-&gt;GetH<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Tue, 25 Jan 2011 21:43:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://">gnolam</a> said:</div><div class="quote"><p>
Also: the code you&#39;re giving us shouldn&#39;t even compile...
</p></div></div><p>
Why?? I couldnt realize . . .<br />I make all functions of get() virtual....</p><p>well, <br />  I will try later in home...If doesnt work i will post here . .
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Tue, 25 Jan 2011 22:25:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900184#target">Quote</a>:</div><div class="quote"><p>J-Gamer: use the -Wall option of gcc to get warnings on all suspicious code, and it will warn you on each &quot;if (x=y)&quot;.</p></div></div><p>
I didn&#39;t know that... thanks <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />But I think it&#39;s still better to make them private, just for OOP&#39;s sake <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900202#target">Gabriel Campos</a> said:</div><div class="quote"><p>BITMAP *Sprite[x]; // x will be the number of all sprites in the game</p></div></div><p>
I hope you don&#39;t think this is a dynamic array... You need to replace the x by a hard-coded number, OR you should make it a vector/list/deque/whatever to let it be able to have a costumable size.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p><span class="source-code">Sprite<span class="k2">[</span>Object-&gt;GetImage<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span></span></p></div></div><p>
What is this supposed to do? In this case, Object-&gt;GetImage should return the index in the Sprite array of the current sprite that should be drawn... This makes code from the object to change when the order of the sprites in the Sprite array changes...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Tue, 25 Jan 2011 22:31:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>When I wrote BITMAP *Sprite[x], x will be the number of all sprites..Lets supose that we will use 10 enemies + 1 player...will be 11 sprites, so
</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><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>Sprite<span class="k2">[</span><span class="n">11</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 2</span><span class="c">//then load all bitmaps</span>
<span class="number"> 3</span>Sprite<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap"><span class="a">load_bitmap</span></a><span class="k2">(</span>.......<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 4</span>...
<span class="number"> 5</span>...
<span class="number"> 6</span>...
</div></div><p>
So when I create a object...lets supose...Player I will refer his sprite with the number of this array...<br />if Sprite[0] = load_bitmap(&quot;Data\\Gfx\\Player.bmp&quot;, NULL);<br />then the variable Image will be 0....<br />when the class call Sprite[Object-&gt;GetImage()], it will return the number of the image, in this case 0..
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900212#target">gnolam</a> said:</div><div class="quote"><p>
Also: the code you&#39;re giving us shouldn&#39;t even compile...
</p></div></div><p>
Maybe because I wrote<br />virtual VOID GetX()???<br />I think it is<br />virtual INT GetX() . . . <b>Always do it...My compiler is working hard you know</b>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Tue, 25 Jan 2011 22:52:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>When compiling, the compiler wants to know how much memory it should allocate for each instance of a class... this means that when using an array, it needs to know the size on beforehand. This way, you can&#39;t do this:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a> <span class="k3">*</span>Sprite<span class="k2">[</span><span class="n">11</span><span class="k2">]</span><span class="k2">;</span>
<span class="c">//then load all bitmaps</span>
Sprite<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap"><span class="a">load_bitmap</span></a><span class="k2">(</span>.......<span class="k2">)</span><span class="k2">;</span>
...
...
...
</pre></div></div><p>
In a constructor/initialisation function because the amount of bitmaps in the array sprite is set to x, for which the compiler will throw an error if it can&#39;t find an int called x that is already been given a value(it has to be global to do this, somebody please correct me if I&#39;m wrong).</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900223#target">Gabriel Campos</a> said:</div><div class="quote"><p>when the class call Sprite[Object-&gt;GetImage()], it will return the number of the image, in this case 0..</p></div></div><p>
This means that the Object needs to know which location the image to be drawn has in the Sprite array(which is in another class)...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Tue, 25 Jan 2011 23:24:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>J-Gamer: Just use the &lt;quote&gt; &lt;/quote&gt; tags without specifying anything and the a.cc&#39;s magic searching bunnies will do the work for you.</p><p><b>Example:</b><br />&lt;quote&gt;When compiling, the compiler wants to know how much memory it should allocate for each instance of a class...&lt;/quote&gt;
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900228#target">J-Gamer</a> said:</div><div class="quote"><p>When compiling, the compiler wants to know how much memory it should allocate for each instance of a class...</p></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dario ff)</author>
		<pubDate>Tue, 25 Jan 2011 23:29:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks... I was wondering how you guys all do that :p<br />Edited the quotes in the previous message
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Tue, 25 Jan 2011 23:32:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900228#target">J-Gamer</a> said:</div><div class="quote"><p>
In a constructor/initialisation function because the amount of bitmaps in the array sprite is set to x, for which the compiler will throw an error if it can&#39;t find an int called x that is already been given a value(it has to be global to do this, somebody please correct me if I&#39;m wrong).
</p></div></div><p>
You dont understand me...I will put explicit the number 11...the x is not a variable or a parameter or nothing...it was just a example....<br />When using Object-&gt;GetImage()...it will return the number...its simple..
</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">// Its like this . .</span>
<span class="number">  2</span>Sprite<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">int</span> x <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="k1">int</span> GetX<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  7</span>  <span class="k1">return</span> x<span class="k2">;</span>
<span class="number">  8</span><span class="k2">}</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="k1">void</span> Draw<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 11</span> <a href="http://www.allegro.cc/manual/draw_sprite"><span class="a">draw_sprite</span></a><span class="k2">(</span>Buffer, Sprite<span class="k2">[</span>x<span class="k2">]</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span><span class="c">// the x will be 3 (in the array number 2)</span>
</div></div><p>
Simple...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Tue, 25 Jan 2011 23:41:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Could somebody <b>please</b> explain to me why the getImage() function is a function returning an int and is part of the class cObject, while it is giving the index of an image in an array of the class cDrawManager? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /></p><p>This would mean the cObject class should be aware of the contents of the cDrawManager&#39;s Sprite array.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Tue, 25 Jan 2011 23:50:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900232#target">J-Gamer</a> said:</div><div class="quote"><p>
Thanks... I was wondering how you guys all do that :p
</p></div></div><p>
<a href="http://github.com/bamccaig/acc.js">acc.js</a> <img src="http://www.allegro.cc/forums/smileys/lipsrsealed.gif" alt=":-X" />
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900235#target">J-Gamer</a> said:</div><div class="quote"><p>
Could somebody <b>please</b> explain to me why the getImage() function is a function returning an int and is part of the class cObject, while it is giving the index of an image in an array of the class cDrawManager? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /></p><p>This would mean the cObject class should be aware of the contents of the cDrawManager&#39;s Sprite array.
</p></div></div><p>
That&#39;s not necessarily true. Think of file descriptors. A file descriptor is basically an index into some table that the kernel has for an application. That&#39;s why <span class="source-code">STDIN</span>, <span class="source-code">STDOUT</span>, and <span class="source-code">STDERR</span> are <span class="source-code"><span class="n">0</span></span>, <span class="source-code"><span class="n">1</span></span>, and <span class="source-code"><span class="n">2</span></span>, respectively. Your application doesn&#39;t actually know anything about that table, and couldn&#39;t get access to it if it did.</p><p>The object doesn&#39;t actually need to know what the image index refers to because (presumably) it will be passed in and set from the outside world by something that does know. Using indexes like that for your sprites isn&#39;t a <i>terrible</i> idea, but there are better ways to do it, especially in C++. For example, you could store <span class="source-code">boost::shared_ptr<span class="k3">&lt;</span>BITMAP&gt;</span> and then store a copy of the sprite&#39;s smart pointer directly in your class. You could even load your sprites into a <span class="source-code">std::map<span class="k3">&lt;</span>std::string, boost::shared_ptr<span class="k3">&lt;</span>BITMAP&gt; <span class="k3">&gt;</span></span> so that you could later refer to them by name. That&#39;s generally how I have done it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Wed, 26 Jan 2011 00:24:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I dunno, if you treat the &quot;index&quot; as an opaque &quot;bitmap id&quot;, rather than an index then you can change the underlying implementation at any time and not have to worry about passing pointers around, or using string based hashing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 26 Jan 2011 00:34:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900232#target">J-Gamer</a> said:</div><div class="quote"><p>Thanks... I was wondering how you guys all do that :p</p></div></div><p>


acc.js [github.com] <img src="http://www.allegro.cc/forums/smileys/lipsrsealed.gif" alt=":-X" /></p></div></div><p>
I was actually talking about how to be able to copy both the text AND the link to the specific post ^^</p><p>I haven&#39;t studied Java yet, so I don&#39;t really understand the code ._.<br />I might look into it later, when I have some spare time to learn Java.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900239#target">bamccaig</a> said:</div><div class="quote"><p>The object doesn&#39;t actually need to know what the image index refers to because (presumably) it will be passed in and set from the outside world by something that does know. Using indexes like that for your sprites isn&#39;t a terrible idea, but there are better ways to do it, especially in C++. For example, you could store boost::shared_ptr&lt;BITMAP&gt; and then store a copy of the sprite&#39;s smart pointer directly in your class. You could even load your sprites into a std::map&lt;std::string, boost::shared_ptr&lt;BITMAP&gt; &gt; so that you could later refer to them by name. That&#39;s generally how I have done it.
</p></div></div><p>

In the code we get to see, it&#39;s clear that he wants the function to know which number to return, probably based on some state parameters of the object itself.<br />I have to say I never used Boost, so I don&#39;t know how it works.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Wed, 26 Jan 2011 01:21:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900248#target">J-Gamer</a> said:</div><div class="quote"><p>I was actually talking about how to be able to copy both the text AND the link to the specific post ^^</p></div></div><p>The forum auto links it most times.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 26 Jan 2011 01:24:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900248#target">J-Gamer</a> said:</div><div class="quote"><p>
I was actually talking about how to be able to copy both the text AND the link to the specific post ^^
</p></div></div><p>
That&#39;s actually specifically what it can do. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> Though it isn&#39;t perfect: it doesn&#39;t handle HTML properly [yet]. When it fails to quote, you can use a separate feature to just fill in the <span class="source-code"><span class="k3">&lt;</span>quote name<span class="k3">=</span><span class="s">"user"</span> src<span class="k3">=</span><span class="s">"uri"</span><span class="k3">&gt;</span><span class="k3">&lt;</span><span class="k3">/</span>quote&gt;</span> part though.
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900248#target">J-Gamer</a> said:</div><div class="quote"><p>
I haven&#39;t studied Java yet, so I don&#39;t really understand the code ._.<br />I might look into it later, when I have some spare time to learn Java.
</p></div></div><p>
It&#39;s JavaScript, not Java. They are two completely different languages with little in common. In theory, you should be able to just drop it in and use it, but in practice having some JavaScript experience would come in handy because it isn&#39;t perfect. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> (ML also discourages its use because he doesn&#39;t want people abusing its convenience)
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900248#target">J-Gamer</a> said:</div><div class="quote"><p>
In the code we get to see, it&#39;s clear that he wants the function to know which number to return, probably based on some state parameters of the object itself.</p></div></div><p>
The object would just store its sprite index, or an animation, which itself would contain a set of indexes. That would be part of the object&#39;s state. The object doesn&#39;t physically need to know what those indexes mean. It can trust the outside world to give it the right indexes. Of course, it&#39;s not a perfect model, but it can work if you&#39;re careful.</p><p>A better model is probably storing an animation or a set of animations, each of which containing a set of smarter pointers to your sprites. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> That&#39;s a relatively complicated model though for beginner.
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900248#target">J-Gamer</a> said:</div><div class="quote"><p>
I have to say I never used Boost, so I don&#39;t know how it works.
</p></div></div><p>
Boost is a very large C++ framework. The <span class="source-code">boost::shared_ptr<span class="k3">&lt;</span>T&gt;</span> is a smart pointer that manages the memory for you automatically. Essentially, it just stores a copy-count/reference-count internally. When you make copies of it the count is incremented, and when those copies are destroyed the count is decremented. When the count reaches zero, the stored object is automatically destroyed, freeing the memory. It&#39;s entirely automatic.</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="k1">typedef</span> boost::shared_ptr<span class="k3">&lt;</span>int&gt; IntPtr<span class="k2">;</span>
<span class="number">  2</span><span class="k1">typedef</span> boost::shared_ptr<span class="k3">&lt;</span>ALLEGRO_BITMAP&gt; AlBitmapPtr<span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span>    <span class="k2">{</span>
<span class="number">  6</span>        IntPtr i<span class="k2">(</span><span class="k1">new</span> <span class="k1">int</span><span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>    <span class="k2">}</span> <span class="c">// The int is deleted here automatically.</span>
<span class="number">  8</span>
<span class="number">  9</span>    AlBitmapPtr b<span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>    <span class="k2">{</span>
<span class="number"> 12</span>        AlBitmapPtr b2<span class="k2">(</span>
<span class="number"> 13</span>                <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"./path/to/file.bmp"</span><span class="k2">)</span>,
<span class="number"> 14</span>                <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>        b <span class="k3">=</span> b2<span class="k2">;</span>
<span class="number"> 17</span>    <span class="k2">}</span>
<span class="number"> 18</span><span class="k2">}</span> <span class="c">// The ALLEGRO_BITMAP is destroyed here automatically.</span>
</div></div><p>

It&#39;s a bit like garbage collection, except that it works immediately instead of waiting some indeterminate amount of time and checking for objects that can be freed. The downside is that it can&#39;t handle cyclical references, so you do need to pay some attention if you end up creating those.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Wed, 26 Jan 2011 02:05:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">I said:</div><div class="quote"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900212#target">gnolam</a> said:</div><div class="quote"><p>Also: the code you&#39;re giving us shouldn&#39;t even compile...</p></div></div><p>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p><span class="source-code"><a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span>Sprite<span class="k2">[</span>Object-&gt;GetImage<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span>, Buffer, Object-&gt;GetFrame<span class="k2">(</span><span class="k2">)</span> <span class="k3">*</span> Object-&gt;GetW<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetStance<span class="k2">(</span><span class="k2">)</span> <span class="k3">*</span> Object-&gt;GetH<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetX<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> Camera-&gt;GetX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetY<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> Camera-&gt;GetY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> Object-&gt;GetW<span class="k2">(</span><span class="k2">)</span>, Object-&gt;GetH<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></span></p></div></div></div></div><p>
I was referring to the semicolons. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Wed, 26 Jan 2011 02:25:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900256#target">bamccaig</a> said:</div><div class="quote"><p>It&#39;s JavaScript, not Java.</p></div></div><p>
<img src="http://www.allegro.cc/forums/smileys/embarassed.gif" alt=":-[" /> I should have know that at least...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Wed, 26 Jan 2011 18:08:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900262#target">gnolam</a> said:</div><div class="quote"><p>
I was referring to the semicolons.
</p></div></div><p>
Oh..yes, I dont realized...<br />The function works nicely after I declared pure virtual...<br />if dont it says..undefined reference to vtable in cObject..or something like this...<br />Strange . ..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Thu, 27 Jan 2011 00:04:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900460#target">Gabriel Campos</a> said:</div><div class="quote"><p>
The function works nicely after I declared pure virtual...<br />if dont it says..undefined reference to vtable in cObject..or something like this...
</p></div></div><p>
It&#39;s because every function you declare has to also be defined. Also, you should note that every base class that has virtual functions should also have a virtual destructor. This is so that the appropriate destructors get called for the derived classes.</p><div class="source-code snippet"><div class="inner"><pre><span class="c">/// In Base.hpp</span>

<span class="k1">class</span> Base <span class="k2">{</span>
<span class="k1">protected</span> <span class="k2">:</span>
   Data d<span class="k2">;</span>
<span class="k1">public</span> <span class="k2">:</span>
   Base<span class="k2">(</span><span class="k2">)</span> <span class="k2">:</span> d<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span>
   <span class="k1">virtual</span> ~Base<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span>
   <span class="k1">virtual</span> <span class="k1">void</span> DoSomething<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>

<span class="c">/// In Base.cpp</span>

<span class="k1">void</span> Base::DoSomething<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="c">/*...*/</span><span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 27 Jan 2011 00:51:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>But why to put in the destructor??<br />I couldnt understand this part of the code
</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">/// In Base.hpp</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">class</span> Base <span class="k2">{</span>
<span class="number">  4</span><span class="k1">protected</span> <span class="k2">:</span>
<span class="number">  5</span>   Data d<span class="k2">;</span>    <span class="c">// Couldn understand</span>
<span class="number">  6</span><span class="k1">public</span> <span class="k2">:</span>
<span class="number">  7</span>   Base<span class="k2">(</span><span class="k2">)</span> <span class="k2">:</span> d<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span> <span class="c">// Couldn understand</span>
<span class="number">  8</span>   <span class="k1">virtual</span> ~Base<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span>
<span class="number">  9</span>   <span class="k1">virtual</span> <span class="k1">void</span> DoSomething<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="c">/// In Base.cpp</span>
<span class="number"> 13</span>
<span class="number"> 14</span><span class="k1">void</span> Base::DoSomething<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="c">/*...*/</span><span class="k2">}</span>
</div></div><p>
Other thing I want to learn is..why use this implementation on the constructor code of some object, something like player..
</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="k1">class</span> cPlayer<span class="k2">{</span>
<span class="number"> 2</span>   cPlayer<span class="k2">(</span><span class="k1">int</span> x, <span class="k1">int</span> y<span class="k2">)</span> <span class="k2">:</span> <span class="k2">(</span>x, y<span class="k2">)</span><span class="k2">;</span> <span class="c">// can someone explain to me?</span>
</div></div><p>
I want to thanx evebody too.. Since this post I learned a lot about OOP.. <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Thu, 27 Jan 2011 00:58:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900475#target">Gabriel Campos</a> said:</div><div class="quote"><p>
But why to put in the destructor??
</p></div></div><p>
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900472#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>
This is so that the appropriate destructors get called for the derived classes.
</p></div></div><p>

</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606117/900475#target">Gabriel Campos</a> said:</div><div class="quote"><p>
I couldnt understand this part of the code
</p></div></div><p>
Data is just a made up class, used for an example.</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="k1">class</span> Data <span class="k2">{</span>
<span class="number">  2</span><span class="k1">private</span> <span class="k2">:</span>
<span class="number">  3</span>   <span class="k1">int</span> i<span class="k2">;</span>
<span class="number">  4</span>   <span class="k1">float</span> f<span class="k2">;</span>
<span class="number">  5</span>   <span class="k1">char</span> c<span class="k2">;</span>
<span class="number">  6</span><span class="k1">public</span> <span class="k2">:</span>
<span class="number">  7</span>   Data<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>   Data<span class="k2">(</span><span class="k1">int</span> _integer , <span class="k1">float</span> _float , <span class="k1">char</span> _char<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>Data::Data<span class="k2">(</span><span class="k2">)</span> <span class="k2">:</span>
<span class="number"> 12</span>   i<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>,     <span class="c">// call int constructor for integer type</span>
<span class="number"> 13</span>   f<span class="k2">(</span><span class="n">0</span>.<span class="n">0f</span><span class="k2">)</span>,  <span class="c">// call float constructor for float type</span>
<span class="number"> 14</span>   c<span class="k2">(</span><span class="s">'\0'</span><span class="k2">)</span>   <span class="c">// call char constructor for char type</span>
<span class="number"> 15</span><span class="k2">{</span><span class="k2">}</span>
<span class="number"> 16</span>
<span class="number"> 17</span>Data::Data<span class="k2">(</span><span class="k1">int</span> _integer , <span class="k1">float</span> _float , <span class="k1">char</span> _char<span class="k2">)</span> <span class="k2">:</span>
<span class="number"> 18</span>   i<span class="k2">(</span>_integer<span class="k2">)</span>,
<span class="number"> 19</span>   f<span class="k2">(</span>_float<span class="k2">)</span>,
<span class="number"> 20</span>   c<span class="k2">(</span>_char<span class="k2">)</span>
<span class="number"> 21</span><span class="k2">{</span><span class="k2">}</span>
</div></div><p>

The code in the constructor after the semicolon and before the braces is called an <i>initialization list</i>. It gives the member variables of the class an initialization value. Always initialize the members of the class before using them. If you don&#39;t, then their starting values are undefined, and hold the value of whatever was left over in memory from before.</p><p>An example of what not to do :
</p><div class="source-code snippet"><div class="inner"><pre>Data::Data<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
   <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"i = %i , f = %f , c = %c"</span> , i , f , c<span class="k2">)</span><span class="k2">;</span><span class="c">// Could print anything</span>
                                                  <span class="c">// because i , f , and c are</span>
                                                  <span class="c">// uninitialized</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 27 Jan 2011 01:17:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, couldnt understand yet...But I got a c++ book from a good university here, so I will study all this part. . . <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><br />But lets go to another game concept question, How to make a lot of stages and add enemies there.. My solution is this, but I think its a little weird.. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":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="number">  2</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  3</span>  init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>  Stage01<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  Stage02<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>  Stage03<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>  deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span><span class="k2">}</span>
<span class="number">  9</span><a href="http://www.allegro.cc/manual/END_OF_MAIN"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span><span class="k1">int</span> Stage01<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span> 
<span class="number"> 12</span>  <span class="c">// Here I create the objects</span>
<span class="number"> 13</span>  cPlayer Player<span class="k2">(</span><span class="n">200</span>, <span class="n">200</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// x, y, parameters</span>
<span class="number"> 14</span>  cEnemy Enemy<span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k2">;</span> <span class="c">// and on and on</span>
<span class="number"> 15</span>
<span class="number"> 16</span><span class="k1">while</span><span class="k2">(</span>inGame<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 17</span>  <span class="c">// the game code</span>
<span class="number"> 18</span><span class="k2">}</span>
<span class="number"> 19</span><span class="k2">}</span> <span class="c">// end of Stage</span>
<span class="number"> 20</span>
<span class="number"> 21</span>
<span class="number"> 22</span><span class="k1">int</span> Stage02<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span> 
<span class="number"> 23</span>  <span class="c">// Here I create the objects again</span>
<span class="number"> 24</span>  cPlayer Player<span class="k2">(</span><span class="n">100</span>, <span class="n">250</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// x, y, parameters</span>
<span class="number"> 25</span>  cEnemy Enemy<span class="k2">[</span><span class="n">6</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 26</span>
<span class="number"> 27</span><span class="k1">while</span><span class="k2">(</span>inGame<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 28</span>  <span class="c">// the game code</span>
<span class="number"> 29</span><span class="k2">}</span>
<span class="number"> 30</span><span class="k2">}</span> <span class="c">// end of Stage</span>
</div></div><p>
So, this is the right way to do this?? <br />Or should create all objects, lets say..make them global... and use it??<br />Create a method to put them in the right stage and position?? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Fri, 28 Jan 2011 16:28:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I would use something like this. You can set up the current stage in the CreateStage function, and then just run the current stage in main.</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="k1">class</span> Stage <span class="k2">{</span>
<span class="number">  2</span><span class="k1">private</span> <span class="k2">:</span>
<span class="number">  3</span>   <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> stage_map<span class="k2">;</span>
<span class="number">  4</span>   <a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> buffer<span class="k2">;</span>
<span class="number">  5</span>   cPlayer Player<span class="k2">;</span>
<span class="number">  6</span>   vector<span class="k3">&lt;</span>cEnemy<span class="k3">*</span><span class="k3">&gt;</span> Enemies<span class="k2">;</span>
<span class="number">  7</span>   cCamera Camera<span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">public</span> <span class="k2">:</span>
<span class="number"> 10</span>   Stage<span class="k2">(</span><span class="k2">)</span> <span class="k2">:</span> stage_map<span class="k2">(</span><span class="k2">)</span> , Player<span class="k2">(</span><span class="k2">)</span> , Enemies<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span>
<span class="number"> 11</span>   ~Stage<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>Free<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 12</span>   <span class="k1">void</span> Free<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 13</span>      <span class="k1">if</span> <span class="k2">(</span>buffer<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 14</span>         <a href="http://www.allegro.cc/manual/destroy_bitmap"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>         buffer <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 16</span>      <span class="k2">}</span>
<span class="number"> 17</span>      <span class="k1">if</span> <span class="k2">(</span>stage_map<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 18</span>         <a href="http://www.allegro.cc/manual/destroy_bitmap"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>stage_map<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>         stage_map <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 20</span>      <span class="k2">}</span>
<span class="number"> 21</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> Enemies.size<span class="k2">(</span><span class="k2">)</span> <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span><span class="k1">delete</span> Enemies<span class="k2">[</span>i<span class="k2">]</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 22</span>      Enemies.clear<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>   <span class="k2">}</span>
<span class="number"> 24</span>   <span class="k1">void</span> SetStageMap<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> bmp<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 25</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>bmp<span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 26</span>      <span class="k1">if</span> <span class="k2">(</span>stage_map<span class="k2">)</span> <span class="k2">{</span><a href="http://www.allegro.cc/manual/destroy_bitmap"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>stage_map<span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 27</span>      stage_map <span class="k3">=</span> bmp<span class="k2">;</span>
<span class="number"> 28</span>   <span class="k2">}</span>
<span class="number"> 29</span>   <span class="k1">bool</span> Update<span class="k2">(</span><span class="k1">double</span> tsec<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 30</span>      <span class="c">// collision testing goes here</span>
<span class="number"> 31</span>      Player.Update<span class="k2">(</span>tsec<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</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> Enemies.size<span class="k2">(</span><span class="k2">)</span> <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 33</span>         Enemies<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>Update<span class="k2">(</span>tsec<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>      <span class="k2">}</span>
<span class="number"> 35</span>      Camera.CenterOn<span class="k2">(</span>Player.CX<span class="k2">(</span><span class="k2">)</span> , Player.CY<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>   <span class="k2">}</span>
<span class="number"> 37</span>   <span class="k1">void</span> CheckInputs<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 38</span>      Player.CheckInputs<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</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> Enemies.size<span class="k2">(</span><span class="k2">)</span> <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 40</span>         Enemies<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>CheckInputs<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>      <span class="k2">}</span>
<span class="number"> 42</span>   <span class="k2">}</span>
<span class="number"> 43</span>   <span class="k1">void</span> Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP"><span class="a">BITMAP</span></a><span class="k3">*</span> dest<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 44</span>      <span class="k1">int</span> camx <span class="k3">=</span> Camera.X<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>      <span class="k1">int</span> camy <span class="k3">=</span> Camera.Y<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>      <span class="k1">int</span> camw <span class="k3">=</span> Camera.W<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>      <span class="k1">int</span> camh <span class="k3">=</span> Camera.H<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 48</span>      <a href="http://www.allegro.cc/manual/blit"><span class="a">blit</span></a><span class="k2">(</span>stage_map , buffer , camx , camy , <span class="n">0</span> , <span class="n">0</span> , camw , camh<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span>      Player.Draw<span class="k2">(</span>buffer , <span class="k3">-</span>camx , <span class="k3">-</span>camy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</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> Enemies.size<span class="k2">(</span><span class="k2">)</span> <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span>Enemies<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span>buffer , <span class="k3">-</span>camx , <span class="k3">-</span>camy<span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 51</span>      <a href="http://www.allegro.cc/manual/blit"><span class="a">blit</span></a><span class="k2">(</span>buffer , dest , <span class="n">0</span> , <span class="n">0</span> , <span class="n">0</span> , <span class="n">0</span> , buffer-&gt;w , buffer-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span>   <span class="k2">}</span>
<span class="number"> 53</span>
<span class="number"> 54</span>   <span class="k1">void</span> SetPlayerStats<span class="k2">(</span><span class="c">/*...*/</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 55</span>   <span class="k1">void</span> AddEnemy<span class="k2">(</span>cEnemy<span class="k3">*</span> enemy<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 56</span>      Enemies.push_back<span class="k2">(</span>enemy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</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="number"> 61</span>Stage<span class="k3">*</span> CreateStage<span class="k2">(</span><span class="k1">int</span> stage_num<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 62</span>   Stage<span class="k3">*</span> new_stage <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 63</span>   <span class="k1">switch</span> <span class="k2">(</span>stage_num<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 64</span>      <span class="k1">case</span> <span class="n">1</span> <span class="k2">:</span>
<span class="number"> 65</span>         <span class="k1">return</span> <span class="k1">new</span> Stage<span class="k2">(</span><span class="c">/*... parameters ...*/</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 66</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 67</span>      <span class="k1">case</span> <span class="n">2</span> <span class="k2">:</span>
<span class="number"> 68</span>         new_stage <span class="k3">=</span> <span class="k1">new</span> Stage<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 69</span>         <span class="c">/* Alter the new stage here */</span>
<span class="number"> 70</span>         <span class="k1">return</span> new_stage<span class="k2">;</span>
<span class="number"> 71</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 72</span>      <span class="k1">default</span> <span class="k2">:</span>
<span class="number"> 73</span>         Error<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 74</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 75</span>   <span class="k2">}</span>
<span class="number"> 76</span>   <span class="k1">return</span> new_stage<span class="k2">;</span>
<span class="number"> 77</span><span class="k2">}</span>
<span class="number"> 78</span>
<span class="number"> 79</span><span class="c">/// In main</span>
<span class="number"> 80</span>
<span class="number"> 81</span><span class="k1">int</span> stage_num <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 82</span>Stage<span class="k3">*</span> current_stage <span class="k3">=</span> CreateStage<span class="k2">(</span>stage_num<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 83</span>
<span class="number"> 84</span><span class="k1">while</span> <span class="k2">(</span>playing<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 85</span>   current_stage-&gt;Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 86</span>   current_stage-&gt;CheckInputs<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 87</span>   current_stage-&gt;Update<span class="k2">(</span>time_passed<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 88</span>   <span class="k1">if</span> <span class="k2">(</span>current_stage-&gt;StageComplete<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 89</span>      <span class="k1">delete</span> current_stage<span class="k2">;</span>
<span class="number"> 90</span>      <span class="k3">+</span><span class="k3">+</span>stage_num<span class="k2">;</span>
<span class="number"> 91</span>      current_stage <span class="k3">=</span> CreateStage<span class="k2">(</span>stage_num<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 92</span>   <span class="k2">}</span>
<span class="number"> 93</span>   <span class="k1">if</span> <span class="k2">(</span>current_stage-&gt;GameOver<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>playing <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 94</span><span class="k2">}</span>
<span class="number"> 95</span>
<span class="number"> 96</span><span class="k1">if</span> <span class="k2">(</span>current_stage<span class="k2">)</span> <span class="k2">{</span><span class="k1">delete</span> current_stage<span class="k2">;</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 28 Jan 2011 17:25:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmm... So you are telling me to make all the game in a class and there make a system to load the maps and the enemies..??<br />So in the main function I only call the functions of this class...But I make my map based on tiles... I will look more detailed this in home..thanx
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Fri, 28 Jan 2011 18:04:19 +0000</pubDate>
	</item>
</rss>
