<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Autoshooter on this game</title>
		<link>http://www.allegro.cc/forums/view/610957</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 02 Sep 2012 16:47:21 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am trying to add an autoshooter to this game i was building from scratch but it seems unclear this concept to me. (It is based on mike geig shooter)<br />I have already opened a thread about the autoshooter, but i don&#39;t get the logic and how do i apply to codes like the game i am trying to build?<br />Also, pls add comments in each line you have added and explain step by step.<br />Anyone pls help! <img src="http://www.allegro.cc/forums/smileys/cry.gif" alt=":&#39;(" /><br />Here is all the game&#39;s code so far:<br />source.cpp
</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;allegro5\allegro.h&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;allegro5\allegro_primitives.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5\allegro_image.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5\allegro_ttf.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5\allegro_font.h&gt;</span>
<span class="number">   6</span><span class="p">#include "objects.h"</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="c">// Buttons</span>
<span class="number">   9</span><span class="k1">enum</span> BUTON<span class="k2">{</span>A,S,D,W,SPACE<span class="k2">}</span><span class="k2">;</span>
<span class="number">  10</span><span class="k1">bool</span> buton<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="k1">false</span>,<span class="k1">false</span>,<span class="k1">false</span>,<span class="k1">false</span>,<span class="k1">false</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  11</span>
<span class="number">  12</span><span class="c">// Globals</span>
<span class="number">  13</span><span class="k1">const</span> <span class="k1">int</span> FPS <span class="k3">=</span> <span class="n">80</span>, width <span class="k3">=</span> <span class="n">800</span>, height <span class="k3">=</span> <span class="n">600</span><span class="k2">;</span>
<span class="number">  14</span><span class="k1">const</span> <span class="k1">int</span> NUM_BULLETS <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span>
<span class="number">  15</span>
<span class="number">  16</span><span class="c">// Protorypes</span>
<span class="number">  17</span><span class="k1">void</span> InitShip<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span><span class="k1">void</span> DrawShip<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span><span class="k1">void</span> MoveShipUp<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span><span class="k1">void</span> MoveShipDown<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  21</span><span class="k1">void</span> MoveShipLeft<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  22</span><span class="k1">void</span> MoveShipRight<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>
<span class="number">  24</span><span class="k1">void</span> InitBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span><span class="k1">void</span> DrawBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span><span class="k1">void</span> FireBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size, SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span><span class="k1">void</span> UpdateBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>
<span class="number">  29</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  30</span><span class="k2">{</span>
<span class="number">  31</span>  <span class="c">// Initialization</span>
<span class="number">  32</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">  33</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">  34</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">  35</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">  36</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">  37</span>
<span class="number">  38</span>  <span class="c">// Installations</span>
<span class="number">  39</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">  40</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">  41</span>
<span class="number">  42</span>  <span class="c">// Variables</span>
<span class="number">  43</span>  SpaceShip ship<span class="k2">;</span>
<span class="number">  44</span>  Bullet bullets<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  45</span>  <span class="k1">int</span> fireCooldown <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  46</span>
<span class="number">  47</span>  <span class="k1">int</span> x <span class="k3">=</span> width <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  48</span>  <span class="k1">int</span> y <span class="k3">=</span> height <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  49</span>
<span class="number">  50</span>  <span class="k1">bool</span> quit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  51</span>  <span class="k1">bool</span> draw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  52</span>
<span class="number">  53</span>  <span class="c">// ALLEGRO variables</span>
<span class="number">  54</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a> <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>width, height<span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>icon <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><span class="s">"image/1.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>font16 <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">"fonts/1.ttf"</span>, <span class="n">80</span>, ALLEGRO_ALIGN_CENTRE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  58</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  59</span>
<span class="number">  60</span>  event <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">  61</span>  timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> FPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>  
<span class="number">  63</span>  <span class="c">// Events</span>
<span class="number">  64</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event, <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">  65</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event, <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">  66</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event, <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><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>
<span class="number">  69</span>  <span class="c">// Window title, icon and mouse hide</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><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a>, <span class="s">"Game programming"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>  <a href="http://www.allegro.cc/manual/al_set_display_icon"><span class="a">al_set_display_icon</span></a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a>, icon<span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>  <a href="http://www.allegro.cc/manual/al_hide_mouse_cursor"><span class="a">al_hide_mouse_cursor</span></a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>  
<span class="number">  74</span>  <span class="c">// Player initializations</span>
<span class="number">  75</span>  InitShip<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>  InitBullet<span class="k2">(</span>bullets, NUM_BULLETS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>
<span class="number">  78</span>  <span class="c">// Start timer</span>
<span class="number">  79</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  80</span>
<span class="number">  81</span>
<span class="number">  82</span>  <span class="c">// The drawing</span>
<span class="number">  83</span>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>quit<span class="k2">)</span>
<span class="number">  84</span>  <span class="k2">{</span>
<span class="number">  85</span>    <span class="c">// Call of the event</span>
<span class="number">  86</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> e<span class="k2">;</span>
<span class="number">  87</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event, <span class="k3">&amp;</span>e<span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>
<span class="number">  89</span>    <span class="c">// Drawing</span>
<span class="number">  90</span>    <span class="k1">if</span><span class="k2">(</span>e.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number">  91</span>    <span class="k2">{</span>
<span class="number">  92</span>      draw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  93</span>      
<span class="number">  94</span>    <span class="k1">if</span><span class="k2">(</span>buton<span class="k2">[</span>A<span class="k2">]</span><span class="k2">)</span>
<span class="number">  95</span>      MoveShipLeft<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>    <span class="k1">if</span><span class="k2">(</span>buton<span class="k2">[</span>D<span class="k2">]</span><span class="k2">)</span>
<span class="number">  97</span>      MoveShipRight<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>    <span class="k1">if</span><span class="k2">(</span>buton<span class="k2">[</span>S<span class="k2">]</span><span class="k2">)</span>
<span class="number">  99</span>      MoveShipDown<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>    <span class="k1">if</span><span class="k2">(</span>buton<span class="k2">[</span>W<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 101</span>      MoveShipUp<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>
<span class="number"> 103</span>      UpdateBullet<span class="k2">(</span>bullets, NUM_BULLETS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>    <span class="k2">}</span>
<span class="number"> 105</span>
<span class="number"> 106</span>    <span class="c">// Key down or up</span>
<span class="number"> 107</span>    <span class="k1">switch</span><span class="k2">(</span>e.type<span class="k2">)</span>
<span class="number"> 108</span>    <span class="k2">{</span>
<span class="number"> 109</span>      <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number"> 110</span>        <span class="k1">switch</span><span class="k2">(</span>e.keyboard.keycode<span class="k2">)</span>
<span class="number"> 111</span>        <span class="k2">{</span>
<span class="number"> 112</span>        <span class="k1">case</span> ALLEGRO_KEY_A:
<span class="number"> 113</span>          buton<span class="k2">[</span>A<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 114</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 115</span>
<span class="number"> 116</span>        <span class="k1">case</span> ALLEGRO_KEY_S:
<span class="number"> 117</span>          buton<span class="k2">[</span>S<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 118</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 119</span>
<span class="number"> 120</span>        <span class="k1">case</span> ALLEGRO_KEY_D:
<span class="number"> 121</span>          buton<span class="k2">[</span>D<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 122</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 123</span>
<span class="number"> 124</span>        <span class="k1">case</span> ALLEGRO_KEY_W:
<span class="number"> 125</span>          buton<span class="k2">[</span>W<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 126</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 127</span>
<span class="number"> 128</span>        <span class="k1">case</span> ALLEGRO_KEY_SPACE:
<span class="number"> 129</span>          buton<span class="k2">[</span>SPACE<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 130</span>          FireBullet<span class="k2">(</span>bullets, NUM_BULLETS, ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 132</span>
<span class="number"> 133</span>        <span class="k1">case</span> ALLEGRO_KEY_ESCAPE:
<span class="number"> 134</span>          quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 135</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 136</span>        <span class="k2">}</span>
<span class="number"> 137</span>    <span class="k2">}</span>
<span class="number"> 138</span>
<span class="number"> 139</span>    <span class="k1">switch</span><span class="k2">(</span>e.type<span class="k2">)</span>
<span class="number"> 140</span>    <span class="k2">{</span>
<span class="number"> 141</span>      <span class="k1">case</span> ALLEGRO_EVENT_KEY_UP:
<span class="number"> 142</span>        <span class="k1">switch</span><span class="k2">(</span>e.keyboard.keycode<span class="k2">)</span>
<span class="number"> 143</span>        <span class="k2">{</span>
<span class="number"> 144</span>        <span class="k1">case</span> ALLEGRO_KEY_A:
<span class="number"> 145</span>          buton<span class="k2">[</span>A<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 146</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 147</span>
<span class="number"> 148</span>        <span class="k1">case</span> ALLEGRO_KEY_S:
<span class="number"> 149</span>          buton<span class="k2">[</span>S<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 150</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 151</span>
<span class="number"> 152</span>        <span class="k1">case</span> ALLEGRO_KEY_D:
<span class="number"> 153</span>          buton<span class="k2">[</span>D<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</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="number"> 156</span>        <span class="k1">case</span> ALLEGRO_KEY_W:
<span class="number"> 157</span>          buton<span class="k2">[</span>W<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 158</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 159</span>
<span class="number"> 160</span>        <span class="k1">case</span> ALLEGRO_KEY_SPACE:
<span class="number"> 161</span>          buton<span class="k2">[</span>SPACE<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 162</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 163</span>        <span class="k2">}</span>
<span class="number"> 164</span>    <span class="k2">}</span>
<span class="number"> 165</span>
<span class="number"> 166</span>
<span class="number"> 167</span>    <span class="c">// Close display when X is pressed</span>
<span class="number"> 168</span>    <span class="k1">if</span><span class="k2">(</span>e.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span>
<span class="number"> 169</span>    <span class="k2">{</span>
<span class="number"> 170</span>      quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 171</span>    <span class="k2">}</span>
<span class="number"> 172</span>
<span class="number"> 173</span>    <span class="c">// Mouse movement</span>
<span class="number"> 174</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>e.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_AXES<span class="k2">)</span>
<span class="number"> 175</span>    <span class="k2">{</span>
<span class="number"> 176</span>      ship.y <span class="k3">=</span> e.mouse.y<span class="k2">;</span>
<span class="number"> 177</span>    <span class="k2">}</span>
<span class="number"> 178</span>
<span class="number"> 179</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>e.mouse.button <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 180</span>    <span class="k2">{</span>
<span class="number"> 181</span>      FireBullet<span class="k2">(</span>bullets, NUM_BULLETS, ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 182</span>    <span class="k2">}</span>
<span class="number"> 183</span>
<span class="number"> 184</span>    <span class="k1">if</span><span class="k2">(</span>draw <span class="k3">&amp;</span><span class="k3">&amp;</span> al_event_queue_is_empty<span class="k2">(</span>event<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 185</span>    <span class="k2">{</span>
<span class="number"> 186</span>      draw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 187</span>      DrawShip<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 188</span>      DrawBullet<span class="k2">(</span>bullets, NUM_BULLETS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 189</span>
<span class="number"> 190</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"> 191</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"> 192</span>    <span class="k2">}</span>
<span class="number"> 193</span>
<span class="number"> 194</span>  <span class="k2">}</span>
<span class="number"> 195</span>
<span class="number"> 196</span>  <span class="c">// Destroy</span>
<span class="number"> 197</span>  <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 198</span>  <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>icon<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 199</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 200</span><span class="k2">}</span>
<span class="number"> 201</span>
<span class="number"> 202</span><span class="k1">void</span> InitShip<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 203</span><span class="k2">{</span>
<span class="number"> 204</span>  ship.x <span class="k3">=</span> <span class="n">20</span><span class="k2">;</span>
<span class="number"> 205</span>  ship.y <span class="k3">=</span> height <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 206</span>  ship.ID <span class="k3">=</span> PLAYER<span class="k2">;</span>
<span class="number"> 207</span>  ship.lives <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 208</span>  ship.speed <span class="k3">=</span> <span class="n">7</span><span class="k2">;</span>
<span class="number"> 209</span>  ship.boundx <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span>
<span class="number"> 210</span>  ship.boundy <span class="k3">=</span> <span class="n">7</span><span class="k2">;</span>
<span class="number"> 211</span>  ship.score <span class="k3">=</span> <span class="n">0</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="k1">void</span> DrawShip<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 215</span><span class="k2">{</span>
<span class="number"> 216</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span>ship.x <span class="k3">-</span> <span class="n">10</span>, ship.y-15, ship.x <span class="k3">+</span> <span class="n">35</span>, ship.y, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">128</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 217</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span>ship.x <span class="k3">+</span> <span class="n">35</span>, ship.y-15, ship.x <span class="k3">+</span> <span class="n">130</span>, ship.y, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 218</span><span class="k2">}</span>
<span class="number"> 219</span>
<span class="number"> 220</span><span class="k1">void</span> MoveShipUp<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 221</span><span class="k2">{</span>
<span class="number"> 222</span>  ship.y <span class="k3">-</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 223</span>  <span class="k1">if</span><span class="k2">(</span>ship.y <span class="k3">&lt;</span> <span class="n">15</span><span class="k2">)</span>
<span class="number"> 224</span>    ship.y <span class="k3">=</span> <span class="n">15</span><span class="k2">;</span>
<span class="number"> 225</span><span class="k2">}</span>
<span class="number"> 226</span>
<span class="number"> 227</span><span class="k1">void</span> MoveShipDown<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 228</span><span class="k2">{</span>
<span class="number"> 229</span>  ship.y <span class="k3">+</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 230</span>  <span class="k1">if</span><span class="k2">(</span>ship.y <span class="k3">&gt;</span> height<span class="k2">)</span>
<span class="number"> 231</span>    ship.y <span class="k3">=</span> height<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="k1">void</span> MoveShipLeft<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 235</span><span class="k2">{</span>
<span class="number"> 236</span>  ship.x <span class="k3">-</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 237</span>  <span class="k1">if</span><span class="k2">(</span>ship.x <span class="k3">&lt;</span> <span class="n">10</span><span class="k2">)</span>
<span class="number"> 238</span>    ship.x <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 239</span><span class="k2">}</span>
<span class="number"> 240</span>
<span class="number"> 241</span><span class="k1">void</span> MoveShipRight<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 242</span><span class="k2">{</span>
<span class="number"> 243</span>  ship.x <span class="k3">+</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 244</span>  <span class="k1">if</span><span class="k2">(</span>ship.x <span class="k3">&gt;</span> <span class="n">100</span><span class="k2">)</span>
<span class="number"> 245</span>    ship.x <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number"> 246</span><span class="k2">}</span>
<span class="number"> 247</span>
<span class="number"> 248</span><span class="k1">void</span> InitBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span>
<span class="number"> 249</span><span class="k2">{</span>
<span class="number"> 250</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> size<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 251</span>  <span class="k2">{</span>
<span class="number"> 252</span>    bullet<span class="k2">[</span>i<span class="k2">]</span>.ID <span class="k3">=</span> BULLET<span class="k2">;</span>
<span class="number"> 253</span>    bullet<span class="k2">[</span>i<span class="k2">]</span>.speed <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 254</span>    bullet<span class="k2">[</span>i<span class="k2">]</span>.live <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 255</span>  <span class="k2">}</span>
<span class="number"> 256</span><span class="k2">}</span>
<span class="number"> 257</span>
<span class="number"> 258</span><span class="k1">void</span> DrawBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span>
<span class="number"> 259</span><span class="k2">{</span>
<span class="number"> 260</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> size<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 261</span>  <span class="k2">{</span>
<span class="number"> 262</span>    <span class="k1">if</span><span class="k2">(</span>bullet<span class="k2">[</span>i<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 263</span>      <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span>bullet<span class="k2">[</span>i<span class="k2">]</span>.x, bullet<span class="k2">[</span>i<span class="k2">]</span>.y, <span class="n">5</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">128</span>,<span class="n">128</span>,<span class="n">128</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 264</span>  <span class="k2">}</span>
<span class="number"> 265</span><span class="k2">}</span>
<span class="number"> 266</span>
<span class="number"> 267</span><span class="k1">void</span> FireBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size, SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 268</span><span class="k2">{</span>
<span class="number"> 269</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> size<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 270</span>  <span class="k2">{</span>
<span class="number"> 271</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>bullet<span class="k2">[</span>i<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 272</span>    <span class="k2">{</span>
<span class="number"> 273</span>      bullet<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">=</span> ship.x <span class="k3">+</span> <span class="n">120</span><span class="k2">;</span>
<span class="number"> 274</span>      bullet<span class="k2">[</span>i<span class="k2">]</span>.y <span class="k3">=</span> ship.y <span class="k3">-</span> <span class="n">7</span><span class="k2">;</span>
<span class="number"> 275</span>      bullet<span class="k2">[</span>i<span class="k2">]</span>.live <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 276</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 277</span>    <span class="k2">}</span>
<span class="number"> 278</span>  <span class="k2">}</span>
<span class="number"> 279</span><span class="k2">}</span>
<span class="number"> 280</span>
<span class="number"> 281</span><span class="k1">void</span> UpdateBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span>
<span class="number"> 282</span><span class="k2">{</span>
<span class="number"> 283</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> size<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 284</span>  <span class="k2">{</span>
<span class="number"> 285</span>    <span class="k1">if</span><span class="k2">(</span>bullet<span class="k2">[</span>i<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 286</span>    <span class="k2">{</span>
<span class="number"> 287</span>      bullet<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">+</span><span class="k3">=</span> bullet<span class="k2">[</span>i<span class="k2">]</span>.speed<span class="k2">;</span>
<span class="number"> 288</span>      <span class="k1">if</span><span class="k2">(</span>bullet<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">&gt;</span> width<span class="k2">)</span>
<span class="number"> 289</span>      <span class="k2">{</span>
<span class="number"> 290</span>        bullet<span class="k2">[</span>i<span class="k2">]</span>.live <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 291</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 292</span>      <span class="k2">}</span>
<span class="number"> 293</span>    <span class="k2">}</span>
<span class="number"> 294</span>  <span class="k2">}</span>
<span class="number"> 295</span><span class="k2">}</span>
</div></div><p>

objects.h
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="c">// Objects IDs</span>
<span class="number">  2</span><span class="k1">enum</span> ID<span class="k2">{</span>PLAYER, BULLET, ENEMY<span class="k2">}</span><span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="c">// The player</span>
<span class="number">  5</span><span class="k1">struct</span> SpaceShip
<span class="number">  6</span><span class="k2">{</span>
<span class="number">  7</span>  <span class="k1">int</span> ID<span class="k2">;</span>
<span class="number">  8</span>  <span class="k1">int</span> x<span class="k2">;</span>
<span class="number">  9</span>  <span class="k1">int</span> y<span class="k2">;</span>
<span class="number"> 10</span>  <span class="k1">int</span> lives<span class="k2">;</span>
<span class="number"> 11</span>  <span class="k1">int</span> speed<span class="k2">;</span>
<span class="number"> 12</span>  <span class="k1">int</span> boundx<span class="k2">;</span>
<span class="number"> 13</span>  <span class="k1">int</span> boundy<span class="k2">;</span>
<span class="number"> 14</span>  <span class="k1">int</span> score<span class="k2">;</span>
<span class="number"> 15</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 16</span>
<span class="number"> 17</span><span class="k1">struct</span> Bullet
<span class="number"> 18</span><span class="k2">{</span>
<span class="number"> 19</span>  <span class="k1">int</span> ID<span class="k2">;</span>
<span class="number"> 20</span>  <span class="k1">int</span> x<span class="k2">;</span>
<span class="number"> 21</span>  <span class="k1">int</span> y<span class="k2">;</span>
<span class="number"> 22</span>  <span class="k1">bool</span> live<span class="k2">;</span>
<span class="number"> 23</span>  <span class="k1">int</span> speed<span class="k2">;</span>
<span class="number"> 24</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AleX-G Squadron)</author>
		<pubDate>Sun, 02 Sep 2012 02:19:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><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;allegro5\allegro.h&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;allegro5\allegro_primitives.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5\allegro_image.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5\allegro_ttf.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5\allegro_font.h&gt;</span>
<span class="number">   6</span><span class="p">#include "objects.h"</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="c">// Buttons</span>
<span class="number">   9</span><span class="k1">enum</span> BUTON<span class="k2">{</span>A,S,D,W,SPACE<span class="k2">}</span><span class="k2">;</span>
<span class="number">  10</span><span class="k1">bool</span> buton<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="k1">false</span>,<span class="k1">false</span>,<span class="k1">false</span>,<span class="k1">false</span>,<span class="k1">false</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  11</span>
<span class="number">  12</span><span class="c">// Globals</span>
<span class="number">  13</span><span class="k1">const</span> <span class="k1">int</span> FPS <span class="k3">=</span> <span class="n">80</span>, width <span class="k3">=</span> <span class="n">800</span>, height <span class="k3">=</span> <span class="n">600</span><span class="k2">;</span>
<span class="number">  14</span><span class="k1">const</span> <span class="k1">int</span> NUM_BULLETS <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span>
<span class="number">  15</span>
<span class="number">  16</span><span class="c">// Protorypes</span>
<span class="number">  17</span><span class="k1">void</span> InitShip<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span><span class="k1">void</span> DrawShip<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span><span class="k1">void</span> MoveShipUp<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span><span class="k1">void</span> MoveShipDown<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  21</span><span class="k1">void</span> MoveShipLeft<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  22</span><span class="k1">void</span> MoveShipRight<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>
<span class="number">  24</span><span class="k1">void</span> InitBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span><span class="k1">void</span> DrawBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span><span class="k1">void</span> FireBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size, SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span><span class="k1">void</span> UpdateBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>
<span class="number">  29</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  30</span><span class="k2">{</span>
<span class="number">  31</span>  <span class="c">// Initialization</span>
<span class="number">  32</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">  33</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">  34</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">  35</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">  36</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">  37</span>
<span class="number">  38</span>  <span class="c">// Installations</span>
<span class="number">  39</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">  40</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">  41</span>
<span class="number">  42</span>  <span class="c">// Variables</span>
<span class="number">  43</span>  SpaceShip ship<span class="k2">;</span>
<span class="number">  44</span>  Bullet bullets<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  45</span>  <span class="c">// I don't think you are actually using this variable</span>
<span class="number">  46</span>  <span class="k1">int</span> fireCooldown <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  47</span>
<span class="number">  48</span>  <span class="k1">int</span> x <span class="k3">=</span> width <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  49</span>  <span class="k1">int</span> y <span class="k3">=</span> height <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  50</span>
<span class="number">  51</span>  <span class="k1">bool</span> quit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  52</span>  <span class="k1">bool</span> draw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  53</span>
<span class="number">  54</span>  <span class="c">// ALLEGRO variables</span>
<span class="number">  55</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a> <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>width, height<span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>icon <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><span class="s">"image/1.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>font16 <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">"fonts/1.ttf"</span>, <span class="n">80</span>, ALLEGRO_ALIGN_CENTRE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  59</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  60</span>
<span class="number">  61</span>  event <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>  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">  63</span>  
<span class="number">  64</span>  <span class="c">// Events</span>
<span class="number">  65</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event, <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">  66</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event, <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">  67</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event, <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><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>
<span class="number">  70</span>  <span class="c">// Window title, icon and mouse hide</span>
<span class="number">  71</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><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a>, <span class="s">"Game programming"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>  <a href="http://www.allegro.cc/manual/al_set_display_icon"><span class="a">al_set_display_icon</span></a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a>, icon<span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>  <a href="http://www.allegro.cc/manual/al_hide_mouse_cursor"><span class="a">al_hide_mouse_cursor</span></a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a><span class="k2">)</span><span class="k2">;</span>
<span class="number">  74</span>  
<span class="number">  75</span>  <span class="c">// Player initializations</span>
<span class="number">  76</span>  InitShip<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>  InitBullet<span class="k2">(</span>bullets, NUM_BULLETS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>
<span class="number">  79</span>  <span class="c">// Start timer</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>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>
<span class="number">  82</span>
<span class="number">  83</span>  <span class="c">// The drawing</span>
<span class="number">  84</span>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>quit<span class="k2">)</span>
<span class="number">  85</span>  <span class="k2">{</span>
<span class="number">  86</span>    <span class="c">// Call of the event</span>
<span class="number">  87</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> e<span class="k2">;</span>
<span class="number">  88</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event, <span class="k3">&amp;</span>e<span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>
<span class="number">  90</span>    <span class="c">// Drawing</span>
<span class="number">  91</span>    <span class="k1">if</span><span class="k2">(</span>e.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number">  92</span>    <span class="k2">{</span>
<span class="number">  93</span>      draw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  94</span>      
<span class="number">  95</span>    <span class="k1">if</span><span class="k2">(</span>buton<span class="k2">[</span>A<span class="k2">]</span><span class="k2">)</span>
<span class="number">  96</span>      MoveShipLeft<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>    <span class="k1">if</span><span class="k2">(</span>buton<span class="k2">[</span>D<span class="k2">]</span><span class="k2">)</span>
<span class="number">  98</span>      MoveShipRight<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>    <span class="k1">if</span><span class="k2">(</span>buton<span class="k2">[</span>S<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 100</span>      MoveShipDown<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>    <span class="k1">if</span><span class="k2">(</span>buton<span class="k2">[</span>W<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 102</span>      MoveShipUp<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 103</span>    <span class="c">// Why didn't you apply the same logic to firing your bullets?</span>
<span class="number"> 104</span>    <span class="k1">if</span><span class="k2">(</span>buton<span class="k2">[</span>SPACE<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 105</span>    <span class="k2">{</span>
<span class="number"> 106</span>       <span class="c">// also it's button, you got it right in the comments though.</span>
<span class="number"> 107</span>       <span class="c">// Or is this a different language?</span>
<span class="number"> 108</span>       <span class="k1">if</span><span class="k2">(</span>fireCooldown <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 109</span>       <span class="k2">{</span>
<span class="number"> 110</span>          <span class="c">// We'll decrement this variable later</span>
<span class="number"> 111</span>          <span class="c">// This block will only get executed if fireCooldown equals 0</span>
<span class="number"> 112</span>          fireCooldown <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 113</span>          <span class="c">// Now that we've assigned 10 to fireCooldown we can be sure the next bullet is not going to be fired for a couple of frames</span>
<span class="number"> 114</span>          FireBullet<span class="k2">(</span>bullets, NUM_BULLETS, ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>       <span class="k2">}</span>
<span class="number"> 116</span>    <span class="k2">}</span>
<span class="number"> 117</span>    
<span class="number"> 118</span>    <span class="c">// Let's get the ship ready for the next shot</span>
<span class="number"> 119</span>    <span class="k1">if</span><span class="k2">(</span>fireCooldown <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 120</span>       fireCooldown--<span class="k2">;</span>
<span class="number"> 121</span>     
<span class="number"> 122</span>
<span class="number"> 123</span>      UpdateBullet<span class="k2">(</span>bullets, NUM_BULLETS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>    <span class="k2">}</span>
<span class="number"> 125</span>
<span class="number"> 126</span>    <span class="c">// Key down or up</span>
<span class="number"> 127</span>    <span class="k1">switch</span><span class="k2">(</span>e.type<span class="k2">)</span>
<span class="number"> 128</span>    <span class="k2">{</span>
<span class="number"> 129</span>      <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number"> 130</span>        <span class="k1">switch</span><span class="k2">(</span>e.keyboard.keycode<span class="k2">)</span>
<span class="number"> 131</span>        <span class="k2">{</span>
<span class="number"> 132</span>        <span class="k1">case</span> ALLEGRO_KEY_A:
<span class="number"> 133</span>          buton<span class="k2">[</span>A<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 134</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 135</span>
<span class="number"> 136</span>        <span class="k1">case</span> ALLEGRO_KEY_S:
<span class="number"> 137</span>          buton<span class="k2">[</span>S<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 138</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 139</span>
<span class="number"> 140</span>        <span class="k1">case</span> ALLEGRO_KEY_D:
<span class="number"> 141</span>          buton<span class="k2">[</span>D<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 142</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 143</span>
<span class="number"> 144</span>        <span class="k1">case</span> ALLEGRO_KEY_W:
<span class="number"> 145</span>          buton<span class="k2">[</span>W<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 146</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 147</span>
<span class="number"> 148</span>        <span class="k1">case</span> ALLEGRO_KEY_SPACE:
<span class="number"> 149</span>          buton<span class="k2">[</span>SPACE<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 150</span>          <span class="c">// Now you are going to fire a bullet each time you press your spacebar, so let's move this out of here</span>
<span class="number"> 151</span>          <span class="c">//FireBullet(bullets, NUM_BULLETS, ship);</span>
<span class="number"> 152</span>
<span class="number"> 153</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 154</span>
<span class="number"> 155</span>        <span class="k1">case</span> ALLEGRO_KEY_ESCAPE:
<span class="number"> 156</span>          quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 157</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 158</span>        <span class="k2">}</span>
<span class="number"> 159</span>    <span class="k2">}</span>
<span class="number"> 160</span>
<span class="number"> 161</span>    <span class="k1">switch</span><span class="k2">(</span>e.type<span class="k2">)</span>
<span class="number"> 162</span>    <span class="k2">{</span>
<span class="number"> 163</span>      <span class="k1">case</span> ALLEGRO_EVENT_KEY_UP:
<span class="number"> 164</span>        <span class="k1">switch</span><span class="k2">(</span>e.keyboard.keycode<span class="k2">)</span>
<span class="number"> 165</span>        <span class="k2">{</span>
<span class="number"> 166</span>        <span class="k1">case</span> ALLEGRO_KEY_A:
<span class="number"> 167</span>          buton<span class="k2">[</span>A<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 168</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 169</span>
<span class="number"> 170</span>        <span class="k1">case</span> ALLEGRO_KEY_S:
<span class="number"> 171</span>          buton<span class="k2">[</span>S<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 172</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 173</span>
<span class="number"> 174</span>        <span class="k1">case</span> ALLEGRO_KEY_D:
<span class="number"> 175</span>          buton<span class="k2">[</span>D<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 176</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 177</span>
<span class="number"> 178</span>        <span class="k1">case</span> ALLEGRO_KEY_W:
<span class="number"> 179</span>          buton<span class="k2">[</span>W<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 180</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 181</span>
<span class="number"> 182</span>        <span class="k1">case</span> ALLEGRO_KEY_SPACE:
<span class="number"> 183</span>          buton<span class="k2">[</span>SPACE<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 184</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 185</span>        <span class="k2">}</span>
<span class="number"> 186</span>    <span class="k2">}</span>
<span class="number"> 187</span>
<span class="number"> 188</span>
<span class="number"> 189</span>    <span class="c">// Close display when X is pressed</span>
<span class="number"> 190</span>    <span class="k1">if</span><span class="k2">(</span>e.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span>
<span class="number"> 191</span>    <span class="k2">{</span>
<span class="number"> 192</span>      quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 193</span>    <span class="k2">}</span>
<span class="number"> 194</span>
<span class="number"> 195</span>    <span class="c">// Mouse movement</span>
<span class="number"> 196</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>e.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_AXES<span class="k2">)</span>
<span class="number"> 197</span>    <span class="k2">{</span>
<span class="number"> 198</span>      ship.y <span class="k3">=</span> e.mouse.y<span class="k2">;</span>
<span class="number"> 199</span>    <span class="k2">}</span>
<span class="number"> 200</span>    
<span class="number"> 201</span>    <span class="c">// Bad idea, an ALLEGRO_EVENT is an union</span>
<span class="number"> 202</span>    <span class="c">// Meaning that multiple different members can take the same place in memory</span>
<span class="number"> 203</span>    <span class="c">// Other events might 'overwrite' e.mouse.button, causing it to falsely evaluate to true and this is more likely than you might think as it caused the firing to seem irregular with this not being commented</span>
<span class="number"> 204</span>    <span class="c">/*else if(e.mouse.button &amp; 1)</span>
<span class="number"> 205</span><span class="c">    {</span>
<span class="number"> 206</span><span class="c">      FireBullet(bullets, NUM_BULLETS, ship);</span>
<span class="number"> 207</span><span class="c">    }*/</span>
<span class="number"> 208</span>    <span class="k1">if</span><span class="k2">(</span>e.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_DOWN<span class="k2">)</span>
<span class="number"> 209</span>    <span class="k2">{</span>
<span class="number"> 210</span>       <span class="k1">if</span><span class="k2">(</span>e.mouse.button <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 211</span>       <span class="k2">{</span>
<span class="number"> 212</span>          buton<span class="k2">[</span>SPACE<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// Ugly hack but it works</span>
<span class="number"> 213</span>       <span class="k2">}</span>
<span class="number"> 214</span>    <span class="k2">}</span>
<span class="number"> 215</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>e.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_UP<span class="k2">)</span>
<span class="number"> 216</span>    <span class="k2">{</span>
<span class="number"> 217</span>       <span class="k1">if</span><span class="k2">(</span>e.mouse.button <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 218</span>       <span class="k2">{</span>
<span class="number"> 219</span>          buton<span class="k2">[</span>SPACE<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 220</span>       <span class="k2">}</span>
<span class="number"> 221</span>    <span class="k2">}</span>
<span class="number"> 222</span>
<span class="number"> 223</span>    <span class="k1">if</span><span class="k2">(</span>draw <span class="k3">&amp;</span><span class="k3">&amp;</span> al_event_queue_is_empty<span class="k2">(</span>event<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 224</span>    <span class="k2">{</span>
<span class="number"> 225</span>      draw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 226</span>      DrawShip<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 227</span>      DrawBullet<span class="k2">(</span>bullets, NUM_BULLETS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 228</span>
<span class="number"> 229</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"> 230</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"> 231</span>    <span class="k2">}</span>
<span class="number"> 232</span>
<span class="number"> 233</span>  <span class="k2">}</span>
<span class="number"> 234</span>
<span class="number"> 235</span>  <span class="c">// Destroy</span>
<span class="number"> 236</span>  <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 237</span>  <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>icon<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 238</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_865.html" target="_blank">window</a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 239</span><span class="k2">}</span>
<span class="number"> 240</span>
<span class="number"> 241</span><span class="k1">void</span> InitShip<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 242</span><span class="k2">{</span>
<span class="number"> 243</span>  ship.x <span class="k3">=</span> <span class="n">20</span><span class="k2">;</span>
<span class="number"> 244</span>  ship.y <span class="k3">=</span> height <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 245</span>  ship.ID <span class="k3">=</span> PLAYER<span class="k2">;</span>
<span class="number"> 246</span>  ship.lives <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 247</span>  ship.speed <span class="k3">=</span> <span class="n">7</span><span class="k2">;</span>
<span class="number"> 248</span>  ship.boundx <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span>
<span class="number"> 249</span>  ship.boundy <span class="k3">=</span> <span class="n">7</span><span class="k2">;</span>
<span class="number"> 250</span>  ship.score <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 251</span><span class="k2">}</span>
<span class="number"> 252</span>
<span class="number"> 253</span><span class="k1">void</span> DrawShip<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 254</span><span class="k2">{</span>
<span class="number"> 255</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span>ship.x <span class="k3">-</span> <span class="n">10</span>, ship.y-15, ship.x <span class="k3">+</span> <span class="n">35</span>, ship.y, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">128</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 256</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span>ship.x <span class="k3">+</span> <span class="n">35</span>, ship.y-15, ship.x <span class="k3">+</span> <span class="n">130</span>, ship.y, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> 
<span class="number"> 257</span><span class="k2">}</span>
<span class="number"> 258</span>
<span class="number"> 259</span><span class="k1">void</span> MoveShipUp<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 260</span><span class="k2">{</span>
<span class="number"> 261</span>  ship.y <span class="k3">-</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 262</span>  <span class="k1">if</span><span class="k2">(</span>ship.y <span class="k3">&lt;</span> <span class="n">15</span><span class="k2">)</span>
<span class="number"> 263</span>    ship.y <span class="k3">=</span> <span class="n">15</span><span class="k2">;</span>
<span class="number"> 264</span><span class="k2">}</span>
<span class="number"> 265</span>
<span class="number"> 266</span><span class="k1">void</span> MoveShipDown<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 267</span><span class="k2">{</span>
<span class="number"> 268</span>  ship.y <span class="k3">+</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 269</span>  <span class="k1">if</span><span class="k2">(</span>ship.y <span class="k3">&gt;</span> height<span class="k2">)</span>
<span class="number"> 270</span>    ship.y <span class="k3">=</span> height<span class="k2">;</span>
<span class="number"> 271</span><span class="k2">}</span>
<span class="number"> 272</span>
<span class="number"> 273</span><span class="k1">void</span> MoveShipLeft<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 274</span><span class="k2">{</span>
<span class="number"> 275</span>  ship.x <span class="k3">-</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 276</span>  <span class="k1">if</span><span class="k2">(</span>ship.x <span class="k3">&lt;</span> <span class="n">10</span><span class="k2">)</span>
<span class="number"> 277</span>    ship.x <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 278</span><span class="k2">}</span>
<span class="number"> 279</span>
<span class="number"> 280</span><span class="k1">void</span> MoveShipRight<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 281</span><span class="k2">{</span>
<span class="number"> 282</span>  ship.x <span class="k3">+</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 283</span>  <span class="k1">if</span><span class="k2">(</span>ship.x <span class="k3">&gt;</span> <span class="n">100</span><span class="k2">)</span>
<span class="number"> 284</span>    ship.x <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number"> 285</span><span class="k2">}</span>
<span class="number"> 286</span>
<span class="number"> 287</span><span class="k1">void</span> InitBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span>
<span class="number"> 288</span><span class="k2">{</span>
<span class="number"> 289</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> size<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 290</span>  <span class="k2">{</span>
<span class="number"> 291</span>    bullet<span class="k2">[</span>i<span class="k2">]</span>.ID <span class="k3">=</span> BULLET<span class="k2">;</span>
<span class="number"> 292</span>    bullet<span class="k2">[</span>i<span class="k2">]</span>.speed <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 293</span>    bullet<span class="k2">[</span>i<span class="k2">]</span>.live <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 294</span>  <span class="k2">}</span>
<span class="number"> 295</span><span class="k2">}</span>
<span class="number"> 296</span>
<span class="number"> 297</span><span class="k1">void</span> DrawBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span>
<span class="number"> 298</span><span class="k2">{</span>
<span class="number"> 299</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> size<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 300</span>  <span class="k2">{</span>
<span class="number"> 301</span>    <span class="k1">if</span><span class="k2">(</span>bullet<span class="k2">[</span>i<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 302</span>      <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span>bullet<span class="k2">[</span>i<span class="k2">]</span>.x, bullet<span class="k2">[</span>i<span class="k2">]</span>.y, <span class="n">5</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">128</span>,<span class="n">128</span>,<span class="n">128</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 303</span>  <span class="k2">}</span>
<span class="number"> 304</span><span class="k2">}</span>
<span class="number"> 305</span>
<span class="number"> 306</span><span class="k1">void</span> FireBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size, SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 307</span><span class="k2">{</span>
<span class="number"> 308</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> size<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 309</span>  <span class="k2">{</span>
<span class="number"> 310</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>bullet<span class="k2">[</span>i<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 311</span>    <span class="k2">{</span>
<span class="number"> 312</span>      bullet<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">=</span> ship.x <span class="k3">+</span> <span class="n">120</span><span class="k2">;</span>
<span class="number"> 313</span>      bullet<span class="k2">[</span>i<span class="k2">]</span>.y <span class="k3">=</span> ship.y <span class="k3">-</span> <span class="n">7</span><span class="k2">;</span>
<span class="number"> 314</span>      bullet<span class="k2">[</span>i<span class="k2">]</span>.live <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 315</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 316</span>    <span class="k2">}</span>
<span class="number"> 317</span>  <span class="k2">}</span>
<span class="number"> 318</span><span class="k2">}</span>
<span class="number"> 319</span>
<span class="number"> 320</span><span class="k1">void</span> UpdateBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span>
<span class="number"> 321</span><span class="k2">{</span>
<span class="number"> 322</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> size<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 323</span>  <span class="k2">{</span>
<span class="number"> 324</span>    <span class="k1">if</span><span class="k2">(</span>bullet<span class="k2">[</span>i<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 325</span>    <span class="k2">{</span>
<span class="number"> 326</span>      bullet<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">+</span><span class="k3">=</span> bullet<span class="k2">[</span>i<span class="k2">]</span>.speed<span class="k2">;</span>
<span class="number"> 327</span>      <span class="k1">if</span><span class="k2">(</span>bullet<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">&gt;</span> width<span class="k2">)</span>
<span class="number"> 328</span>      <span class="k2">{</span>
<span class="number"> 329</span>        bullet<span class="k2">[</span>i<span class="k2">]</span>.live <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 330</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 331</span>      <span class="k2">}</span>
<span class="number"> 332</span>    <span class="k2">}</span>
<span class="number"> 333</span>  <span class="k2">}</span>
<span class="number"> 334</span><span class="k2">}</span>
</div></div><p>

Well most of your code worked, I just don&#39;t understand why you decided to handle your shooting so different in comparison to the movement of the ship.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (l j)</author>
		<pubDate>Sun, 02 Sep 2012 04:04:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So you mean this is the code block which makes the autoshooting?
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>    <span class="c">// Why didn't you apply the same logic to firing your bullets?</span>
<span class="number">  2</span>    <span class="k1">if</span><span class="k2">(</span>buton<span class="k2">[</span>SPACE<span class="k2">]</span><span class="k2">)</span>
<span class="number">  3</span>    <span class="k2">{</span>
<span class="number">  4</span>       <span class="c">// also it's button, you got it right in the comments though.</span>
<span class="number">  5</span>       <span class="c">// Or is this a different language?</span>
<span class="number">  6</span>       <span class="k1">if</span><span class="k2">(</span>fireCooldown <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  7</span>       <span class="k2">{</span>
<span class="number">  8</span>          <span class="c">// We'll decrement this variable later</span>
<span class="number">  9</span>          <span class="c">// This block will only get executed if fireCooldown equals 0</span>
<span class="number"> 10</span>          fireCooldown <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 11</span>          <span class="c">// Now that we've assigned 10 to fireCooldown we can be sure the next bullet is not going to be fired for a couple of frames</span>
<span class="number"> 12</span>          FireBullet<span class="k2">(</span>bullets, NUM_BULLETS, ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>       <span class="k2">}</span>
<span class="number"> 14</span>    <span class="k2">}</span>
<span class="number"> 15</span>
<span class="number"> 16</span> 
<span class="number"> 17</span>    <span class="c">// Let's get the ship ready for the next shot</span>
<span class="number"> 18</span>    <span class="k1">if</span><span class="k2">(</span>fireCooldown <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 19</span>       fireCooldown--<span class="k2">;</span>
</div></div><p>

And than i can apply int firecooldown to all games i will create?</p><p>Also, i didnt understand why did you put firecooldown = 10. What is the logic?<br />It decrements 10 loops and than shoots a bullet?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AleX-G Squadron)</author>
		<pubDate>Sun, 02 Sep 2012 14:16:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That code fires every 10 ticks. You can increase it to lower the rate of fire, or decrease it to make it fire faster.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (J-Gamer)</author>
		<pubDate>Sun, 02 Sep 2012 14:32:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just did that <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />It works perfect, i don&#39;t get one last thing.<br />The same block of code is used to make the autoshooting?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AleX-G Squadron)</author>
		<pubDate>Sun, 02 Sep 2012 14:37:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, every time you fire a bullet the counter will get increased. As long as this counter is not zero the next bullet won&#39;t be fired.<br />Every frame(timer event) this counter gets decreased so it can become 0 again.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (l j)</author>
		<pubDate>Sun, 02 Sep 2012 16:43:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, thank you very much!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AleX-G Squadron)</author>
		<pubDate>Sun, 02 Sep 2012 16:47:21 +0000</pubDate>
	</item>
</rss>
