<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Randomness-ish</title>
		<link>http://www.allegro.cc/forums/view/611344</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 30 Oct 2012 07:38:27 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m trying to do finishing touches on a simple game for a competition and I hit a snag I hadn&#39;t put any thought into until now. I have the random number generator:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">int</span> iSecret <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">608</span> <span class="k3">+</span> <span class="n">16</span><span class="k2">;</span>
</pre></div></div><p>

My plan was to do <span class="source-code">aiShip.setCoords<span class="k2">(</span>iSecret, <span class="k3">-</span><span class="n">20</span><span class="k2">)</span><span class="k2">;</span></span>, but I don&#39;t know how to make iSecret continuously generate random numbers so the ship redraws itself on different parts of the screen. I have to do this for a few ships so that you have more than one ship on screen, and plan to make a second variable to randomize the velocity of each ship between say 1 and 5.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Specter Phoenix)</author>
		<pubDate>Mon, 29 Oct 2012 09:14:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;re not using srand() prior to every rand() call, are you?  You&#39;ll only get a different result once per second if you do.  Call srand() once at the beginning of the program only.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Mon, 29 Oct 2012 09:18:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No, I only have srand(time(NULL)); at that start of main. So I just need to do the iSecret = rand() % ... after it is destroyed or goes off screen? Never used it outside of guess my number programs so wasn&#39;t sure how to use it for continuous random numbers.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Specter Phoenix)</author>
		<pubDate>Mon, 29 Oct 2012 09:25:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/611344/969107#target">Specter Phoenix</a> said:</div><div class="quote"><p> how to make iSecret continuously generate random numbers so the ship redraws itself on different parts of the screen.</p></div></div><p>You want the ship to appear in different positions (except smooth transitions due to velocity) how often?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Mon, 29 Oct 2012 09:27:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>One of the things I&#39;m still working out. It is kind of a trial and error type thing. I&#39;m not even sure how many ships I will have appearing on screen and still have to decide if I want to modify the code more to space out the &#39;entry/launch&#39; time or just leave it to randomly set the velocity and leave it at that. I&#39;m leaning towards the latter as this is due by midnight tomorrow for Moosader&#39;s Villain and One button competition.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Specter Phoenix)</author>
		<pubDate>Mon, 29 Oct 2012 09:35:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/611344/969109#target">Specter Phoenix</a> said:</div><div class="quote"><p> I just need to do the iSecret = rand() % ... after it is destroyed or goes off screen?</p></div></div><p>You&#39;d use it when creating a new ship (whether that happens because another one was destroyed, or because it&#39;s part of arriving reinforcements or whatever).  Then you&#39;d modify its location once per frame with a velocity that might have been initialized with a rand for x and a rand for y.  You&#39;d need to modify the velocities to make it change course, naturally.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Mon, 29 Oct 2012 09:41:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Can u post a little more code?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gabriel Campos)</author>
		<pubDate>Mon, 29 Oct 2012 18:02:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah, the competition is pretty much over and I never got it done, so I&#39;m not worried about it now. I got it semi working to like it and feel I accomplished what I set out to do (minus finishing the game). Forgive some of the ugly code, I started trying different ideas without much thought to see what it would do to the game (which is why there are tons of rand calls, was trying to see what effects it would have..some worked like I planned and others not so much).</p><div class="spoiler"><p>
