<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>My first game! (pong)</title>
		<link>http://www.allegro.cc/forums/view/606480</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 24 Feb 2011 05:18:55 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I just got into allegro this week and by the looks of it, allegro 5 is brand new and so their are very few tutorials for it (at least as far as what I can find).  After going through the few tutorials on the allegro.cc wiki, I decided to say to heck with it and try to make pong, and I&#39;ve actually gone quite a bit further than I thought I would.</p><p>Now here is the problem, I&#39;ve managed to get 3 bitmaps: 2 paddles and a bouncer.</p><p>I got the two paddles mapped to the keyboard so I can move them up and down, and the bouncer is happily bouncing around all over the place.  Now I&#39;m trying to make the bouncer bounce off the paddles. I&#39;ve included my code, the logic for the bouncing starts at line 132.</p><p>I&#39;ve got the bouncer bouncing at the same x-coordinate as the paddles, which means it bounces even when it&#39;s not hitting the paddle, no good!</p><p>BTW, I&#39;m new to the forum, so let me know if this isn&#39;t the place to post this, since it&#39;s kind of a coding question along with a concept one.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Havacore)</author>
		<pubDate>Tue, 22 Feb 2011 01:37:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Make line 141:<br /><span class="source-code"><span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>bouncer_x <span class="k3">&lt;</span><span class="k3">=</span> left_paddle_x <span class="k3">+</span> paddle_width <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span> <span class="k3">+</span> bouncer_size<span class="k3">/</span><span class="n">2</span>.<span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> bouncer_y <span class="k3">&gt;</span><span class="k3">=</span> left_paddle_y <span class="k3">-</span> bouncer_size<span class="k3">/</span><span class="n">2</span>.<span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> bouncer_y <span class="k3">&lt;</span><span class="k3">=</span> left_paddle_y <span class="k3">+</span> paddle_height <span class="k3">-</span> bouncer_width<span class="k3">/</span><span class="n">2</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>bouncer_x <span class="k3">&gt;</span><span class="k3">=</span> right_paddle_x <span class="k3">-</span> <span class="k2">(</span>paddle_width <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">-</span> bouncer_size<span class="k3">/</span><span class="n">2</span>.<span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> bouncer_y <span class="k3">&gt;</span><span class="k3">=</span> right_paddle_y <span class="k3">-</span> bouncer_size<span class="k3">/</span><span class="n">2</span>.<span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> bouncer_y <span class="k3">&lt;</span><span class="k3">=</span> right_paddle_y <span class="k3">+</span> paddle_height <span class="k3">-</span> bouncer_width<span class="k3">/</span><span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">)</span></span><br />You also want to check if it&#39;s y value is in the boundaries of the paddle.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Tue, 22 Feb 2011 01:47:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Great!  The bouncer is now bouncing off the paddles!  </p><p>Now as far as changes go from allegro4 to 5, should I be able to figure out the rest of what I need from reading examples from allegro 4 for things like, a scoreboard, restarting the board when the bouncer hits the edge of the screen, a title screen etc?</p><p>Thanks for the help btw!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Havacore)</author>
		<pubDate>Tue, 22 Feb 2011 04:25:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>My first game! </p></div></div><p>Yay! <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /></p><p>Rather than create bitmaps for the paddles and fill them with color, you could just draw them with primitives instead.  Bust out some rounded rectangles, add a little shine-shine! <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" /></p><p><span class="remote-thumbnail"><span class="json">{"name":"603455","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/a\/1a49b8bc2a314928768582ec86377c39.png","w":672,"h":530,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/a\/1a49b8bc2a314928768582ec86377c39"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/1/a/1a49b8bc2a314928768582ec86377c39-240.jpg" alt="603455" width="240" height="189" /></span></p><p>I made some examples:
</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">void</span> draw_paddle<span class="k2">(</span><span class="k1">float</span> x, <span class="k1">float</span> y<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  <span class="c">// fill</span>
<span class="number">  4</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rounded_rectangle"><span class="a">al_draw_filled_rounded_rectangle</span></a><span class="k2">(</span>x, y,
<span class="number">  5</span>    x<span class="k3">+</span>paddle_width, y<span class="k3">+</span>paddle_height, <span class="n">6</span>, <span class="n">6</span>, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"729fcf"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>  <span class="c">// outline</span>
<span class="number">  7</span>  <a href="http://www.allegro.cc/manual/al_draw_rounded_rectangle"><span class="a">al_draw_rounded_rectangle</span></a><span class="k2">(</span>x, y,
<span class="number">  8</span>    x<span class="k3">+</span>paddle_width, y<span class="k3">+</span>paddle_height, <span class="n">6</span>, <span class="n">6</span>, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"b5edff"</span><span class="k2">)</span>, <span class="n">1</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>  <span class="c">// shine</span>
<span class="number"> 10</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rounded_rectangle"><span class="a">al_draw_filled_rounded_rectangle</span></a><span class="k2">(</span>x, y,
<span class="number"> 11</span>    x<span class="k3">+</span>paddle_width<span class="k3">/</span><span class="n">2</span>, y<span class="k3">+</span>paddle_height-10, <span class="n">6</span>, <span class="n">6</span>, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"8abbef"</span><span class="k2">)</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="number"> 14</span><span class="k1">void</span> draw_ball<span class="k2">(</span><span class="k1">float</span> x, <span class="k1">float</span> y<span class="k2">)</span>
<span class="number"> 15</span><span class="k2">{</span>
<span class="number"> 16</span>  <span class="c">// fill</span>
<span class="number"> 17</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span>x, y, bouncer_size, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"6be97d"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>  <span class="c">// shadow</span>
<span class="number"> 19</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span>x<span class="k3">+</span>bouncer_size<span class="k3">/</span><span class="n">4</span>, y<span class="k3">+</span>bouncer_size<span class="k3">/</span><span class="n">4</span>,
<span class="number"> 20</span>    bouncer_size<span class="k3">/</span><span class="n">3</span><span class="k3">*</span><span class="n">2</span>, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"59ce76"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>  <span class="c">// shine</span>
<span class="number"> 22</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span>x-bouncer_size<span class="k3">/</span><span class="n">3</span>, y-bouncer_size<span class="k3">/</span><span class="n">3</span>,
<span class="number"> 23</span>    bouncer_size<span class="k3">/</span><span class="n">4</span>, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"9bffaa"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span><span class="k2">}</span>
</div></div><p>

I used </p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="p">#include &lt;allegro5/allegro_color.h&gt;</span>
</pre></div></div><p>and don&#39;t forget to 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>.</p><p>Also, I used
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLE_BUFFERS, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLES, <span class="n">4</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
before setting up the display to make the lines draw smoothly.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Tue, 22 Feb 2011 06:18:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok I can&#39;t for the life of me figure out how you did that.  I&#39;ve never used primitives before, and all I have to work off of is the allegro5 manual.  Do you still draw a bitmap and then draw the primitive on top of it?</p><p>It makes sense to me to put the draw_paddle function in another file to avoid clutter but does that mean that I should put the al_init_primitives_addon() in both .cc files?</p><p>Basically, how do I go about implementing those primitives into my code?  Do I just add the draw_paddle function at the end of the main loop where I draw the bitmaps?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Havacore)</author>
		<pubDate>Wed, 23 Feb 2011 00:01:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ll do a step by step from your original code attachment. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>1.</p><p>First, I added
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="p">#include &lt;allegro5/allegro_color.h&gt;</span>
</pre></div></div><p> just below your <span class="source-code"><span class="p">#include &lt;allegro5/allegro.h&gt;</span></span>.  All allegro_color does is gives me the function <span class="source-code"><a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="k2">)</span></span>.  You could just as easily take this out and use <span class="source-code"><a href="http://www.allegro.cc/manual/al_map_rgba_f"><span class="a">al_map_rgba_f</span></a><span class="k2">(</span><span class="k2">)</span></span> or other similar function for your colors.</p><p>2.</p><p>Those two functions I made, <span class="source-code">draw_paddle<span class="k2">(</span><span class="k1">float</span> x, <span class="k1">float</span> y<span class="k2">)</span></span> and <span class="source-code">draw_ball<span class="k2">(</span><span class="k1">float</span> x, <span class="k1">float</span> y<span class="k2">)</span></span> (same as they are in the last post), I placed them just before main.  This is also below your constants and enums.  Usually my code structure works out like this:</p><p># includes<br /># contants and other definitions<br /># functions<br /># main</p><p>3.</p><p>before you create the display, (eg. before <span class="source-code">display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></span>, I added three lines </p><div class="source-code snippet"><div class="inner"><pre><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 class="k2">;</span>
</pre></div></div><p>and</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLE_BUFFERS, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLES, <span class="n">4</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

