<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Kindof Newbie question</title>
		<link>http://www.allegro.cc/forums/view/570518</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 05 Mar 2006 10:13:29 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have a game I am developing that works perfectly when I use</p><p>set_color_depth(16);<br />set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 800, 600, 0, 0);</p><p>but when I change it to</p><p>set_color_depth(32);<br />set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 800, 600, 0, 0);</p><p>and recompile, it won&#39;t exit. That is the only change.</p><p>My game loop is basicly</p><p>bool exit_key = false;<br />while (!exit_key)<br />{<br />if (key[KEY_ESC]) exit_key = true;<br />// Game Stuff<br />}</p><p>Yet for some reason unknown to me it works fine in with 16 color depth but the while loop doesn&#39;t seem to exit in 32 color depth. Yet that is the only change! Am I missing something or what? Thanks!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Craig Harrison)</author>
		<pubDate>Fri, 03 Mar 2006 05:00:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Which version you are using?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Fri, 03 Mar 2006 06:48:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Allegro version 4.2 (the binary for windows)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Craig Harrison)</author>
		<pubDate>Fri, 03 Mar 2006 06:57:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Can you post the full code? Does your card/monitor support that resolution?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Fri, 03 Mar 2006 07:01:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Also, when you say &quot;won&#39;t exit&quot; is that exactly what you mean? Does it refuse to quit, or does Allegro not fully shutdown (it leaves your program sitting in the task bar),  etc.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Fri, 03 Mar 2006 07:24:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Also, next time, please give a better title to your posts than &quot;Kindof Newbie question&quot;.</p><p>I think your problem probably lies in one of two areas. Are you sure that you are initialising the keyboard right? If so, it could be because of the window focus. This happened to me before, but then after downloading the newest allegro source and compiling it, now I don&#39;t have this problem anymore. Try ALT-TAB to another window, then switch back to your program. Now if it exits, then you know where your problem is.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elverion)</author>
		<pubDate>Fri, 03 Mar 2006 07:47:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>By &quot;doesn&#039;t exit&quot; I mean it is as if the while (condition) is still being met, even though &quot;condition&quot; is in fact false and checks in other parts of the code show that &quot;condition&quot; HAS changed to false. Yet the while loop continues to loop with 32 color depth, but not 16.</p><p>Here is the code:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include &lt;allegro.h&gt; // Allegro Header file</span>