<b>game.h</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="p">#ifndef GAME_H</span>
<span class="number">  2</span><span class="p">#define GAME_H</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  6</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">  7</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">  8</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="k1">struct</span> GAME
<span class="number"> 11</span><span class="k2">{</span>
<span class="number"> 12</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>
<span class="number"> 13</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="k2">;</span>
<span class="number"> 14</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer<span class="k2">;</span>
<span class="number"> 15</span>    <span class="c">// ALLEGRO_BITMAP *icon;</span>
<span class="number"> 16</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">;</span>
<span class="number"> 17</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span><span class="p">#endif</span>
</div></div><p>
<b>init.h</b>
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#ifndef INIT_H</span>
<span class="p">#define INIT_H</span>

<span class="p">#include "game.h"</span>

<span class="k1">void</span> init<span class="k2">(</span>GAME <span class="k3">*</span>game<span class="k2">)</span><span class="k2">;</span>

<span class="p">#endif</span>
</pre></div></div><p>
<b>init.cpp</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="p">#include "init.h"</span>
<span class="number">  2</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">  3</span>
<span class="number">  4</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">  5</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">  6</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">  7</span>
<span class="number">  8</span><span class="k1">void</span> init<span class="k2">(</span>GAME <span class="k3">*</span>game<span class="k2">)</span>
<span class="number">  9</span><span class="k2">{</span>
<span class="number"> 10</span>    <span class="c">// log file</span>
<span class="number"> 11</span>    std::ofstream myLog<span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span>    myLog.open<span class="k2">(</span><span class="s">"data/err.log"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</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="number"> 16</span>    <span class="k2">{</span>
<span class="number"> 17</span>        myLog <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Allegro failed to initialize...\n"</span><span class="k2">;</span>
<span class="number"> 18</span>    <span class="k2">}</span>
<span class="number"> 19</span>
<span class="number"> 20</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</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"> 21</span>    <span class="k2">{</span>
<span class="number"> 22</span>        myLog <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to initialize primitive addon...\n"</span><span class="k2">;</span>
<span class="number"> 23</span>    <span class="k2">}</span>
<span class="number"> 24</span>
<span class="number"> 25</span>    <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>    <a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>
<span class="number"> 28</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="number"> 29</span>    <span class="k2">{</span>
<span class="number"> 30</span>        myLog <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to install keyboard...\n"</span><span class="k2">;</span>
<span class="number"> 31</span>    <span class="k2">}</span>
<span class="number"> 32</span>
<span class="number"> 33</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 34</span>    <span class="k2">{</span>
<span class="number"> 35</span>        myLog <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to install mouse...\n"</span><span class="k2">;</span>
<span class="number"> 36</span>    <span class="k2">}</span>
<span class="number"> 37</span>
<span class="number"> 38</span>    game-&gt;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"> 39</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>game-&gt;timer<span class="k2">)</span>
<span class="number"> 40</span>    <span class="k2">{</span>
<span class="number"> 41</span>        myLog <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to create timer...\n"</span><span class="k2">;</span>
<span class="number"> 42</span>    <span class="k2">}</span>
<span class="number"> 43</span>
<span class="number"> 44</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><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>        myLog <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to initialize image addon...\n"</span><span class="k2">;</span>
<span class="number"> 47</span>    <span class="k2">}</span>
<span class="number"> 48</span>
<span class="number"> 49</span>    game-&gt;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"> 50</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>game-&gt;display<span class="k2">)</span>
<span class="number"> 51</span>    <span class="k2">{</span>
<span class="number"> 52</span>        myLog <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to create display...\n"</span><span class="k2">;</span>
<span class="number"> 53</span>    <span class="k2">}</span>
<span class="number"> 54</span>
<span class="number"> 55</span>    game-&gt;font <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_ttf_font"><span class="a">al_load_ttf_font</span></a><span class="k2">(</span><span class="s">"data/DejaVuSans.ttf"</span>, <span class="n">30</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>game-&gt;font<span class="k2">)</span>
<span class="number"> 57</span>    <span class="k2">{</span>
<span class="number"> 58</span>        myLog <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to load font...\n"</span><span class="k2">;</span>
<span class="number"> 59</span>    <span class="k2">}</span>
<span class="number"> 60</span>
<span class="number"> 61</span>    game-&gt;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"> 62</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>game-&gt;event_queue<span class="k2">)</span>
<span class="number"> 63</span>    <span class="k2">{</span>
<span class="number"> 64</span>        myLog <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to create event queue...\n"</span><span class="k2">;</span>
<span class="number"> 65</span>    <span class="k2">}</span>
<span class="number"> 66</span>
<span class="number"> 67</span>    myLog.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 68</span>
<span class="number"> 69</span><span class="k2">}</span>
</div></div><p>
<b>sprite.h</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="p">#ifndef SPRITE_H</span>
<span class="number">  2</span><span class="p">#define SPRITE_H</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="p">#include &lt;vector&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;string&gt;</span>
<span class="number">  6</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  7</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  8</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  9</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number"> 10</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number"> 11</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number"> 12</span>
<span class="number"> 13</span><span class="k1">class</span> SPRITE
<span class="number"> 14</span><span class="k2">{</span>
<span class="number"> 15</span>        <span class="k1">float</span> x, y, w, h, xVel, yVel<span class="k2">;</span>
<span class="number"> 16</span>        <span class="k1">int</span> frames<span class="k2">;</span>
<span class="number"> 17</span>        <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>sprite<span class="k2">;</span>
<span class="number"> 18</span>        std::vector<span class="k3">&lt;</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span><span class="k3">&gt;</span> anim<span class="k2">;</span>
<span class="number"> 19</span>    public:
<span class="number"> 20</span>        <span class="k1">int</span> loadSpriteSheets<span class="k2">(</span>std::string filename<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>        <span class="k1">void</span> setCoord<span class="k2">(</span><span class="k1">float</span> sX, <span class="k1">float</span> sY<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>        <span class="k1">void</span> setData<span class="k2">(</span><span class="k1">float</span> sW, <span class="k1">float</span> sH, <span class="k1">float</span> sXVel, <span class="k1">float</span> sYVel, <span class="k1">int</span> frameCount<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>        <span class="k1">void</span> draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>        <span class="k1">void</span> randDraw<span class="k2">(</span><span class="k1">int</span> num<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>        <span class="k1">void</span> animate<span class="k2">(</span><span class="k1">int</span> ticks, <span class="k1">int</span> speed<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>        <span class="k1">void</span> movement<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>        <span class="k1">float</span> getX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>        <span class="k1">float</span> getY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>        <span class="k1">float</span> getW<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>        <span class="k1">float</span> getH<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 32</span>
<span class="number"> 33</span><span class="k1">bool</span> Collision<span class="k2">(</span>SPRITE A, SPRITE B<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>
<span class="number"> 35</span><span class="p">#endif</span>
</div></div><p>
<b>sprite.cpp</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="p">#include "sprite.h"</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">int</span> SPRITE::loadSpriteSheets<span class="k2">(</span>std::string filename<span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span>    sprite <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span>filename.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>sprite<span class="k2">)</span>
<span class="number">  7</span>    <span class="k2">{</span>
<span class="number">  8</span>        std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Spritesheet failed to load file: "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> filename <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"\n"</span><span class="k2">;</span>
<span class="number">  9</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 10</span>    <span class="k2">}</span>
<span class="number"> 11</span>    <span class="k1">return</span> <span class="n">0</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> SPRITE::setCoord<span class="k2">(</span><span class="k1">float</span> sX, <span class="k1">float</span> sY<span class="k2">)</span>
<span class="number"> 15</span><span class="k2">{</span>
<span class="number"> 16</span>    x <span class="k3">=</span> sX<span class="k2">;</span>
<span class="number"> 17</span>    y <span class="k3">=</span> sY<span class="k2">;</span>
<span class="number"> 18</span><span class="k2">}</span>
<span class="number"> 19</span>
<span class="number"> 20</span><span class="k1">void</span> SPRITE::setData<span class="k2">(</span><span class="k1">float</span> sW, <span class="k1">float</span> sH, <span class="k1">float</span> sXVel, <span class="k1">float</span> sYVel, <span class="k1">int</span> frameCount<span class="k2">)</span>
<span class="number"> 21</span><span class="k2">{</span>
<span class="number"> 22</span>    w <span class="k3">=</span> sW<span class="k2">;</span>
<span class="number"> 23</span>    h <span class="k3">=</span> sH<span class="k2">;</span>
<span class="number"> 24</span>    xVel <span class="k3">=</span> sXVel<span class="k2">;</span>
<span class="number"> 25</span>    yVel <span class="k3">=</span> sYVel<span class="k2">;</span>
<span class="number"> 26</span>    frames <span class="k3">=</span> frameCount<span class="k2">;</span>
<span class="number"> 27</span><span class="k2">}</span>
<span class="number"> 28</span><span class="k1">void</span> SPRITE::draw<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 29</span><span class="k2">{</span>
<span class="number"> 30</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>sprite, x, y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span><span class="k2">}</span>
<span class="number"> 32</span>
<span class="number"> 33</span><span class="k1">void</span> SPRITE::randDraw<span class="k2">(</span><span class="k1">int</span> num<span class="k2">)</span>
<span class="number"> 34</span><span class="k2">{</span>
<span class="number"> 35</span>    <span class="k1">int</span> tileOffset <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 36</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> frames<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 37</span>    <span class="k2">{</span>
<span class="number"> 38</span>        anim.push_back<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_create_sub_bitmap"><span class="a">al_create_sub_bitmap</span></a><span class="k2">(</span>sprite, tileOffset, <span class="n">0</span>, w, h<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>        tileOffset <span class="k3">=</span> tileOffset <span class="k3">+</span> w<span class="k2">;</span>
<span class="number"> 40</span>    <span class="k2">}</span>
<span class="number"> 41</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>anim<span class="k2">[</span>num<span class="k2">]</span>, x, y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span><span class="k2">}</span>
<span class="number"> 43</span>
<span class="number"> 44</span><span class="k1">void</span> SPRITE::animate<span class="k2">(</span><span class="k1">int</span> ticks, <span class="k1">int</span> speed<span class="k2">)</span>
<span class="number"> 45</span><span class="k2">{</span>
<span class="number"> 46</span>    <span class="k1">int</span> tileOffset <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 47</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> frames<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 48</span>    <span class="k2">{</span>
<span class="number"> 49</span>        anim.push_back<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_create_sub_bitmap"><span class="a">al_create_sub_bitmap</span></a><span class="k2">(</span>sprite, tileOffset, <span class="n">0</span>, w, h<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>        tileOffset <span class="k3">=</span> tileOffset <span class="k3">+</span> w<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/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>anim<span class="k2">[</span>ticks<span class="k3">/</span> speed % frames<span class="k2">]</span>, x, y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 53</span><span class="k2">}</span>
<span class="number"> 54</span>
<span class="number"> 55</span><span class="k1">void</span> SPRITE::movement<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 56</span><span class="k2">{</span>
<span class="number"> 57</span>    y <span class="k3">+</span><span class="k3">=</span> yVel<span class="k2">;</span>
<span class="number"> 58</span><span class="k2">}</span>
<span class="number"> 59</span>
<span class="number"> 60</span><span class="k1">float</span> SPRITE::getX<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k1">return</span> x<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 61</span><span class="k1">float</span> SPRITE::getY<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k1">return</span> y<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 62</span><span class="k1">float</span> SPRITE::getW<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k1">return</span> w<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 63</span><span class="k1">float</span> SPRITE::getH<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k1">return</span> h<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 64</span>
<span class="number"> 65</span><span class="k1">bool</span> Collision<span class="k2">(</span>SPRITE A, SPRITE B<span class="k2">)</span>
<span class="number"> 66</span><span class="k2">{</span>
<span class="number"> 67</span>  <span class="c">// find the sides of rect</span>
<span class="number"> 68</span>  <span class="k1">int</span> leftA, leftB<span class="k2">;</span>
<span class="number"> 69</span>  <span class="k1">int</span> rightA, rightB<span class="k2">;</span>
<span class="number"> 70</span>  <span class="k1">int</span> topA, topB<span class="k2">;</span>
<span class="number"> 71</span>  <span class="k1">int</span> bottomA, bottomB<span class="k2">;</span>
<span class="number"> 72</span>
<span class="number"> 73</span>  <span class="c">// calculate the sides of rect a</span>
<span class="number"> 74</span>  leftA <span class="k3">=</span> A.getX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 75</span>  rightA <span class="k3">=</span> A.getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> A.getW<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 76</span>  topA <span class="k3">=</span> A.getY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 77</span>  bottomA <span class="k3">=</span> A.getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> A.getH<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 78</span>
<span class="number"> 79</span>  <span class="c">// calculate the sides of rect b</span>
<span class="number"> 80</span>  leftB <span class="k3">=</span> B.getX<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 81</span>  rightB <span class="k3">=</span> B.getX<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> B.getW<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 82</span>  topB <span class="k3">=</span> B.getY<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 83</span>  bottomB <span class="k3">=</span> B.getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> B.getH<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 84</span>
<span class="number"> 85</span>  <span class="c">// if any of the sides from a are outside of b</span>
<span class="number"> 86</span>  <span class="k1">if</span><span class="k2">(</span>bottomA <span class="k3">&lt;</span><span class="k3">=</span> topB<span class="k2">)</span><span class="k2">{</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 87</span>  <span class="k1">if</span><span class="k2">(</span>topA <span class="k3">&gt;</span><span class="k3">=</span> bottomB<span class="k2">)</span><span class="k2">{</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 88</span>  <span class="k1">if</span><span class="k2">(</span>rightA <span class="k3">&lt;</span><span class="k3">=</span> leftB<span class="k2">)</span><span class="k2">{</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 89</span>  <span class="k1">if</span><span class="k2">(</span>leftA <span class="k3">&gt;</span><span class="k3">=</span> rightB<span class="k2">)</span><span class="k2">{</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 90</span>
<span class="number"> 91</span>  <span class="c">// if none of the sides from a are outside b</span>
<span class="number"> 92</span>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 93</span><span class="k2">}</span>
</div></div><p>
<b>main.cpp</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="p">#include "init.h"</span>
<span class="number">   2</span><span class="p">#include "sprite.h"</span>
<span class="number">   3</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;cstdio&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;cstdlib&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;ctime&gt;</span>
<span class="number">   7</span>
<span class="number">   8</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">   9</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">  10</span><span class="c">//#define SCREEN_WIDTH 640</span>
<span class="number">  11</span><span class="c">//#define SCREEN_HEIGHT 480</span>
<span class="number">  12</span><span class="c">//#define BLOCKSIZE 32</span>
<span class="number">  13</span><span class="c">// 20 * 32 = 640</span>
<span class="number">  14</span><span class="c">// 15 * 32 = 480</span>
<span class="number">  15</span><span class="c">// 2d array int [row][col]</span>
<span class="number">  16</span>
<span class="number">  17</span><span class="k1">enum</span> MYKEYS<span class="k2">{</span> KEY_SPACE, KEY_F1 <span class="k2">}</span><span class="k2">;</span>
<span class="number">  18</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">2</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="k2">}</span><span class="k2">;</span>
<span class="number">  19</span>
<span class="number">  20</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  21</span><span class="k2">{</span>
<span class="number">  22</span>    <span class="c">/* initialize random seed: */</span>
<span class="number">  23</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span>
<span class="number">  25</span>    <span class="k1">int</span> iSecret <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">608</span> <span class="k3">+</span> <span class="n">16</span><span class="k2">;</span>
<span class="number">  26</span>    <span class="k1">int</span> sprite <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">5</span><span class="k2">;</span>
<span class="number">  27</span>    <span class="k1">int</span> randYVel <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">6</span> <span class="k3">+</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  28</span>
<span class="number">  29</span>    <span class="k1">int</span> ticks <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  30</span>    <span class="k1">int</span> score <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  31</span>
<span class="number">  32</span>    GAME game<span class="k2">;</span>
<span class="number">  33</span>    init<span class="k2">(</span><span class="k3">&amp;</span>game<span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>
<span class="number">  35</span>    SPRITE playerShip<span class="k2">;</span>
<span class="number">  36</span>    SPRITE splashScreen<span class="k2">;</span>
<span class="number">  37</span>    SPRITE help<span class="k2">;</span>
<span class="number">  38</span>    SPRITE info<span class="k2">;</span>
<span class="number">  39</span>    SPRITE aiShip<span class="k2">;</span>
<span class="number">  40</span>    SPRITE explosion<span class="k2">;</span>
<span class="number">  41</span>
<span class="number">  42</span>    splashScreen.loadSpriteSheets<span class="k2">(</span><span class="s">"data/splash.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>    splashScreen.setCoord<span class="k2">(</span><span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>    splashScreen.setData<span class="k2">(</span><span class="n">640</span>, <span class="n">480</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="number">  45</span>
<span class="number">  46</span>    help.loadSpriteSheets<span class="k2">(</span><span class="s">"data/help.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</span>    help.setCoord<span class="k2">(</span><span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>    help.setData<span class="k2">(</span><span class="n">640</span>, <span class="n">480</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="number">  49</span>
<span class="number">  50</span>    info.loadSpriteSheets<span class="k2">(</span><span class="s">"data/dirSheet.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  51</span>    info.setCoord<span class="k2">(</span><span class="n">512</span>, <span class="n">448</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>    info.setData<span class="k2">(</span><span class="n">160</span>, <span class="n">32</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>
<span class="number">  54</span>    playerShip.loadSpriteSheets<span class="k2">(</span><span class="s">"data/player.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>    playerShip.setData<span class="k2">(</span><span class="n">32</span>, <span class="n">32</span>, <span class="n">4</span>, <span class="n">4</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>
<span class="number">  57</span>
<span class="number">  58</span>    explosion.loadSpriteSheets<span class="k2">(</span><span class="s">"data/explSheet.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>    explosion.setData<span class="k2">(</span><span class="n">32</span>, <span class="n">32</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">3</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>
<span class="number">  61</span>    aiShip.loadSpriteSheets<span class="k2">(</span><span class="s">"data/shipSheet.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>    aiShip.setCoord<span class="k2">(</span>iSecret, <span class="k3">-</span><span class="n">20</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>    aiShip.setData<span class="k2">(</span><span class="n">32</span>, <span class="n">32</span>, <span class="n">0</span>, randYVel, <span class="n">4</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>
<span class="number">  65</span>
<span class="number">  66</span>
<span class="number">  67</span>    <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  68</span>    <span class="k1">bool</span> doexit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  69</span>
<span class="number">  70</span>    <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>game.display,<span class="s">"Global Destruction"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>    <a href="http://www.allegro.cc/manual/al_set_window_position"><span class="a">al_set_window_position</span></a><span class="k2">(</span>game.display, <span class="n">20</span>, <span class="n">20</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>
<span class="number">  73</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>game.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>game.display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  74</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>game.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>game.timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</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>game.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">  76</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>game.event_queue, <a href="http://www.allegro.cc/manual/al_get_mouse_event_source"><span class="a">al_get_mouse_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>
<span class="number">  78</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">  79</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">  80</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>game.timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>
<span class="number">  82</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>doexit<span class="k2">)</span>
<span class="number">  83</span>  <span class="k2">{</span>
<span class="number">  84</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">  85</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>game.event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>
<span class="number">  87</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="number">  88</span>    <span class="k2">{</span>
<span class="number">  89</span>      ticks<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  90</span>      sprite <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">5</span><span class="k2">;</span>
<span class="number">  91</span>            aiShip.movement<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>
<span class="number">  93</span>
<span class="number">  94</span>
<span class="number">  95</span>
<span class="number">  96</span>            <span class="k1">if</span><span class="k2">(</span>Collision<span class="k2">(</span>playerShip, aiShip<span class="k2">)</span><span class="k2">)</span>
<span class="number">  97</span>            <span class="k2">{</span>
<span class="number">  98</span>              explosion.setCoord<span class="k2">(</span>aiShip.getX<span class="k2">(</span><span class="k2">)</span>, aiShip.getY<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>              explosion.animate<span class="k2">(</span>ticks, <span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>              aiShip.setData<span class="k2">(</span><span class="n">32</span>, <span class="n">32</span>, <span class="n">0</span>, <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">6</span> <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span>, <span class="n">4</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>              aiShip.setCoord<span class="k2">(</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">608</span> <span class="k3">+</span> <span class="n">16</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">20</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>              sprite<span class="k2">;</span>
<span class="number"> 103</span>
<span class="number"> 104</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"> 105</span>            <span class="k2">}</span>
<span class="number"> 106</span>
<span class="number"> 107</span>            <span class="k1">if</span><span class="k2">(</span>aiShip.getY<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span> <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a><span class="k2">)</span>
<span class="number"> 108</span>            <span class="k2">{</span>
<span class="number"> 109</span>                aiShip.setData<span class="k2">(</span><span class="n">32</span>, <span class="n">32</span>, <span class="n">0</span>, <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">6</span> <span class="k3">+</span> <span class="n">1</span><span class="k2">)</span>, <span class="n">4</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>                aiShip.setCoord<span class="k2">(</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">608</span> <span class="k3">+</span> <span class="n">16</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">20</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>                sprite<span class="k2">;</span>
<span class="number"> 112</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"> 113</span>            <span class="k2">}</span>
<span class="number"> 114</span>
<span class="number"> 115</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 116</span>    <span class="k2">}</span>
<span class="number"> 117</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="number"> 118</span>    <span class="k2">{</span>
<span class="number"> 119</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 120</span>    <span class="k2">}</span>
<span class="number"> 121</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_MOUSE_AXES <span class="k3">|</span><span class="k3">|</span>
<span class="number"> 122</span>                 ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY<span class="k2">)</span>
<span class="number"> 123</span>        <span class="k2">{</span>
<span class="number"> 124</span>            playerShip.setCoord<span class="k2">(</span>ev.mouse.x, ev.mouse.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>        <span class="k2">}</span>
<span class="number"> 126</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_MOUSE_BUTTON_UP<span class="k2">)</span>
<span class="number"> 127</span>        <span class="k2">{</span>
<span class="number"> 128</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 129</span>        <span class="k2">}</span>
<span class="number"> 130</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="number"> 131</span>    <span class="k2">{</span>
<span class="number"> 132</span>      <span class="k1">switch</span><span class="k2">(</span>ev.keyboard.keycode<span class="k2">)</span>
<span class="number"> 133</span>      <span class="k2">{</span>
<span class="number"> 134</span>                <span class="k1">case</span> ALLEGRO_KEY_SPACE:
<span class="number"> 135</span>                    <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 136</span>                    <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 137</span>                <span class="k1">case</span> ALLEGRO_KEY_F1:
<span class="number"> 138</span>                    <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_F1<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 139</span>                    <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 140</span>      <span class="k2">}</span>
<span class="number"> 141</span>    <span class="k2">}</span>
<span class="number"> 142</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="number"> 143</span>    <span class="k2">{</span>
<span class="number"> 144</span>      <span class="k1">switch</span><span class="k2">(</span>ev.keyboard.keycode<span class="k2">)</span>
<span class="number"> 145</span>      <span class="k2">{</span>
<span class="number"> 146</span>          <span class="k1">case</span> ALLEGRO_KEY_SPACE:
<span class="number"> 147</span>                    <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 148</span>                    <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 149</span>                <span class="k1">case</span> ALLEGRO_KEY_F1:
<span class="number"> 150</span>                    <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_F1<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 151</span>                    <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 152</span>        <span class="k1">case</span> ALLEGRO_KEY_ESCAPE:
<span class="number"> 153</span>          doexit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 154</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 155</span>      <span class="k2">}</span>
<span class="number"> 156</span>    <span class="k2">}</span>
<span class="number"> 157</span>
<span class="number"> 158</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>game.event_queue<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 159</span>    <span class="k2">{</span>
<span class="number"> 160</span>
<span class="number"> 161</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 162</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"> 163</span>
<span class="number"> 164</span>      playerShip.draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>            aiShip.randDraw<span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 166</span>
<span class="number"> 167</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"> 168</span>    <span class="k2">}</span>
<span class="number"> 169</span>  <span class="k2">}</span>
<span class="number"> 170</span>
<span class="number"> 171</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"> 172</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"> 173</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>game.display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 174</span>
<span class="number"> 175</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 176</span><span class="k2">}</span>
</div></div><p>
</p></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Specter Phoenix)</author>
		<pubDate>Tue, 30 Oct 2012 07:38:27 +0000</pubDate>
	</item>
</rss>