<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 class="k2">;</span></span> can go anywhere <i>after</i> <span class="source-code"><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span></span>, and it&#39;s best to keep it with the rest of your init()s if you have more.</p><p>4.</p><p>Then, way down where you have</p><div class="source-code snippet"><div class="inner"><pre>  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>right_paddle, right_paddle_x, right_paddle_y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>left_paddle, left_paddle_x, left_paddle_y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bouncer, bouncer_x, bouncer_y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p> I commented those out and put in:</p><div class="source-code snippet"><div class="inner"><pre>  <span class="c">//al_draw_bitmap(right_paddle, right_paddle_x, right_paddle_y, 0);</span>
  <span class="c">//al_draw_bitmap(left_paddle, left_paddle_x, left_paddle_y, 0);</span>
  <span class="c">//al_draw_bitmap(bouncer, bouncer_x, bouncer_y, 0);</span>
  draw_paddle<span class="k2">(</span>right_paddle_x, right_paddle_y<span class="k2">)</span><span class="k2">;</span>
  draw_paddle<span class="k2">(</span>left_paddle_x, left_paddle_y<span class="k2">)</span><span class="k2">;</span>
  draw_ball<span class="k2">(</span>bouncer_x, bouncer_y<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

5.</p><p>Profit!</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;stdio.h&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5/allegro_color.h&gt;</span>
<span class="number">   5</span>
<span class="number">   6</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="c">/* constants and definitions */</span>
<span class="number">   9</span>
<span class="number">  10</span><span class="k1">const</span> <span class="k1">int</span> <a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a> <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span>
<span class="number">  11</span><span class="k1">const</span> <span class="k1">int</span> <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span>
<span class="number">  12</span><span class="k1">const</span> <span class="k1">float</span> FPS <span class="k3">=</span> <span class="n">60</span><span class="k2">;</span>
<span class="number">  13</span><span class="k1">const</span> <span class="k1">int</span> paddle_height <span class="k3">=</span> <span class="n">96</span><span class="k2">;</span>
<span class="number">  14</span><span class="k1">const</span> <span class="k1">int</span> paddle_width <span class="k3">=</span> <span class="n">16</span><span class="k2">;</span>
<span class="number">  15</span><span class="k1">const</span> <span class="k1">int</span> bouncer_size <span class="k3">=</span> <span class="n">16</span><span class="k2">;</span>
<span class="number">  16</span>
<span class="number">  17</span><span class="k1">enum</span> MYKEYS <span class="k2">{</span>
<span class="number">  18</span>    KEY_UP, KEY_DOWN, KEY_W, KEY_S
<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="c">/* functions */</span>
<span class="number">  23</span>
<span class="number">  24</span><span class="k1">void</span> draw_paddle<span class="k2">(</span><span class="k1">float</span> x, <span class="k1">float</span> y<span class="k2">)</span>
<span class="number">  25</span><span class="k2">{</span>
<span class="number">  26</span>  <span class="c">// fill</span>
<span class="number">  27</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rounded_rectangle"><span class="a">al_draw_filled_rounded_rectangle</span></a><span class="k2">(</span>x, y,
<span class="number">  28</span>    x<span class="k3">+</span>paddle_width, y<span class="k3">+</span>paddle_height, <span class="n">3</span>, <span class="n">3</span>, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"729fcf"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>  <span class="c">// outline</span>
<span class="number">  30</span>  <a href="http://www.allegro.cc/manual/al_draw_rounded_rectangle"><span class="a">al_draw_rounded_rectangle</span></a><span class="k2">(</span>x, y,
<span class="number">  31</span>    x<span class="k3">+</span>paddle_width, y<span class="k3">+</span>paddle_height, <span class="n">3</span>, <span class="n">3</span>, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"b5edff"</span><span class="k2">)</span>, <span class="n">1</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  32</span>  <span class="c">// shine</span>
<span class="number">  33</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rounded_rectangle"><span class="a">al_draw_filled_rounded_rectangle</span></a><span class="k2">(</span>x, y,
<span class="number">  34</span>    x<span class="k3">+</span>paddle_width<span class="k3">/</span><span class="n">2</span>, y<span class="k3">+</span>paddle_height-10, <span class="n">3</span>, <span class="n">3</span>, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"8abbef"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span><span class="k2">}</span>
<span class="number">  36</span>
<span class="number">  37</span><span class="k1">void</span> draw_ball<span class="k2">(</span><span class="k1">float</span> x, <span class="k1">float</span> y<span class="k2">)</span>
<span class="number">  38</span><span class="k2">{</span>
<span class="number">  39</span>  <span class="c">// fill</span>
<span class="number">  40</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span>x, y, bouncer_size, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"6be97d"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>  <span class="c">// shadow</span>
<span class="number">  42</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span>x<span class="k3">+</span>bouncer_size<span class="k3">/</span><span class="n">4</span>, y<span class="k3">+</span>bouncer_size<span class="k3">/</span><span class="n">4</span>, bouncer_size<span class="k3">/</span><span class="n">3</span><span class="k3">*</span><span class="n">2</span>, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"59ce76"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>  <span class="c">// shine</span>
<span class="number">  44</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span>x-bouncer_size<span class="k3">/</span><span class="n">3</span>, y-bouncer_size<span class="k3">/</span><span class="n">3</span>, bouncer_size<span class="k3">/</span><span class="n">4</span>, <a href="http://www.allegro.cc/manual/al_color_html"><span class="a">al_color_html</span></a><span class="k2">(</span><span class="s">"9bffaa"</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span><span class="k2">}</span>
<span class="number">  46</span>
<span class="number">  47</span>
<span class="number">  48</span>
<span class="number">  49</span>
<span class="number">  50</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>argv<span class="k2">)</span>
<span class="number">  51</span><span class="k2">{</span>
<span class="number">  52</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  53</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  54</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  55</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>right_paddle <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  56</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>left_paddle <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  57</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bouncer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  58</span>
<span class="number">  59</span>    <span class="k1">float</span> right_paddle_x <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a> <span class="k3">*</span> <span class="n">4</span><span class="k3">/</span><span class="n">5</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>paddle_width <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>    <span class="k1">float</span> right_paddle_y <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>paddle_height <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>    
<span class="number">  62</span>    <span class="k1">float</span> left_paddle_x <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a> <span class="k3">*</span> <span class="n">1</span><span class="k3">/</span><span class="n">5</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>paddle_width <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span> 
<span class="number">  63</span>    <span class="k1">float</span> left_paddle_y <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>paddle_height <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>    
<span class="number">  65</span>    <span class="k1">float</span> bouncer_x <span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a> <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span> <span class="k3">-</span> bouncer_size <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  66</span>    <span class="k1">float</span> bouncer_y <span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span> <span class="k3">-</span> bouncer_size <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  67</span>    <span class="k1">float</span> bouncer_dx <span class="k3">=</span> <span class="n">4</span>.<span class="n">0</span>, bouncer_dy <span class="k3">=</span> <span class="k3">-</span><span class="n">4</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  68</span>    
<span class="number">  69</span>    <span class="k1">bool</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span><span class="n">4</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="k1">false</span>, <span class="k1">false</span>, <span class="k1">false</span>, <span class="k1">false</span> <span class="k2">}</span><span class="k2">;</span>
<span class="number">  70</span>    <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  71</span>    <span class="k1">bool</span> doexit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  72</span>    
<span class="number">  73</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  74</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to initialized allegro\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</span>  <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  76</span>    <span class="k2">}</span>
<span class="number">  77</span>    
<span class="number">  78</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  79</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to install keyboard\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  80</span>  <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  81</span>    <span class="k2">}</span>
<span class="number">  82</span>
<span class="number">  83</span>
<span class="number">  84</span>  <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 class="k2">;</span>
<span class="number">  85</span>
<span class="number">  86</span>   <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLE_BUFFERS, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>  <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLES, <span class="n">4</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>  
<span class="number">  88</span>   
<span class="number">  89</span>
<span class="number">  90</span>    <span class="c">//initialize display (w, h)</span>
<span class="number">  91</span>    display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  93</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to create display\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>  <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  95</span>    <span class="k2">}</span>
<span class="number">  96</span>    
<span class="number">  97</span>    timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span><span class="k3">/</span>FPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>timer<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  99</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to create timer\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>  <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 101</span>    <span class="k2">}</span>
<span class="number"> 102</span>    
<span class="number"> 103</span>    right_paddle <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span>paddle_width, paddle_height<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>right_paddle<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 105</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to create right paddle bitmap\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 106</span>  <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 107</span>    <span class="k2">}</span>
<span class="number"> 108</span>    
<span class="number"> 109</span>    left_paddle <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span>paddle_width, paddle_height<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>left_paddle<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 111</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to create left paddle bitmap\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>  <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 113</span>    <span class="k2">}</span>
<span class="number"> 114</span>    bouncer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span>bouncer_size, bouncer_size<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>bouncer<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 116</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to create bouncer bitmap\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 117</span>  <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 118</span>    <span class="k2">}</span>
<span class="number"> 119</span>    
<span class="number"> 120</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>left_paddle<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 121</span>    <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</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">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="number"> 122</span>    
<span class="number"> 123</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>right_paddle<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>    <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</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">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="number"> 125</span>    
<span class="number"> 126</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>bouncer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span>    <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</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">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 128</span>    
<span class="number"> 129</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 130</span>
<span class="number"> 131</span>    event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 132</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>event_queue<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 133</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to create event queue\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 134</span>  <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 135</span>    <span class="k2">}</span>
<span class="number"> 136</span>    
<span class="number"> 137</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 138</span>    
<span class="number"> 139</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 140</span>    
<span class="number"> 141</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 142</span>    
<span class="number"> 143</span>    <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</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">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>    
<span class="number"> 145</span>    <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 146</span>    
<span class="number"> 147</span>    <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 148</span>    
<span class="number"> 149</span>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>doexit<span class="k2">)</span>
<span class="number"> 150</span>    <span class="k2">{</span>
<span class="number"> 151</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number"> 152</span>  
<span class="number"> 153</span>  <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 154</span>  
<span class="number"> 155</span>  <span class="k1">if</span><span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 156</span>      
<span class="number"> 157</span>      <span class="c">//logic for moving the paddles on input</span>
<span class="number"> 158</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_UP<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> right_paddle_y <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">4</span>.<span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 159</span>    right_paddle_y <span class="k3">-</span><span class="k3">=</span> <span class="n">4</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 160</span>      <span class="k2">}</span>
<span class="number"> 161</span>      
<span class="number"> 162</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_DOWN<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> right_paddle_y <span class="k3">&lt;</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">-</span> paddle_height <span class="k3">-</span> <span class="n">4</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 163</span>    right_paddle_y <span class="k3">+</span><span class="k3">=</span> <span class="n">4</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 164</span>      <span class="k2">}</span>
<span class="number"> 165</span>      
<span class="number"> 166</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_W<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> left_paddle_y <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">4</span>.<span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 167</span>    left_paddle_y <span class="k3">-</span><span class="k3">=</span> <span class="n">4</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 168</span>      <span class="k2">}</span>
<span class="number"> 169</span>      
<span class="number"> 170</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_S<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> left_paddle_y <span class="k3">&lt;</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">-</span> paddle_height <span class="k3">-</span> <span class="n">4</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 171</span>    left_paddle_y <span class="k3">+</span><span class="k3">=</span> <span class="n">4</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 172</span>      <span class="k2">}</span>
<span class="number"> 173</span>      
<span class="number"> 174</span>      <span class="c">//logic for the bouncer</span>
<span class="number"> 175</span>      <span class="k1">if</span><span class="k2">(</span>bouncer_x <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> bouncer_x <span class="k3">&gt;</span> <a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a> <span class="k3">-</span> bouncer_size<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 176</span>    bouncer_dx <span class="k3">=</span> <span class="k3">-</span>bouncer_dx<span class="k2">;</span>
<span class="number"> 177</span>      <span class="k2">}</span>
<span class="number"> 178</span>      
<span class="number"> 179</span>      <span class="k1">if</span><span class="k2">(</span>bouncer_y <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> bouncer_y <span class="k3">&gt;</span> <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">-</span> bouncer_size<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 180</span>    bouncer_dy <span class="k3">=</span> <span class="k3">-</span>bouncer_dy<span class="k2">;</span>
<span class="number"> 181</span>      <span class="k2">}</span>
<span class="number"> 182</span>      
<span class="number"> 183</span>       <span class="k1">if</span><span class="k2">(</span>bouncer_x <span class="k3">=</span><span class="k3">=</span> left_paddle_x <span class="k3">+</span> <span class="k2">(</span>paddle_width <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> bouncer_x <span class="k3">=</span><span class="k3">=</span> right_paddle_x <span class="k3">-</span> <span class="k2">(</span>paddle_width <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 184</span>    bouncer_dx <span class="k3">=</span> <span class="k3">-</span>bouncer_dx<span class="k2">;</span>
<span class="number"> 185</span>      <span class="k2">}</span>
<span class="number"> 186</span>  
<span class="number"> 187</span>      
<span class="number"> 188</span>      bouncer_x <span class="k3">+</span><span class="k3">=</span> bouncer_dx<span class="k2">;</span>
<span class="number"> 189</span>      bouncer_y <span class="k3">+</span><span class="k3">=</span> bouncer_dy<span class="k2">;</span>
<span class="number"> 190</span>      
<span class="number"> 191</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 192</span>  <span class="k2">}</span>
<span class="number"> 193</span>  
<span class="number"> 194</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 195</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 196</span>  <span class="k2">}</span>
<span class="number"> 197</span>  
<span class="number"> 198</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 199</span>      <span class="k1">switch</span><span class="k2">(</span>ev.keyboard.keycode<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 200</span>    <span class="k1">case</span> ALLEGRO_KEY_UP:
<span class="number"> 201</span>        <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 202</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 203</span>    
<span class="number"> 204</span>    <span class="k1">case</span> ALLEGRO_KEY_DOWN:
<span class="number"> 205</span>        <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 206</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 207</span>        
<span class="number"> 208</span>    <span class="k1">case</span> ALLEGRO_KEY_W:
<span class="number"> 209</span>        <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_W<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 210</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 211</span>        
<span class="number"> 212</span>    <span class="k1">case</span> ALLEGRO_KEY_S:
<span class="number"> 213</span>        <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_S<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 214</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 215</span>      <span class="k2">}</span>
<span class="number"> 216</span>  <span class="k2">}</span>
<span class="number"> 217</span>  
<span class="number"> 218</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_UP<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 219</span>      <span class="k1">switch</span><span class="k2">(</span>ev.keyboard.keycode<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 220</span>    <span class="k1">case</span> ALLEGRO_KEY_UP:
<span class="number"> 221</span>        <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 222</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 223</span>        
<span class="number"> 224</span>    <span class="k1">case</span> ALLEGRO_KEY_DOWN:
<span class="number"> 225</span>        <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 226</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 227</span>        
<span class="number"> 228</span>    <span class="k1">case</span> ALLEGRO_KEY_W:
<span class="number"> 229</span>        <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_W<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 230</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 231</span>        
<span class="number"> 232</span>    <span class="k1">case</span> ALLEGRO_KEY_S:
<span class="number"> 233</span>        <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_S<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 234</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 235</span>    
<span class="number"> 236</span>    <span class="k1">case</span> ALLEGRO_KEY_ESCAPE:
<span class="number"> 237</span>        doexit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 238</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 239</span>      <span class="k2">}</span>
<span class="number"> 240</span>  <span class="k2">}</span>
<span class="number"> 241</span>  
<span class="number"> 242</span>  <span class="k1">if</span><span class="k2">(</span>redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 243</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 244</span>      
<span class="number"> 245</span>      <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</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">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 246</span>      
<span class="number"> 247</span>    draw_paddle<span class="k2">(</span>right_paddle_x, right_paddle_y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 248</span>    draw_paddle<span class="k2">(</span>left_paddle_x, left_paddle_y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 249</span>    draw_ball<span class="k2">(</span>bouncer_x, bouncer_y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 250</span>
<span class="number"> 251</span>      <span class="c">//al_draw_bitmap(right_paddle, right_paddle_x, right_paddle_y, 0);</span>
<span class="number"> 252</span>      <span class="c">//al_draw_bitmap(left_paddle, left_paddle_x, left_paddle_y, 0);</span>
<span class="number"> 253</span>      <span class="c">//al_draw_bitmap(bouncer, bouncer_x, bouncer_y, 0);</span>
<span class="number"> 254</span>      
<span class="number"> 255</span>      <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 256</span>  <span class="k2">}</span>
<span class="number"> 257</span>    <span class="k2">}</span>
<span class="number"> 258</span>    
<span class="number"> 259</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bouncer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 260</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>right_paddle<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 261</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>left_paddle<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 262</span>    <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 263</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 264</span>    <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 265</span>    
<span class="number"> 266</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 267</span><span class="k2">}</span>
</div></div><p>

</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606480/904736#target">Havacore</a> said:</div><div class="quote"><p> Do you still draw a bitmap and then draw the primitive on top of it?</p></div></div><p>Nope.  Primitives draw themselves.  Of course, you&#39;re drawing the primitives to the <i>display</i>, which technically is a bitmap.  But you don&#39;t need to have any extra surfaces to render primitives.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>It makes sense to me to put the draw_paddle function in another file to avoid clutter but does that mean that I should put the al_init_primitives_addon() in both .cc files?</p></div></div><p><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> is like <span class="source-code"><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span></span>.  You only need to call it once when you setup your program and you&#39;re good to go.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>Do I just add the draw_paddle function at the end of the main loop where I draw the bitmaps?
</p></div></div><p>Yeaup. <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Wed, 23 Feb 2011 05:14:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>

<img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /> Thanks for the help!!!</p><p>Now I&#39;m trying to figure out how to add font so that I can add in a scoreboard. I took a look at the code in the allegro wiki on how to do fonts, but I can&#39;t seem to compile it properly.  Here is the error</p><p>jason@Wally:~/Documents/game dev/allegro wiki lessons/lesson 6$ gcc lesson6fonts.cc -o lesson $(pkg-config --libs allegro-5.0 allegro_font-5.0 allegro_ttf-5.0)<br />jason@Wally:~/Documents/game dev/allegro wiki lessons/lesson 6$ ./lesson<br />lesson: /home/jason/Documents/games/allegro-5.0/addons/font/text.c:73: al_draw_ustr: Assertion `font&#39; failed.<br />Aborted<br />jason@Wally:~/Documents/game dev/allegro wiki lessons/lesson 6$ </p><p>Looking at this terminal panic, it&#39;s looking for the fonts config in a folder called jason/Documents/games, which doesn&#39;t exist.  My allegro folder is in Documents/game dev/allegro-5.0/etc...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Havacore)</author>
		<pubDate>Wed, 23 Feb 2011 23:47:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Do you mean <a href="http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial/Addons/Fonts">that page</a>?</p><p>Anyway, it seems that the compilation is not the problem, but loading the font is. Have you tried putting the font file into the directory where you call your program from? This would most probably be the directory where you have your executable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Faerber)</author>
		<pubDate>Thu, 24 Feb 2011 02:10:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just tried that, but it didn&#39;t work <img src="http://www.allegro.cc/forums/smileys/embarassed.gif" alt=":-[" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Havacore)</author>
		<pubDate>Thu, 24 Feb 2011 03:50:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Which front end/compiler are you using?  CodeBlocks likes to create a bin folder for your executable, but keep the root folder for your project by default.</p><p>Also, what is the code you&#39;re using to try and initialize the font?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Roy)</author>
		<pubDate>Thu, 24 Feb 2011 04:25:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m using gcc</p><p>The code that I&#39;m using is from the allegro <a href="http://wiki.allegro.cc/index.php?title=Allegro_5_Tutorial/Addons/Fonts">wiki</a></p><p>Just trying to get that code to work so that I can implement it into my game
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Havacore)</author>
		<pubDate>Thu, 24 Feb 2011 05:18:55 +0000</pubDate>
	</item>
</rss>