<span class="number">   2</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">   3</span><span class="p">#include "data.h"</span>
<span class="number">   4</span>
<span class="number">   5</span>    <span class="c">////////////////////////////////////////////////////////////////////////////</span>
<span class="number">   6</span>    <span class="c">/////////   VARIABLES   ////////////////////////////////////////////////////</span>
<span class="number">   7</span>    <span class="c">////////////////////////////////////////////////////////////////////////////</span>
<span class="number">   8</span>
<span class="number">   9</span><span class="c">// Core Variables</span>
<span class="number">  10</span><span class="k1">bool</span> exit_key <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  11</span><span class="k1">const</span> <span class="k1">int</span> max_bullets <span class="k3">=</span> <span class="n">300</span><span class="k2">;</span>
<span class="number">  12</span><span class="k1">const</span> <span class="k1">int</span> max_enemies <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number">  13</span><span class="k1">const</span> <span class="k1">int</span> tmax_speed <span class="k3">=</span> <span class="n">8</span><span class="k2">;</span>
<span class="number">  14</span><span class="k1">const</span> <span class="k1">int</span> bullet_sprite<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>bantibody,bbantibody,bbbantibody<span class="k2">}</span><span class="k2">;</span>
<span class="number">  15</span><span class="k1">float</span> max_speed <span class="k3">=</span> tmax_speed<span class="k2">;</span>
<span class="number">  16</span>
<span class="number">  17</span><span class="c">// Bullet Structure</span>
<span class="number">  18</span><span class="k1">struct</span> bullet <span class="k2">{</span>
<span class="number">  19</span>       <span class="k1">int</span> type<span class="k2">;</span>
<span class="number">  20</span>       <span class="k1">float</span> xspeed, yspeed<span class="k2">;</span>
<span class="number">  21</span>       <span class="k1">float</span> x, y<span class="k2">;</span>
<span class="number">  22</span>       <span class="k1">int</span> sprite<span class="k2">;</span>
<span class="number">  23</span><span class="k2">}</span> p_sys<span class="k2">[</span>max_bullets<span class="k2">]</span><span class="k2">;</span>
<span class="number">  24</span>
<span class="number">  25</span><span class="c">// Player Structure</span>
<span class="number">  26</span><span class="k1">struct</span> WBC <span class="k2">{</span>
<span class="number">  27</span>       <span class="k1">float</span> xspeed, x, y, kickback, frame<span class="k2">;</span>
<span class="number">  28</span><span class="k2">}</span> player<span class="k2">;</span>
<span class="number">  29</span>
<span class="number">  30</span><span class="c">// Enemy Structure</span>
<span class="number">  31</span><span class="k1">struct</span> enemy <span class="k2">{</span>
<span class="number">  32</span>       <span class="k1">float</span> type, x, y, xspeed, yspeed, kickback, frame, health, width, height, offset<span class="k2">;</span>
<span class="number">  33</span>       <span class="k1">int</span> sprite<span class="k2">;</span>
<span class="number">  34</span><span class="k2">}</span> enemy<span class="k2">[</span>max_enemies<span class="k2">]</span><span class="k2">;</span>
<span class="number">  35</span>
<span class="number">  36</span><span class="c">// Game Variables</span>
<span class="number">  37</span><span class="k1">int</span> gun_type <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  38</span><span class="k1">int</span> gun_lvl <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  39</span><span class="k1">int</span> screen_x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  40</span><span class="k1">int</span> screen_y <span class="k3">=</span> <span class="n">9999999</span><span class="k2">;</span>
<span class="number">  41</span><span class="k1">int</span> sprite_w <span class="k3">=</span> <span class="n">9</span><span class="k2">;</span> <span class="c">// Bullet sprite offset</span>
<span class="number">  42</span><span class="k1">int</span> star_x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  43</span><span class="k1">int</span> star_y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  44</span><span class="k1">int</span> shipsize <span class="k3">=</span> <span class="n">35</span><span class="k2">;</span>
<span class="number">  45</span><span class="k1">int</span> padding <span class="k3">=</span> <span class="n">45</span> <span class="k3">+</span> shipsize<span class="k2">;</span>
<span class="number">  46</span>
<span class="number">  47</span>    <span class="c">////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  48</span>    <span class="c">/////////   FUNCTIONS   ////////////////////////////////////////////////////</span>
<span class="number">  49</span>    <span class="c">////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  50</span>
<span class="number">  51</span><span class="c">// Make Bullet</span>
<span class="number">  52</span><span class="k1">void</span> make_bullet<span class="k2">(</span><span class="k1">float</span> xoff, <span class="k1">float</span> yoff, <span class="k1">float</span> xspeed, <span class="k1">float</span> yspeed<span class="k2">)</span>
<span class="number">  53</span><span class="k2">{</span>
<span class="number">  54</span>         xspeed <span class="k3">+</span><span class="k3">=</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">21</span><span class="k3">-</span><span class="n">10</span><span class="k2">)</span><span class="k3">*</span><span class="n">0</span>.<span class="n">1</span><span class="k2">;</span>
<span class="number">  55</span>         <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> p <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> p <span class="k3">&lt;</span> max_bullets<span class="k2">;</span> p<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  56</span>          <span class="k2">{</span>
<span class="number">  57</span>          <span class="k1">if</span> <span class="k2">(</span>p_sys<span class="k2">[</span>p<span class="k2">]</span>.type <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>p_sys<span class="k2">[</span>p<span class="k2">]</span>.type <span class="k3">=</span> gun_type<span class="k2">;</span> p_sys<span class="k2">[</span>p<span class="k2">]</span>.xspeed <span class="k3">=</span> xspeed<span class="k2">;</span> p_sys<span class="k2">[</span>p<span class="k2">]</span>.yspeed <span class="k3">=</span> yspeed<span class="k2">;</span> p_sys<span class="k2">[</span>p<span class="k2">]</span>.x <span class="k3">=</span> <span class="k1">int</span><span class="k2">(</span>player.x <span class="k3">+</span> xoff<span class="k2">)</span><span class="k2">;</span> p_sys<span class="k2">[</span>p<span class="k2">]</span>.y <span class="k3">=</span> <span class="k1">int</span><span class="k2">(</span>screen_y <span class="k3">+</span> <span class="n">500</span> <span class="k3">-</span> yoff<span class="k2">)</span><span class="k2">;</span> p_sys<span class="k2">[</span>p<span class="k2">]</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">3</span><span class="k2">;</span> p <span class="k3">=</span> max_bullets <span class="k3">*</span> <span class="n">2</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  58</span>          <span class="k2">}</span>
<span class="number">  59</span><span class="k2">}</span>
<span class="number">  60</span>
<span class="number">  61</span><span class="c">// Control Ship</span>
<span class="number">  62</span><span class="k1">void</span> ship_control<span class="k2">(</span><span class="k2">)</span>
<span class="number">  63</span><span class="k2">{</span>
<span class="number">  64</span>        <span class="c">// Kickback from bullets</span>
<span class="number">  65</span>        <span class="k1">if</span> <span class="k2">(</span>player.y <span class="k3">&lt;</span> player.kickback<span class="k2">)</span> player.y <span class="k3">+</span><span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  66</span>        <span class="k1">if</span> <span class="k2">(</span>player.y <span class="k3">&gt;</span> player.kickback<span class="k2">)</span> player.y <span class="k3">=</span> player.kickback<span class="k2">;</span>
<span class="number">  67</span>        <span class="k1">if</span> <span class="k2">(</span>player.kickback <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> player.kickback <span class="k3">-</span><span class="k3">=</span> <span class="n">1</span>.<span class="n">5</span><span class="k2">;</span>
<span class="number">  68</span>
<span class="number">  69</span>        <span class="c">// Get player input (left/right)</span>
<span class="number">  70</span>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.xspeed <span class="k3">&gt;</span> <span class="k3">-</span>max_speed<span class="k2">)</span>
<span class="number">  71</span>        <span class="k2">{</span>
<span class="number">  72</span>        player.xspeed <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">2</span><span class="k2">;</span>
<span class="number">  73</span>        <span class="k2">}</span>
<span class="number">  74</span>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.xspeed <span class="k3">&lt;</span> max_speed<span class="k2">)</span>
<span class="number">  75</span>        <span class="k2">{</span>
<span class="number">  76</span>        player.xspeed <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">2</span><span class="k2">;</span>
<span class="number">  77</span>        <span class="k2">}</span>
<span class="number">  78</span>        player.x <span class="k3">+</span><span class="k3">=</span> player.xspeed<span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span>        <span class="c">// Edges</span>
<span class="number">  81</span>        <span class="k1">if</span> <span class="k2">(</span>player.x <span class="k3">&lt;</span> padding <span class="k3">*</span> <span class="n">2</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.xspeed <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>max_speed <span class="k3">=</span> tmax_speed <span class="k3">*</span> <span class="k2">(</span>player.x <span class="k3">-</span> padding<span class="k2">)</span><span class="k3">/</span>padding<span class="k2">;</span> <span class="k1">if</span> <span class="k2">(</span>player.xspeed <span class="k3">&lt;</span> <span class="k3">-</span>max_speed<span class="k2">)</span> player.xspeed <span class="k3">=</span> <span class="k3">-</span>max_speed<span class="k2">;</span><span class="k2">}</span>
<span class="number">  82</span>        <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>player.x <span class="k3">&gt;</span> <span class="n">800</span> <span class="k3">-</span> <span class="k2">(</span>padding <span class="k3">*</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.xspeed <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>max_speed <span class="k3">=</span> tmax_speed <span class="k3">*</span> <span class="k2">(</span><span class="k2">(</span><span class="n">800</span> <span class="k3">-</span> player.x<span class="k2">)</span> <span class="k3">-</span> padding<span class="k2">)</span><span class="k3">/</span>padding<span class="k2">;</span> <span class="k1">if</span> <span class="k2">(</span>player.xspeed <span class="k3">&gt;</span> max_speed<span class="k2">)</span> player.xspeed <span class="k3">=</span> max_speed<span class="k2">;</span><span class="k2">}</span>
<span class="number">  83</span>        <span class="k1">else</span> max_speed <span class="k3">=</span> tmax_speed<span class="k2">;</span>
<span class="number">  84</span>        <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>player.x <span class="k3">&lt;</span> padding <span class="k3">&amp;</span><span class="k3">&amp;</span> player.xspeed <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span><span class="k2">(</span><span class="n">800</span> <span class="k3">-</span> player.x<span class="k2">)</span> <span class="k3">&lt;</span> padding <span class="k3">&amp;</span><span class="k3">&amp;</span> player.xspeed <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">)</span> max_speed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  85</span>
<span class="number">  86</span>        <span class="c">// Friction</span>
<span class="number">  87</span>        <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.xspeed <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>player.xspeed <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">2</span><span class="k2">;</span> <span class="k1">if</span> <span class="k2">(</span>player.xspeed <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> player.xspeed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  88</span>        <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.xspeed <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>player.xspeed <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">2</span><span class="k2">;</span> <span class="k1">if</span> <span class="k2">(</span>player.xspeed <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> player.xspeed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  89</span>
<span class="number">  90</span>        <span class="c">// Animation</span>
<span class="number">  91</span>        player.frame <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">1</span><span class="k2">;</span>
<span class="number">  92</span>        <span class="k1">if</span> <span class="k2">(</span>player.frame <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">3</span><span class="k2">)</span> player.frame <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  93</span><span class="k2">}</span>
<span class="number">  94</span>
<span class="number">  95</span><span class="k1">void</span> player_input<span class="k2">(</span><span class="k2">)</span>
<span class="number">  96</span><span class="k2">{</span>
<span class="number">  97</span>        <span class="c">// SWITCH GUNS</span>
<span class="number">  98</span>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_1<span class="k2">]</span><span class="k2">)</span> gun_lvl <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  99</span>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_2<span class="k2">]</span><span class="k2">)</span> gun_lvl <span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 100</span>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_3<span class="k2">]</span><span class="k2">)</span> gun_lvl <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 101</span>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_4<span class="k2">]</span><span class="k2">)</span> gun_lvl <span class="k3">=</span> <span class="n">4</span><span class="k2">;</span>
<span class="number"> 102</span>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_5<span class="k2">]</span><span class="k2">)</span> gun_lvl <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span>
<span class="number"> 103</span><span class="k2">}</span>
<span class="number"> 104</span>
<span class="number"> 105</span><span class="k1">void</span> ship_shoot<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 106</span><span class="k2">{</span>
<span class="number"> 107</span>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.kickback <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 108</span>         <span class="k2">{</span>
<span class="number"> 109</span>         <span class="c">// Set player offset</span>
<span class="number"> 110</span>         player.kickback <span class="k3">=</span> <span class="n">30</span><span class="k2">;</span>
<span class="number"> 111</span>         <span class="c">// Set Bullet Attributes</span>
<span class="number"> 112</span>         <span class="k1">if</span> <span class="k2">(</span>gun_lvl <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> <span class="k2">{</span>make_bullet<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="k3">-</span><span class="n">12</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 113</span>         <span class="k1">if</span> <span class="k2">(</span>gun_lvl <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span> <span class="k2">{</span>make_bullet<span class="k2">(</span><span class="k3">-</span><span class="n">24</span>,<span class="k3">-</span><span class="n">40</span>,<span class="n">0</span>,<span class="k3">-</span><span class="n">12</span><span class="k2">)</span><span class="k2">;</span> make_bullet<span class="k2">(</span><span class="n">24</span>,<span class="k3">-</span><span class="n">40</span>,<span class="n">0</span>,<span class="k3">-</span><span class="n">12</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 114</span>         <span class="k1">if</span> <span class="k2">(</span>gun_lvl <span class="k3">=</span><span class="k3">=</span> <span class="n">3</span><span class="k2">)</span> <span class="k2">{</span>make_bullet<span class="k2">(</span><span class="k3">-</span><span class="n">24</span>,<span class="k3">-</span><span class="n">40</span>,<span class="k3">-</span><span class="n">2</span>,<span class="k3">-</span><span class="n">12</span><span class="k2">)</span><span class="k2">;</span> make_bullet<span class="k2">(</span><span class="n">24</span>,<span class="k3">-</span><span class="n">40</span>,<span class="n">2</span>,<span class="k3">-</span><span class="n">12</span><span class="k2">)</span><span class="k2">;</span> make_bullet<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="k3">-</span><span class="n">12</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 115</span>         <span class="k1">if</span> <span class="k2">(</span>gun_lvl <span class="k3">=</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span> <span class="k2">{</span>make_bullet<span class="k2">(</span><span class="k3">-</span><span class="n">24</span>,<span class="k3">-</span><span class="n">40</span>,<span class="k3">-</span><span class="n">2</span>,<span class="k3">-</span><span class="n">12</span><span class="k2">)</span><span class="k2">;</span> make_bullet<span class="k2">(</span><span class="n">24</span>,<span class="k3">-</span><span class="n">40</span>,<span class="n">2</span>,<span class="k3">-</span><span class="n">12</span><span class="k2">)</span><span class="k2">;</span> make_bullet<span class="k2">(</span><span class="k3">-</span><span class="n">13</span>,<span class="k3">-</span><span class="n">40</span>,<span class="k3">-</span><span class="n">1</span>,<span class="k3">-</span><span class="n">13</span><span class="k2">)</span><span class="k2">;</span> make_bullet<span class="k2">(</span><span class="n">13</span>,<span class="k3">-</span><span class="n">40</span>,<span class="n">1</span>,<span class="k3">-</span><span class="n">13</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 116</span>         <span class="k1">if</span> <span class="k2">(</span>gun_lvl <span class="k3">=</span><span class="k3">=</span> <span class="n">5</span><span class="k2">)</span> <span class="k2">{</span>make_bullet<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="k3">-</span><span class="n">13</span><span class="k2">)</span><span class="k2">;</span> make_bullet<span class="k2">(</span><span class="k3">-</span><span class="n">24</span>,<span class="k3">-</span><span class="n">40</span>,<span class="k3">-</span><span class="n">2</span>,<span class="k3">-</span><span class="n">12</span><span class="k2">)</span><span class="k2">;</span> make_bullet<span class="k2">(</span><span class="n">24</span>,<span class="k3">-</span><span class="n">40</span>,<span class="n">2</span>,<span class="k3">-</span><span class="n">12</span><span class="k2">)</span><span class="k2">;</span> make_bullet<span class="k2">(</span><span class="k3">-</span><span class="n">13</span>,<span class="k3">-</span><span class="n">40</span>,<span class="k3">-</span><span class="n">1</span>,<span class="k3">-</span><span class="n">13</span><span class="k2">)</span><span class="k2">;</span> make_bullet<span class="k2">(</span><span class="n">13</span>,<span class="k3">-</span><span class="n">40</span>,<span class="n">1</span>,<span class="k3">-</span><span class="n">13</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 117</span>         <span class="k2">}</span>
<span class="number"> 118</span><span class="k2">}</span>
<span class="number"> 119</span>
<span class="number"> 120</span><span class="c">// Move Background</span>
<span class="number"> 121</span><span class="k1">void</span> move_background<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 122</span><span class="k2">{</span>
<span class="number"> 123</span>        <span class="k1">if</span> <span class="k2">(</span>screen_x <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> star_x <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">(</span>screen_x <span class="k3">/</span> <span class="n">640</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">640</span><span class="k2">)</span> <span class="k3">-</span> screen_x<span class="k2">;</span>
<span class="number"> 124</span>        <span class="k1">if</span> <span class="k2">(</span>screen_y <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> star_y <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">(</span>screen_y <span class="k3">/</span> <span class="n">800</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">800</span><span class="k2">)</span> <span class="k3">-</span> screen_y<span class="k2">;</span>
<span class="number"> 125</span>        <span class="k1">if</span> <span class="k2">(</span>screen_x <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> star_x <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">(</span>screen_x <span class="k3">/</span> <span class="n">640</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">640</span><span class="k2">)</span> <span class="k3">+</span> screen_x<span class="k2">;</span>
<span class="number"> 126</span>        <span class="k1">if</span> <span class="k2">(</span>screen_y <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> star_y <span class="k3">=</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">(</span>screen_y <span class="k3">/</span> <span class="n">800</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">800</span><span class="k2">)</span> <span class="k3">+</span> screen_y<span class="k2">;</span>
<span class="number"> 127</span><span class="k2">}</span>
<span class="number"> 128</span>
<span class="number"> 129</span><span class="c">// Timer</span>
<span class="number"> 130</span><span class="k1">volatile</span> <span class="k1">long</span> speed_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 131</span><span class="k1">void</span> increment_speed_counter<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 132</span><span class="k2">{</span>
<span class="number"> 133</span>  speed_counter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 134</span><span class="k2">}</span>
<span class="number"> 135</span><a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>increment_speed_counter<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 136</span>
<span class="number"> 137</span><span class="c">// Update Variables at beginning of each game loop</span>
<span class="number"> 138</span><span class="k1">void</span> update_variables<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 139</span><span class="k2">{</span>
<span class="number"> 140</span>        <span class="c">// SPEED COUNTER</span>
<span class="number"> 141</span>        speed_counter <span class="k3">-</span><span class="k3">-</span><span class="k2">;</span>
<span class="number"> 142</span>        <span class="c">// SCREEN POSITION</span>
<span class="number"> 143</span>        screen_y <span class="k3">-</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 144</span>        <span class="c">// EXIT</span>
<span class="number"> 145</span>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> exit_key <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 146</span><span class="k2">}</span>
<span class="number"> 147</span>
<span class="number"> 148</span>
<span class="number"> 149</span>    <span class="c">////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 150</span>    <span class="c">/////////   MAIN FUNCTION   ////////////////////////////////////////////////</span>
<span class="number"> 151</span>    <span class="c">////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 152</span>
<span class="number"> 153</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 154</span><span class="k2">{</span>
<span class="number"> 155</span>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Initialize Allegro</span>
<span class="number"> 156</span>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Initialize keyboard routines</span>
<span class="number"> 157</span>  <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Initialize the timer routines</span>
<span class="number"> 158</span>    <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Initialize the mouse routines</span>
<span class="number"> 159</span>    <a href="http://www.allegro.cc/manual/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span>DIGI_AUTODETECT,MIDI_AUTODETECT , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Initialize the sound routines</span>
<span class="number"> 160</span>
<span class="number"> 161</span>  <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>speed_counter<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>  <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>increment_speed_counter<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 163</span>  <a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a><span class="k2">(</span>increment_speed_counter, BPS_TO_TIMER<span class="k2">(</span><span class="n">60</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 164</span>
<span class="number"> 165</span>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 166</span>    <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_FULLSCREEN, <span class="n">800</span>, <span class="n">600</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 167</span>    text_mode<span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 169</span>
<span class="number"> 170</span>    <span class="c">// DATABASE</span>
<span class="number"> 171</span>    <a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>data<span class="k2">;</span>
<span class="number"> 172</span>    data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span><span class="s">"data.dat"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 173</span>
<span class="number"> 174</span>    <span class="c">// Bitmaps</span>
<span class="number"> 175</span>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">800</span>,<span class="n">600</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 176</span>
<span class="number"> 177</span>    <span class="c">// CLEAR PARTICLE SYSTEM</span>
<span class="number"> 178</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> max_bullets<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 179</span>      p_sys<span class="k2">[</span>x<span class="k2">]</span>.type <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 180</span>
<span class="number"> 181</span>    <span class="c">// CLEAR ENEMY SYSTEM</span>
<span class="number"> 182</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> max_enemies<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 183</span>      enemy<span class="k2">[</span>x<span class="k2">]</span>.type <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 184</span>
<span class="number"> 185</span>    <span class="c">// Set Player to Center</span>
<span class="number"> 186</span>    player.x <span class="k3">=</span> <span class="n">200</span><span class="k2">;</span>
<span class="number"> 187</span>
<span class="number"> 188</span>    <span class="c">////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 189</span>    <span class="c">/////////   GAME LOOP   ////////////////////////////////////////////////////</span>
<span class="number"> 190</span>    <span class="c">////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 191</span>
<span class="number"> 192</span>
<span class="number"> 193</span>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>exit_key<span class="k2">)</span>
<span class="number"> 194</span>   <span class="k2">{</span>
<span class="number"> 195</span>     <span class="k1">while</span><span class="k2">(</span>speed_counter <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 196</span>    <span class="k2">{</span>
<span class="number"> 197</span>        update_variables<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 198</span>
<span class="number"> 199</span>        <span class="c">// UPDATE BULLETS (move, draw, stop, and delete)</span>
<span class="number"> 200</span>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> max_bullets<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 201</span>         <span class="k2">{</span>
<span class="number"> 202</span>         <span class="k1">if</span> <span class="k2">(</span>p_sys<span class="k2">[</span>x<span class="k2">]</span>.type <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 203</span>          <span class="k2">{</span>
<span class="number"> 204</span>          p_sys<span class="k2">[</span>x<span class="k2">]</span>.x <span class="k3">+</span><span class="k3">=</span> p_sys<span class="k2">[</span>x<span class="k2">]</span>.xspeed<span class="k2">;</span>
<span class="number"> 205</span>          p_sys<span class="k2">[</span>x<span class="k2">]</span>.y <span class="k3">+</span><span class="k3">=</span> p_sys<span class="k2">[</span>x<span class="k2">]</span>.yspeed<span class="k2">;</span>
<span class="number"> 206</span>          <span class="k1">if</span> <span class="k2">(</span>p_sys<span class="k2">[</span>x<span class="k2">]</span>.x <span class="k3">&lt;</span> padding <span class="k3">-</span> <span class="n">35</span> <span class="k3">|</span><span class="k3">|</span> <span class="n">800</span> <span class="k3">-</span> p_sys<span class="k2">[</span>x<span class="k2">]</span>.x <span class="k3">&lt;</span> padding <span class="k3">-</span> <span class="n">35</span><span class="k2">)</span> <span class="k2">{</span>p_sys<span class="k2">[</span>x<span class="k2">]</span>.xspeed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> p_sys<span class="k2">[</span>x<span class="k2">]</span>.yspeed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> p_sys<span class="k2">[</span>x<span class="k2">]</span>.x <span class="k3">+</span><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">20</span> <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span> p_sys<span class="k2">[</span>x<span class="k2">]</span>.type <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 207</span>          <span class="k2">}</span>
<span class="number"> 208</span>          <span class="c">// Delete if off screen</span>
<span class="number"> 209</span>          <span class="k1">if</span> <span class="k2">(</span>p_sys<span class="k2">[</span>x<span class="k2">]</span>.y <span class="k3">+</span> sprite_w <span class="k3">*</span> <span class="n">2</span> <span class="k3">&lt;</span> screen_y <span class="k3">|</span><span class="k3">|</span> p_sys<span class="k2">[</span>x<span class="k2">]</span>.y <span class="k3">-</span> sprite_w <span class="k3">*</span> <span class="n">2</span> <span class="k3">&gt;</span> screen_y <span class="k3">+</span> <span class="n">600</span><span class="k2">)</span> p_sys<span class="k2">[</span>x<span class="k2">]</span>.type <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 210</span>          <span class="c">// Blit Bullet Sprite</span>
<span class="number"> 211</span>          <span class="k1">if</span> <span class="k2">(</span>p_sys<span class="k2">[</span>x<span class="k2">]</span>.type <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>bullet_sprite<span class="k2">[</span><span class="k1">int</span><span class="k2">(</span>p_sys<span class="k2">[</span>x<span class="k2">]</span>.sprite<span class="k2">)</span><span class="k2">]</span><span class="k2">]</span>.dat, buffer, <span class="n">0</span>, <span class="n">0</span>,<span class="k2">(</span><span class="k1">int</span><span class="k2">(</span>p_sys<span class="k2">[</span>x<span class="k2">]</span>.x<span class="k2">)</span> <span class="k3">-</span> sprite_w<span class="k2">)</span> <span class="k3">-</span> screen_x,<span class="k1">int</span><span class="k2">(</span>p_sys<span class="k2">[</span>x<span class="k2">]</span>.y<span class="k2">)</span> <span class="k3">-</span> screen_y,<span class="n">62</span>,<span class="n">62</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 212</span>         <span class="k2">}</span>
<span class="number"> 213</span>
<span class="number"> 214</span>        <span class="c">// PLAYER SHIP (draw and control)</span>
<span class="number"> 215</span>        <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span><span class="k1">int</span><span class="k2">(</span>player.frame<span class="k2">)</span><span class="k2">]</span>.dat, buffer, <span class="n">0</span>, <span class="n">0</span>,<span class="k1">int</span><span class="k2">(</span>player.x<span class="k2">)</span><span class="k3">-</span>shipsize,<span class="n">500</span> <span class="k3">+</span> <span class="k1">int</span><span class="k2">(</span>player.y<span class="k2">)</span>,<span class="n">62</span>,<span class="n">62</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 216</span>        ship_control<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 217</span>
<span class="number"> 218</span>        <span class="c">// GUNS (shoot and change)</span>
<span class="number"> 219</span>        ship_shoot<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 220</span>        player_input<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 221</span>
<span class="number"> 222</span>        <span class="c">// SCREEN (blit and clear)</span>
<span class="number"> 223</span>        <a href="http://www.allegro.cc/manual/acquire_screen" target="_blank"><span class="a">acquire_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 224</span>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">800</span>,<span class="n">600</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 225</span>        <a href="http://www.allegro.cc/manual/release_screen" target="_blank"><span class="a">release_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 226</span>        <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span> buffer,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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"> 227</span>
<span class="number"> 228</span>        <span class="c">// BACKGROUND (move and draw)</span>
<span class="number"> 229</span>        move_background<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 230</span>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>xback<span class="k2">]</span>.dat, buffer, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,star_y,<span class="n">800</span>,<span class="n">800</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 231</span>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>xback<span class="k2">]</span>.dat, buffer, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,star_y <span class="k3">+</span> <span class="n">800</span>,<span class="n">800</span>,<span class="n">800</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 232</span>        <span class="k2">}</span>
<span class="number"> 233</span>
<span class="number"> 234</span>    <span class="c">////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 235</span>    <span class="c">/////////   END OF GAME LOOP   /////////////////////////////////////////////</span>
<span class="number"> 236</span>    <span class="c">////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 237</span>
<span class="number"> 238</span><span class="k2">}</span>
<span class="number"> 239</span>    <span class="c">// Clear Data</span>
<span class="number"> 240</span>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 241</span>    <a href="http://www.allegro.cc/manual/unload_datafile" target="_blank"><span class="a">unload_datafile</span></a><span class="k2">(</span>data<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 242</span>
<span class="number"> 243</span>    <span class="k1">return</span><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">// Exit with no errors</span>
<span class="number"> 244</span><span class="k2">}</span>
<span class="number"> 245</span><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>

It&#039;s probably not the way it is supposed to be coded, but it works. I&#039;m sure there are better ways to do a lot of it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Craig Harrison)</author>
		<pubDate>Sat, 04 Mar 2006 02:22:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Try installing the keyboard after set_gfx_mode. That&#39;s all I&#39;ve got other than the possibility of an Allegro bug.</p><div class="quote_container"><div class="title">install_keyboard documentation said:</div><div class="quote"><p>

Note that on some platforms the keyboard won&#39;t work unless you have set a graphic mode, even if this function returns zero before calling set_gfx_mode.
</p></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Sun, 05 Mar 2006 07:24:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can install it before setting the graphics; you just might not be able to use it until after.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sun, 05 Mar 2006 09:53:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What happens if you do some error checking?</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">if</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_FULLSCREEN, <span class="n">800</span>, <span class="n">600</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">0</span> <span class="k2">)</span>
<span class="k2">{</span>
    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> update_variables<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> exit_key <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="k2">}</span>

<span class="k1">while</span><span class="k2">(</span>speed_counter <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="k2">{</span>
    update_variables<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

there could be something with the timer and speed_counter is never &gt; 0.<br />Put the <b>if key_escape</b> line outside of the speed counter loop.</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">while</span><span class="k2">(</span> <span class="k3">!</span>exit_key <span class="k2">)</span>
<span class="k2">{</span>
    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> exit_key <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
    
    <span class="k1">while</span><span class="k2">(</span>speed_counter <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
    <span class="k2">{</span>
    <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>


Also, since you are a gnub, noob, ...</p><p>1. Indentation is your friend</p><p>every new section starts x spaces over and brackets line up. I personally like style b, but others choose a.
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">//style a</span></td></tr><tr><td class="number">2</td><td><span class="k1">if</span> <span class="k2">(</span> blah <span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    <span class="k1">int</span> new_var<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    <span class="k1">if</span> <span class="k2">(</span> blah2 <span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">7</td><td><span class="k2">}</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><span class="c">//style b</span></td></tr><tr><td class="number">10</td><td><span class="k1">if</span> <span class="k2">(</span> blah <span class="k2">)</span> </td></tr><tr><td class="number">11</td><td><span class="k2">{</span></td></tr><tr><td class="number">12</td><td>    <span class="k1">int</span> new_var<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    <span class="k1">if</span> <span class="k2">(</span> blah2 <span class="k2">)</span> </td></tr><tr><td class="number">14</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
2. Error checking is your friend
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>data <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">2</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="c">// style a</span></td></tr><tr><td class="number">5</td><td>data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span> <span class="s">"data.dat"</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td><span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>data <span class="k2">)</span></td></tr><tr><td class="number">7</td><td><span class="k2">{</span></td></tr><tr><td class="number">8</td><td>     <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <span class="c">// this was an error</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="c">// style b</span></td></tr><tr><td class="number">13</td><td><span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span><span class="k2">(</span> buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span> <span class="n">800</span>, <span class="n">600</span> <span class="k2">)</span> <span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>     <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    <span class="c">// this was an error</span></td></tr><tr><td class="number">17</td><td><span class="k2">}</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="c">//destroy_bitmap( buffer );</span></td></tr><tr><td class="number">20</td><td><span class="c">//unload_datafile(data);</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td><span class="k1">if</span> <span class="k2">(</span> buffer <span class="k2">)</span></td></tr><tr><td class="number">23</td><td><span class="k2">{</span></td></tr><tr><td class="number">24</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span> buffer <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    <span class="c">// this next line might not be necessary</span></td></tr><tr><td class="number">26</td><td>    buffer <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">27</td><td><span class="k2">}</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td><span class="k1">if</span> <span class="k2">(</span> data <span class="k2">)</span></td></tr><tr><td class="number">30</td><td><span class="k2">{</span></td></tr><tr><td class="number">31</td><td>    <a href="http://www.allegro.cc/manual/unload_datafile" target="_blank"><span class="a">unload_datafile</span></a><span class="k2">(</span> data <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>    <span class="c">// this next line might not be necessary</span></td></tr><tr><td class="number">33</td><td>    data <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">34</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

3. Look up coding styles. This is more of a help to those who look at your code<br />i.e.    space after comma   blah, blah, blah<br />        space between parens   ( blah )</p><p>----</p><p>There is a slight problem with my logic.
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>data <span class="k2">)</span> <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span>
<span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>buffer <span class="k2">)</span> <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
</pre></div></div><p>

if buffer fails then datafile is never unloaded. Instead you could do this
</p><div class="source-code snippet"><div class="inner"><pre>data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">if</span> <span class="k2">(</span> data <span class="k2">)</span>
<span class="k2">{</span>
    buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">if</span> <span class="k2">(</span> buffer <span class="k2">)</span>
    <span class="k2">{</span>
        <span class="c">//...//</span>

        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span> buffer <span class="k2">)</span><span class="k2">;</span>
    <span class="k2">}</span>
    <a href="http://www.allegro.cc/manual/unload_datafile" target="_blank"><span class="a">unload_datafile</span></a><span class="k2">(</span> data <span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Or you could do this.
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">int</span> init<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>    data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>data <span class="k2">)</span> <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>    buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>buffer <span class="k2">)</span> <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td><span class="k2">}</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="k1">void</span> destroy<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">15</td><td><span class="k2">{</span></td></tr><tr><td class="number">16</td><td>    <span class="k1">if</span> <span class="k2">(</span> buffer <span class="k2">)</span> <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    <span class="k1">if</span> <span class="k2">(</span> data <span class="k2">)</span> <a href="http://www.allegro.cc/manual/unload_datafile" target="_blank"><span class="a">unload_datafile</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">:</span></td></tr><tr><td class="number">18</td><td><span class="k2">}</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">21</td><td><span class="k2">{</span></td></tr><tr><td class="number">22</td><td>    <span class="k1">if</span> <span class="k2">(</span> init<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">23</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>        <span class="c">// loop</span></td></tr><tr><td class="number">25</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>    destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Sun, 05 Mar 2006 10:13:29 +0000</pubDate>
	</item>
</rss>
