<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Newbie Allegro programming</title>
		<link>http://www.allegro.cc/forums/view/608221</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 02 Sep 2011 05:21:45 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hi everyone! i&#39;m sorry for my bad english but i&#39;m not a master in this language xD<br />however i hope you understand me.<br />i&#39;m a newbie in Allegro programming.<br />i know C ,in detail i know how loops,pointers,arrays and matrices work.<br />i studied also stack,hash-table,tree and list.<br />I don&#39;t know C++ yet.I saw many games done with allegro and C/C++ and i decided to use this lib.<br />I would create a platform game but i don&#39;t find any type of tutorial about it.I see many sourcecode of platform done with allegro on youtube and i observe that to create the map of the game are used classes...is it possible to create a map (in C) without classes? maybe only with the coordinates of the ostacles?<br />I also try to study a sourcecode of a platform game but is too difficult for me...and also it was written in C++ that i don&#39;t understand.<br />can you advise me some platform-tutorial? or a good book?</p><p>thx all! <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dsds dsds)</author>
		<pubDate>Wed, 31 Aug 2011 17:21:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>See the allegro demo game (the small shoot-them-up). It should already give you a good example of a game loop, and it will show you which allegro4 functions a game usually uses.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608221/929673#target">dsds dsds</a> said:</div><div class="quote"><p> is it possible to create a map (in C) without classes
</p></div></div><p>Of course. Instead of a 2D array of classes, you&#39;ll use a 2D array of <i>struct</i>, etc.</p><p>About platform games examples/tutorials, I don&#39;t have specific example in mind. I checked on the depot, here&#39;s list of platform games with source code available:<br /><a href="http://www.allegro.cc/depot/action,platform/listing/?o=Title&amp;players=&amp;online=&amp;source=Yes&amp;os">http://www.allegro.cc/depot/action,platform/listing/?o=Title&amp;players=&amp;online=&amp;source=Yes&amp;os</a>=</p><p>Of these, I checked Alex4 as the game and its author are pretty famous, and the source code seems rather pretty :<br /><a href="http://www.allegro.cc/depot/AlextheAllegator4">http://www.allegro.cc/depot/AlextheAllegator4</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Wed, 31 Aug 2011 18:14:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You could find some examples <a href="http://www.allegro.cc/files/">here</a>. Compiling them(and modifying in order to understand them better) could be a good start.</p><p>Good luck.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (type568)</author>
		<pubDate>Wed, 31 Aug 2011 18:15:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i see many of these games but they are too complex for me <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /><br />i need a tutorial to begin becouse these games are split in more files and i&#39;m not able to follow them.<br />how can i use a structure to make a map? can you write me a small code?</p><p>thx all
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dsds dsds)</author>
		<pubDate>Wed, 31 Aug 2011 20:10:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Perhaps this is a good case for writing a book before that dreadful Game Programming All In One is updated <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>Or hey, why not email the authors asking if they want it updated and donate 10% of commission to Matthew&#39;s hosting bill.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Wed, 31 Aug 2011 20:15:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can look at the <a href="http://tilemap.co.uk/mappy.php">Mappy Tile Map Editor</a> :<br />Under &quot;Playback libraries&quot;, you have one for allegro, it contains a few examples written in C for Allegro 4 that display tile maps and use the information &quot;this tile is flagged &#39;solid&#39;&quot; to handle collision.</p><p>For designing levels, it&#39;s pretty handy to have an already-made editor that supports cut and paste, undo, etc...</p><p>The library is designed so you don&#39;t have to understand how it is implemented, but you can still look in mappyal.c : for example MapDrawBG() is a classic loop on x and y, and for each cell it calls one of the allegro functions <span class="source-code"><a href="http://www.allegro.cc/manual/blit"><span class="a">blit</span></a><span class="k2">(</span><span class="k2">)</span></span> or <span class="source-code"><a href="http://www.allegro.cc/manual/masked_blit"><span class="a">masked_blit</span></a><span class="k2">(</span><span class="k2">)</span></span>.</p><p>Just one critic about these examples: They were written long ago, so they attempt to open tiny modes like 320x240 in 16bpp. If they don&#39;t run at all on your machine, first try to modify them to call <span class="source-code"><a href="http://www.allegro.cc/manual/set_color_depth"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span></span> right before they call <span class="source-code"><a href="http://www.allegro.cc/manual/set_gfx_mode"><span class="a">set_gfx_mode</span></a><span class="k2">(</span><span class="k2">)</span></span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Wed, 31 Aug 2011 21:30:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Better yet: set_color_depth(desktop_color_depth())
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Wed, 31 Aug 2011 21:32:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>can you write for me a small code of a tilemap?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dsds dsds)</author>
		<pubDate>Thu, 01 Sep 2011 02:01:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The most simple tilemap I can think of.<br />This code is very simple, too simple.<br />It&#39;s also untested but I don&#39;t think I made a big mistake anywhere.</p><div class="source-code snippet"><div class="inner"><pre>
<span class="k1">int</span> map<span class="k2">[</span><span class="n">4</span><span class="k2">]</span><span class="k2">[</span><span class="n">4</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="k2">{</span><span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span><span class="k2">}</span>,<span class="k2">{</span><span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span><span class="k2">}</span>,<span class="k2">{</span><span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1</span><span class="k2">}</span>,<span class="k2">{</span><span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span><span class="k2">}</span><span class="k2">}</span>
<span class="k1">int</span> i<span class="k2">;</span>
<span class="k1">int</span> t<span class="k2">;</span>
<span class="k1">for</span> <span class="k2">(</span>i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">4</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
   <span class="k1">for</span> <span class="k2">(</span>t <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> t <span class="k3">&lt;</span> <span class="n">4</span><span class="k2">;</span> t<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
       <span class="k1">if</span> <span class="k2">(</span>map<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>t<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span><span class="k2">{</span>
           <span class="c">// Assuming you're using allegro 4</span>
           <a href="http://www.allegro.cc/manual/rectfill"><span class="a">rectfill</span></a><span class="k2">(</span>buffer, t <span class="k3">*</span> <span class="n">32</span>, i <span class="k3">*</span> <span class="n">32</span>, t <span class="k3">*</span> <span class="n">32</span> <span class="k3">+</span> <span class="n">32</span>, i <span class="k3">*</span> <span class="n">32</span> <span class="k3">+</span> <span class="n">32</span>, <a href="http://www.allegro.cc/manual/makecol"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><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>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (l j)</author>
		<pubDate>Thu, 01 Sep 2011 02:58:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>edit:</p><p>ok it works so with this technique i can draw a map?<br />and i can controll olso collision?</p><p>thx
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dsds dsds)</author>
		<pubDate>Thu, 01 Sep 2011 03:07:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well replace rectfill with al_draw_filled_rectangle</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span>t <span class="k3">*</span> <span class="n">32</span>, i <span class="k3">*</span><span class="n">32</span>, t <span class="k3">*</span> <span class="n">32</span> <span class="k3">+</span><span class="n">32</span>, i <span class="k3">*</span><span class="n">32</span> <span class="k3">+</span> <span class="n">32</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

I assume you know how to get a basic game loop running (if you don&#39;t, there should be an allegro 5 tutorials about this, this one should be good <a href="http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial">http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial</a> ).<br />Also, if you are going to use this function, make sure that you call <span class="source-code"><a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span></span><br />And for a better effect, draw images, not simple rectangles.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (l j)</author>
		<pubDate>Thu, 01 Sep 2011 03:25:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>thx taron </p><p>another question:<br />i have to make another matrix for the objects of the map? and controll the collision with this matrix?<br />can you explain me (simply) how can i create a collision engine?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dsds dsds)</author>
		<pubDate>Thu, 01 Sep 2011 03:32:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You don&#39;t have to create another matrix for objects on the map. I&#39;d call it a 2d-array though, in programming it&#39;s mostly called a 2d array unless you actually use matrix operations on it.<br />If you want your objects to be tile-based, you can create another 2d array.<br />For things like enemies, you best store them in arrays.</p><p>In order to make objects collide with the tiles on the map you&#39;ll have to use simple maths.<br />I&#39;ll explain how you can use (axis-aligned) bounding boxes for collision.</p><p>I&#39;ll create a simple player struct for this.</p><p><b>I did not test this, but this is the basic idea, it&#39;s very simple, this way however your sprites can not be larger than 2 tiles wide or 2 tiles high, if they are, the collision (and response) might not work properly.
If something does not work I think you can fix it, the collision detection and movement are also &#39;slow&#39;, not optimized at all</b>
</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> <span class="k1">struct</span> PLAYER<span class="k2">{</span>
<span class="number">  2</span>   <span class="k1">int</span> x<span class="k2">;</span>
<span class="number">  3</span>   <span class="k1">int</span> y<span class="k2">;</span>
<span class="number">  4</span>   <span class="k1">int</span> width<span class="k2">;</span> <span class="c">// For your bounding box</span>
<span class="number">  5</span>   <span class="k1">int</span> height<span class="k2">;</span>
<span class="number">  6</span>   <span class="k1">int</span> gravity<span class="k2">;</span>
<span class="number">  7</span>   <span class="c">// Add other data here, like for example the state the player is in (on ground, dead, whatever)</span>
<span class="number">  8</span>   <span class="c">// Perhaps a bitmap to represent the player</span>
<span class="number">  9</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span><span class="k1">void</span> create_player<span class="k2">(</span>PLAYER <span class="k3">*</span>player, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> width, <span class="k1">int</span> height<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 12</span>   <span class="c">// * means pointer</span>
<span class="number"> 13</span>   <span class="c">// This variable does not actually contain the value of PLAYER</span>
<span class="number"> 14</span>   <span class="c">// But it contains the address to a PLAYER</span>
<span class="number"> 15</span>   player-&gt;x <span class="k3">=</span> x<span class="k2">;</span>
<span class="number"> 16</span>   player-&gt;y <span class="k3">=</span> y<span class="k2">;</span>
<span class="number"> 17</span>   player-&gt;width <span class="k3">=</span> width<span class="k2">;</span>
<span class="number"> 18</span>   player-&gt;height <span class="k3">=</span> height<span class="k2">;</span>
<span class="number"> 19</span><span class="k2">}</span>
<span class="number"> 20</span>
<span class="number"> 21</span><span class="k1">void</span> move_player<span class="k2">(</span>PLAYER <span class="k3">*</span>player, <span class="k1">int</span> map<span class="k2">[</span><span class="n">4</span><span class="k2">]</span><span class="k2">[</span><span class="n">4</span><span class="k2">]</span>, <span class="k1">int</span> speed_x, <span class="k1">int</span> speed_y<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 22</span>   <span class="k1">int</span> left<span class="k2">;</span> <span class="c">// Bounding box</span>
<span class="number"> 23</span>   <span class="k1">int</span> right<span class="k2">;</span>
<span class="number"> 24</span>   <span class="k1">int</span> top <span class="k3">=</span> player-&gt;y <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span> <span class="c">// Divided by the tile height</span>
<span class="number"> 25</span>                             <span class="c">// If your tiles are not 32x32 change this</span>
<span class="number"> 26</span>   <span class="k1">int</span> bottom <span class="k3">=</span> <span class="k2">(</span>player-&gt;y <span class="k3">+</span> height<span class="k2">)</span> <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span> <span class="c">// On a screen, the top left is 0x0, not the bottom left</span>
<span class="number"> 27</span>
<span class="number"> 28</span>   <span class="c">// Divide pixel coordinates by the height and width of the tiles to get the tile coordinates.</span>
<span class="number"> 29</span>   <span class="k1">while</span> <span class="k2">(</span>speed_x <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">{</span> <span class="c">// moving to the right</span>
<span class="number"> 30</span>      speed_x--<span class="k2">;</span>
<span class="number"> 31</span>      player-&gt;x<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 32</span>      right <span class="k3">=</span> <span class="k2">(</span>player-&gt;x <span class="k3">+</span> player-&gt;width<span class="k2">)</span> <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span>
<span class="number"> 33</span>      <span class="k1">if</span> <span class="k2">(</span>map<span class="k2">[</span>top<span class="k2">]</span><span class="k2">[</span>right<span class="k2">]</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>map<span class="k2">[</span>bottom<span class="k2">]</span><span class="k2">[</span>right<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span> <span class="c">// if this cell is not zero, the player will have collided</span>
<span class="number"> 34</span>         player-&gt;x--<span class="k2">;</span> <span class="c">// collision response</span>
<span class="number"> 35</span>         <span class="k1">break</span><span class="k2">;</span> <span class="c">// jump out the while loop</span>
<span class="number"> 36</span>      <span class="k2">}</span> 
<span class="number"> 37</span>   <span class="k2">}</span>
<span class="number"> 38</span>   <span class="k1">while</span> <span class="k2">(</span>speed_x <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 39</span>      speed_x<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 40</span>      player-&gt;x--<span class="k2">;</span>
<span class="number"> 41</span>      left <span class="k3">=</span> player-&gt;x <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span>
<span class="number"> 42</span>      <span class="k1">if</span> <span class="k2">(</span>map<span class="k2">[</span>top<span class="k2">]</span><span class="k2">[</span>left<span class="k2">]</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>map<span class="k2">[</span>bottom<span class="k2">]</span><span class="k2">[</span>left<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 43</span>         player-&gt;x<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 44</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 45</span>      <span class="k2">}</span>
<span class="number"> 46</span>   <span class="k2">}</span>
<span class="number"> 47</span>   right <span class="k3">=</span> <span class="k2">(</span>player-&gt;x <span class="k3">+</span> player-&gt;width<span class="k2">)</span> <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span>
<span class="number"> 48</span>   left <span class="k3">=</span>  player-&gt;x <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span>
<span class="number"> 49</span>   <span class="k1">while</span> <span class="k2">(</span>speed_y <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 50</span>      speed_y--<span class="k2">;</span>
<span class="number"> 51</span>      player-&gt;y<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 52</span>      bottom <span class="k3">=</span> <span class="k2">(</span>player-&gt;y <span class="k3">+</span> height<span class="k2">)</span> <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span>
<span class="number"> 53</span>      <span class="k1">if</span> <span class="k2">(</span>map<span class="k2">[</span>bottom<span class="k2">]</span><span class="k2">[</span>left<span class="k2">]</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>map<span class="k2">[</span>bottom<span class="k2">]</span><span class="k2">[</span>right<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 54</span>         player-&gt;y<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 55</span>         player-&gt;gravity <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// Setting the gravity to zero if player lands</span>
<span class="number"> 56</span>         <span class="k1">break</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="number"> 59</span>   <span class="k1">while</span> <span class="k2">(</span>speed_y <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 60</span>     speed_y<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 61</span>     player-&gt;y--<span class="k2">;</span>
<span class="number"> 62</span>     top <span class="k3">=</span> player-&gt;y <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span>
<span class="number"> 63</span>     <span class="k1">if</span> <span class="k2">(</span>map<span class="k2">[</span>top<span class="k2">]</span><span class="k2">[</span>left<span class="k2">]</span> <span class="k3">|</span><span class="k3">|</span> map<span class="k2">[</span>top<span class="k2">]</span><span class="k2">[</span>right<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 64</span>        player-&gt;<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 65</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 66</span>     <span class="k2">}</span>
<span class="number"> 67</span><span class="k2">}</span>
<span class="number"> 68</span>
<span class="number"> 69</span><span class="k1">void</span> step_player<span class="k2">(</span>PLAYER <span class="k3">*</span>player<span class="k2">)</span><span class="k2">{</span> <span class="c">// should be called every frame</span>
<span class="number"> 70</span>   player-&gt;gravity<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 71</span>   move_player<span class="k2">(</span>player, <span class="n">0</span>, player-&gt;gravity<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 72</span>   <span class="c">// You could add your controls here</span>
<span class="number"> 73</span>   <span class="c">// If you use allegro 4, you can use the key array</span>
<span class="number"> 74</span>   <span class="c">// If you use allegro 5, you can use al_get_keyboard_state()</span>
<span class="number"> 75</span>   <span class="c">// if (key[KEY_RIGHT]){</span>
<span class="number"> 76</span>   <span class="c">//      move_player(player, 2, 0);</span>
<span class="number"> 77</span>   <span class="c">//   }</span>
<span class="number"> 78</span>   <span class="k2">}</span>
<span class="number"> 79</span><span class="k2">}</span>
<span class="number"> 80</span>
<span class="number"> 81</span><span class="k1">void</span> draw_player<span class="k2">(</span>PLAYER <span class="k3">*</span>player<span class="k2">)</span><span class="k2">{</span> <span class="c">// Should be called after step_player</span>
<span class="number"> 82</span><span class="c">// It's strongly recommended to first to the logic in your game and then draw everything in your game</span>
<span class="number"> 83</span>    <a href="http://www.allegro.cc/manual/rectfill"><span class="a">rectfill</span></a><span class="k2">(</span>buffer, player-&gt;x, player-&gt;, player-&gt;x <span class="k3">+</span> player-&gt;width, player-&gt;y <span class="k3">+</span> player-&gt;height, <a href="http://www.allegro.cc/manual/makecol"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Add your own drawing procedure here</span>
<span class="number"> 84</span><span class="k2">}</span>
</div></div><p>

And how to use</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// Somewhere in your initialization</span>
PLAYER player<span class="k2">;</span>
create_player<span class="k2">(</span><span class="k3">&amp;</span>player, <span class="n">32</span>, <span class="n">32</span>, <span class="n">16</span>, <span class="n">32</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Use whatever values you like</span>
                                        <span class="c">// the &amp; symbol means address of</span>
                                        <span class="c">// We only pass the address of the player to the functions, not the whole player structure itself</span>

<span class="c">// In your main loop</span>

step_player<span class="k2">(</span><span class="k3">&amp;</span>player<span class="k2">)</span><span class="k2">;</span>
<span class="c">// after doing all the logic</span>
draw_player<span class="k2">(</span><span class="k3">&amp;</span>player<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (l j)</author>
		<pubDate>Thu, 01 Sep 2011 21:07:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok i&#39;ll study it soon xD thx taron you are very kind.<br /> move_player has 4 arguments but you send 3 arguments to the function that are: player, 2, 0.<br />is it correct?</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="n">75</span>    <span class="c">// if (key[KEY_RIGHT]){</span>
<span class="number"> 2</span> <span class="n">76</span>   <span class="c">//      move_player(player, 2, 0);</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dsds dsds)</author>
		<pubDate>Thu, 01 Sep 2011 22:44:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sorry made a mistake there. You&#39;ll also have to pass your map as a parameter.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (l j)</author>
		<pubDate>Thu, 01 Sep 2011 23:20:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can port anything in C++ to C or anything in C to C++, you just have to change the constructs.  Don&#39;t be so discouraged of other projects just because they have several &quot;files&quot;.  Separating your classes/methods into several files helps organize the project and makes it much easier to manage.  You should be doing the same.  </p><p>Anyway, don&#39;t discourage yourself because you think it&#39;s too hard, making a game takes time, lots of time, and persistence.  Writing a good game with well managed source and classes/structs takes even longer and requires experience.  Start with something smaller than a tilemap and work your way up.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Fri, 02 Sep 2011 05:21:45 +0000</pubDate>
	</item>
</rss>
