<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Help, First-chance exception at 0x5abeb70e in Game.exe: 0xC0000005: Access viola</title>
		<link>http://www.allegro.cc/forums/view/612586</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 15 May 2013 05:21:02 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I cant get the images to load, it ran when i just drew primitives but when i tried loading an image this error happened and i cant figure it out why, iv already tried running it as an admin. any ideas?</p><p>Heres the main</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="number">   2</span><span class="p">#include &lt;allegro5\allegro.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5\allegro_primitives.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5\allegro_font.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5\allegro_ttf.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;allegro5\allegro_image.h&gt;</span>
<span class="number">   7</span><span class="p">#include "objects.h"</span>
<span class="number">   8</span>
<span class="number">   9</span><span class="c">//Globals</span>
<span class="number">  10</span><span class="k1">const</span> <span class="k1">int</span> WIDTH <span class="k3">=</span> <span class="n">800</span><span class="k2">;</span>
<span class="number">  11</span><span class="k1">const</span> <span class="k1">int</span> HEIGHT <span class="k3">=</span> <span class="n">400</span><span class="k2">;</span>
<span class="number">  12</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">  13</span><span class="k1">const</span> <span class="k1">int</span> NUM_COMETS <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  14</span><span class="k1">enum</span> KEYS<span class="k2">{</span>UP, DOWN, LEFT, RIGHT, SPACE<span class="k2">}</span><span class="k2">;</span>
<span class="number">  15</span><span class="k1">bool</span> keys<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">  16</span>
<span class="number">  17</span><span class="c">//prodotypes</span>
<span class="number">  18</span>
<span class="number">  19</span><span class="k1">void</span> InitShip<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>image<span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</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">  21</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">  22</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">  23</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">  24</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">  25</span>
<span class="number">  26</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">  27</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">  28</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">  29</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">  30</span><span class="k1">void</span> CollideBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> bSize, Comet comets<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> cSize, SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number">  31</span>
<span class="number">  32</span><span class="k1">void</span> InitComet<span class="k2">(</span>Comet comets<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">  33</span><span class="k1">void</span> DrawComet<span class="k2">(</span>Comet comets<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">  34</span><span class="k1">void</span> StartComet<span class="k2">(</span>Comet comets<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">  35</span><span class="k1">void</span> UpdateComet<span class="k2">(</span>Comet comets<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">  36</span><span class="k1">void</span> CollideComet<span class="k2">(</span>Comet comets<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">  37</span>
<span class="number">  38</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  39</span><span class="k2">{</span>
<span class="number">  40</span>  <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  41</span>  <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  42</span>  <span class="k1">bool</span> isGameOver <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  43</span>
<span class="number">  44</span>
<span class="number">  45</span>  <span class="k1">const</span> <span class="k1">int</span> FPS <span class="k3">=</span> <span class="n">60</span><span class="k2">;</span>
<span class="number">  46</span>
<span class="number">  47</span>  SpaceShip ship<span class="k2">;</span>
<span class="number">  48</span>  Bullet bullets<span class="k2">[</span>NUM_BULLETS<span class="k2">]</span><span class="k2">;</span>
<span class="number">  49</span>  Comet comets<span class="k2">[</span>NUM_COMETS<span class="k2">]</span><span class="k2">;</span>
<span class="number">  50</span>
<span class="number">  51</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  52</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  53</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">  54</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>font18 <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  55</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>font20 <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  56</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>shipImage<span class="k2">;</span>
<span class="number">  57</span>
<span class="number">  58</span>  <span class="k1">if</span><span class="k2">(</span> <span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  59</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  60</span>
<span class="number">  61</span>  display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>WIDTH,HEIGHT<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>  shipImage <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">"ship.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>  <a href="http://www.allegro.cc/manual/al_convert_mask_to_alpha"><span class="a">al_convert_mask_to_alpha</span></a><span class="k2">(</span>shipImage, <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">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</span>
<span class="number">  67</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>
<span class="number">  69</span>  <span class="k1">if</span><span class="k2">(</span> <span class="k3">!</span>display <span class="k2">)</span>
<span class="number">  70</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  71</span>
<span class="number">  72</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">  73</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">  74</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">  75</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">  76</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">  77</span>
<span class="number">  78</span>  event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span>  InitShip<span class="k2">(</span>ship, shipImage<span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>  InitBullet<span class="k2">(</span>bullets, NUM_BULLETS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  82</span>  InitComet<span class="k2">(</span>comets, NUM_COMETS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  83</span>
<span class="number">  84</span>  font18 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_font"><span class="a">al_load_font</span></a><span class="k2">(</span><span class="s">"impact.ttf"</span>,<span class="n">65</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  85</span>  font20 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_font"><span class="a">al_load_font</span></a><span class="k2">(</span><span class="s">"impact.ttf"</span>,<span class="n">20</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>
<span class="number">  87</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>  
<span class="number">  91</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">  92</span>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span>
<span class="number">  93</span>  <span class="k2">{</span>
<span class="number">  94</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number">  95</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>
<span class="number">  97</span>    <span class="k1">if</span><span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number">  98</span>    <span class="k2">{</span>
<span class="number">  99</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 100</span>    <span class="k1">if</span><span class="k2">(</span>keys<span class="k2">[</span>UP<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="k1">if</span><span class="k2">(</span>keys<span class="k2">[</span>DOWN<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 103</span>      MoveShipDown<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>    <span class="k1">if</span><span class="k2">(</span>keys<span class="k2">[</span>LEFT<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 105</span>      MoveShipLeft<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 106</span>    <span class="k1">if</span><span class="k2">(</span>keys<span class="k2">[</span>RIGHT<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 107</span>      MoveShipRight<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>
<span class="number"> 109</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>isGameOver<span class="k2">)</span>
<span class="number"> 110</span>    <span class="k2">{</span>
<span class="number"> 111</span>
<span class="number"> 112</span>    UpdateBullet<span class="k2">(</span>bullets, NUM_BULLETS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>    StartComet<span class="k2">(</span>comets, NUM_COMETS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>    UpdateComet<span class="k2">(</span>comets, NUM_COMETS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>    CollideBullet<span class="k2">(</span>bullets,NUM_BULLETS,comets,NUM_COMETS, ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 116</span>    CollideComet<span class="k2">(</span>comets, NUM_COMETS,ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 117</span>
<span class="number"> 118</span>    <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span>font20,<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">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">5</span>, <span class="n">5</span>, <span class="n">0</span>, <span class="s">"Lives: %i                                                                                                                                                         Score: %i"</span>, ship.lives, ship.score<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 119</span>
<span class="number"> 120</span>      <span class="k1">if</span><span class="k2">(</span>ship.lives <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 121</span>      <span class="k2">{</span>
<span class="number"> 122</span>        isGameOver <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 123</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="k2">}</span>
<span class="number"> 127</span>
<span class="number"> 128</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span>
<span class="number"> 129</span>    <span class="k2">{</span>
<span class="number"> 130</span>      done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 131</span>    <span class="k2">}</span>
<span class="number"> 132</span>
<span class="number"> 133</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span>
<span class="number"> 134</span>    <span class="k2">{</span>
<span class="number"> 135</span>      <span class="k1">switch</span><span class="k2">(</span>ev.keyboard.keycode<span class="k2">)</span>
<span class="number"> 136</span>      <span class="k2">{</span>
<span class="number"> 137</span>        <span class="k1">case</span> ALLEGRO_KEY_ESCAPE:
<span class="number"> 138</span>          done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 139</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 140</span>
<span class="number"> 141</span>        <span class="k1">case</span> ALLEGRO_KEY_UP:
<span class="number"> 142</span>          keys<span class="k2">[</span>UP<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 143</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 144</span>
<span class="number"> 145</span>        <span class="k1">case</span> ALLEGRO_KEY_DOWN:
<span class="number"> 146</span>          keys<span class="k2">[</span>DOWN<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 147</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 148</span>
<span class="number"> 149</span>        <span class="k1">case</span> ALLEGRO_KEY_LEFT:
<span class="number"> 150</span>          keys<span class="k2">[</span>LEFT<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 151</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 152</span>
<span class="number"> 153</span>        <span class="k1">case</span> ALLEGRO_KEY_RIGHT:
<span class="number"> 154</span>          keys<span class="k2">[</span>RIGHT<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 155</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 156</span>
<span class="number"> 157</span>        <span class="k1">case</span> ALLEGRO_KEY_SPACE:
<span class="number"> 158</span>          keys<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"> 159</span>          FireBullet<span class="k2">(</span>bullets, NUM_BULLETS, ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 160</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 161</span>      <span class="k2">}</span>
<span class="number"> 162</span>
<span class="number"> 163</span>    <span class="k2">}</span>
<span class="number"> 164</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_UP<span class="k2">)</span>
<span class="number"> 165</span>    <span class="k2">{</span>
<span class="number"> 166</span>      <span class="k1">switch</span><span class="k2">(</span>ev.keyboard.keycode<span class="k2">)</span>
<span class="number"> 167</span>      <span class="k2">{</span>
<span class="number"> 168</span>
<span class="number"> 169</span>        <span class="k1">case</span> ALLEGRO_KEY_ESCAPE:
<span class="number"> 170</span>          done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 171</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 172</span>
<span class="number"> 173</span>        <span class="k1">case</span> ALLEGRO_KEY_UP:
<span class="number"> 174</span>          keys<span class="k2">[</span>UP<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 175</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 176</span>
<span class="number"> 177</span>        <span class="k1">case</span> ALLEGRO_KEY_DOWN:
<span class="number"> 178</span>          keys<span class="k2">[</span>DOWN<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 179</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 180</span>
<span class="number"> 181</span>        <span class="k1">case</span> ALLEGRO_KEY_LEFT:
<span class="number"> 182</span>          keys<span class="k2">[</span>LEFT<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 183</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 184</span>
<span class="number"> 185</span>        <span class="k1">case</span> ALLEGRO_KEY_RIGHT:
<span class="number"> 186</span>          keys<span class="k2">[</span>RIGHT<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 187</span>          <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 188</span>
<span class="number"> 189</span>        <span class="k1">case</span> ALLEGRO_KEY_SPACE:
<span class="number"> 190</span>          keys<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"> 191</span>          <span class="k1">break</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="k1">if</span><span class="k2">(</span>redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 196</span>    <span class="k2">{</span>
<span class="number"> 197</span>
<span class="number"> 198</span>    redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 199</span>
<span class="number"> 200</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>isGameOver<span class="k2">)</span>
<span class="number"> 201</span>      <span class="k2">{</span>
<span class="number"> 202</span>        DrawShip<span class="k2">(</span>ship<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 203</span>        DrawBullet<span class="k2">(</span>bullets, NUM_BULLETS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 204</span>        DrawComet<span class="k2">(</span>comets, NUM_COMETS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 205</span>      <span class="k2">}</span>
<span class="number"> 206</span>      
<span class="number"> 207</span>    <span class="k1">else</span>
<span class="number"> 208</span>    <span class="k2">{</span>
<span class="number"> 209</span>      <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span>font18,<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">220</span>,<span class="n">1</span>,<span class="n">6</span><span class="k2">)</span>, WIDTH <span class="k3">/</span> <span class="n">2</span>, HEIGHT <span class="k3">/</span> <span class="n">2</span>, ALLEGRO_ALIGN_CENTRE, <span class="s">"Game Over! Final Score: %i"</span>, ship.score<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 210</span>    <span class="k2">}</span>
<span class="number"> 211</span>      
<span class="number"> 212</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"> 213</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"> 214</span>    <span class="k2">}</span>
<span class="number"> 215</span>  <span class="k2">}</span>
<span class="number"> 216</span>
<span class="number"> 217</span>  <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 218</span>  <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 219</span>  <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>shipImage<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 220</span>  <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span>font20<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 221</span>  <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span>font18<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 222</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 223</span>
<span class="number"> 224</span>  <span class="k1">return</span> <span class="n">0</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> InitShip<span class="k2">(</span>SpaceShip <span class="k3">&amp;</span>ship, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>image<span class="k2">)</span>
<span class="number"> 228</span><span class="k2">{</span>
<span class="number"> 229</span>  ship.x <span class="k3">=</span> <span class="n">20</span><span class="k2">;</span>
<span class="number"> 230</span>  ship.y <span class="k3">=</span> HEIGHT <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 231</span>  ship.ID <span class="k3">=</span> PLAYER<span class="k2">;</span>
<span class="number"> 232</span>  ship.lives <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 233</span>  ship.speed <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span>
<span class="number"> 234</span>  ship.boundx <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span>
<span class="number"> 235</span>  ship.boundy <span class="k3">=</span> <span class="n">7</span><span class="k2">;</span>
<span class="number"> 236</span>  ship.score <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 237</span>
<span class="number"> 238</span>  ship.maxFrame <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 239</span>  ship.curFrame <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 240</span>  ship.frameDelay <span class="k3">=</span> <span class="n">50</span><span class="k2">;</span>
<span class="number"> 241</span>  ship.frameHeight <span class="k3">=</span> <span class="n">46</span><span class="k2">;</span>
<span class="number"> 242</span>  ship.frameWidth <span class="k3">=</span> <span class="n">41</span><span class="k2">;</span>
<span class="number"> 243</span>  ship.animationColumns <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 244</span>  ship.animationDirection <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 245</span>  ship.animationRow <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 246</span>
<span class="number"> 247</span>  ship.image <span class="k3">=</span> image<span class="k2">;</span>
<span class="number"> 248</span>
<span class="number"> 249</span><span class="k2">}</span>
<span class="number"> 250</span>
<span class="number"> 251</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"> 252</span><span class="k2">{</span>
<span class="number"> 253</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,ship.y <span class="k3">-</span> <span class="n">9</span>,ship.x <span class="k3">+</span> <span class="n">10</span>, ship.y <span class="k3">-</span> <span class="n">7</span> ,<a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 254</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,ship.y <span class="k3">+</span> <span class="n">9</span>,ship.x <span class="k3">+</span> <span class="n">10</span>, ship.y <span class="k3">+</span> <span class="n">7</span> ,<a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 255</span>
<span class="number"> 256</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_triangle"><span class="a">al_draw_filled_triangle</span></a><span class="k2">(</span>ship.x <span class="k3">-</span> <span class="n">12</span>, ship.y <span class="k3">-</span> <span class="n">17</span>, ship.x <span class="k3">+</span> <span class="n">12</span>, ship.y,ship.x <span class="k3">-</span><span class="n">12</span>,ship.y <span class="k3">+</span> <span class="n">17</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">255</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 257</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">12</span>, ship.y <span class="k3">-</span> <span class="n">2</span>, ship.x <span class="k3">+</span> <span class="n">15</span>, ship.y <span class="k3">+</span> <span class="n">2</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 258</span>
<span class="number"> 259</span><span class="k2">}</span>
<span class="number"> 260</span>
<span class="number"> 261</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"> 262</span><span class="k2">{</span>
<span class="number"> 263</span>  ship.y <span class="k3">-</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 264</span>  <span class="k1">if</span><span class="k2">(</span>ship.y <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 265</span>    ship.y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 266</span><span class="k2">}</span>
<span class="number"> 267</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"> 268</span><span class="k2">{</span>
<span class="number"> 269</span>  ship.y <span class="k3">+</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 270</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"> 271</span>    ship.y <span class="k3">=</span> HEIGHT<span class="k2">;</span>
<span class="number"> 272</span><span class="k2">}</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">0</span><span class="k2">)</span>
<span class="number"> 277</span>    ship.x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 278</span><span class="k2">}</span>
<span class="number"> 279</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"> 280</span><span class="k2">{</span>
<span class="number"> 281</span>  ship.x <span class="k3">+</span><span class="k3">=</span> ship.speed<span class="k2">;</span>
<span class="number"> 282</span>  <span class="k1">if</span><span class="k2">(</span>ship.x <span class="k3">&gt;</span> <span class="n">300</span><span class="k2">)</span>
<span class="number"> 283</span>    ship.x <span class="k3">=</span> <span class="n">300</span><span class="k2">;</span>
<span class="number"> 284</span><span class="k2">}</span>
<span class="number"> 285</span>
<span class="number"> 286</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"> 287</span><span class="k2">{</span>
<span class="number"> 288</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"> 289</span>  <span class="k2">{</span>
<span class="number"> 290</span>    bullet<span class="k2">[</span>i<span class="k2">]</span>.ID <span class="k3">=</span> BULLET<span class="k2">;</span>
<span class="number"> 291</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"> 292</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"> 293</span>  <span class="k2">}</span>
<span class="number"> 294</span><span class="k2">}</span>
<span class="number"> 295</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"> 296</span><span class="k2">{</span>
<span class="number"> 297</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"> 298</span>  <span class="k2">{</span>
<span class="number"> 299</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"> 300</span>    <span class="k2">{</span>
<span class="number"> 301</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">2</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 302</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="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"> 306</span><span class="k2">{</span>
<span class="number"> 307</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"> 308</span>  <span class="k2">{</span>
<span class="number"> 309</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"> 310</span>    <span class="k2">{</span>
<span class="number"> 311</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">17</span><span class="k2">;</span>
<span class="number"> 312</span>      bullet<span class="k2">[</span>i<span class="k2">]</span>.y <span class="k3">=</span> ship.y<span class="k2">;</span>
<span class="number"> 313</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"> 314</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 315</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="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"> 319</span><span class="k2">{</span>
<span class="number"> 320</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"> 321</span>  <span class="k2">{</span>
<span class="number"> 322</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"> 323</span>    <span class="k2">{</span>
<span class="number"> 324</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"> 325</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"> 326</span>      <span class="k2">{</span>
<span class="number"> 327</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"> 328</span>      <span class="k2">}</span>
<span class="number"> 329</span>    <span class="k2">}</span>
<span class="number"> 330</span>  <span class="k2">}</span>
<span class="number"> 331</span><span class="k2">}</span>
<span class="number"> 332</span><span class="k1">void</span> CollideBullet<span class="k2">(</span>Bullet bullet<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> bSize, Comet comets<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> cSize, SpaceShip <span class="k3">&amp;</span>ship<span class="k2">)</span>
<span class="number"> 333</span><span class="k2">{</span>
<span class="number"> 334</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> bSize<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 335</span>  <span class="k2">{</span>
<span class="number"> 336</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"> 337</span>    <span class="k2">{</span>
<span class="number"> 338</span>      <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>j<span class="k3">&lt;</span> cSize<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 339</span>      <span class="k2">{</span>
<span class="number"> 340</span>        <span class="k1">if</span><span class="k2">(</span>comets<span class="k2">[</span>j<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 341</span>        <span class="k2">{</span>
<span class="number"> 342</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> <span class="k2">(</span>comets<span class="k2">[</span>j<span class="k2">]</span>.x <span class="k3">-</span> comets<span class="k2">[</span>j<span class="k2">]</span>.boundx<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 343</span>            bullet<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">&lt;</span> <span class="k2">(</span>comets<span class="k2">[</span>j<span class="k2">]</span>.x <span class="k3">+</span> comets<span class="k2">[</span>j<span class="k2">]</span>.boundx<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 344</span>            bullet<span class="k2">[</span>i<span class="k2">]</span>.y <span class="k3">&gt;</span> <span class="k2">(</span>comets<span class="k2">[</span>j<span class="k2">]</span>.y <span class="k3">-</span> comets<span class="k2">[</span>j<span class="k2">]</span>.boundy<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 345</span>            bullet<span class="k2">[</span>i<span class="k2">]</span>.y <span class="k3">&lt;</span> <span class="k2">(</span>comets<span class="k2">[</span>j<span class="k2">]</span>.y <span class="k3">+</span> comets<span class="k2">[</span>j<span class="k2">]</span>.boundy<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 346</span>          <span class="k2">{</span>
<span class="number"> 347</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"> 348</span>            comets<span class="k2">[</span>j<span class="k2">]</span>.live <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 349</span>            ship.score<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 350</span>          <span class="k2">}</span>
<span class="number"> 351</span>        <span class="k2">}</span>
<span class="number"> 352</span>      <span class="k2">}</span>
<span class="number"> 353</span>    <span class="k2">}</span>
<span class="number"> 354</span>  <span class="k2">}</span>
<span class="number"> 355</span><span class="k2">}</span>
<span class="number"> 356</span><span class="k1">void</span> InitComet<span class="k2">(</span>Comet comets<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span>
<span class="number"> 357</span><span class="k2">{</span>
<span class="number"> 358</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"> 359</span>  <span class="k2">{</span>
<span class="number"> 360</span>    comets<span class="k2">[</span>i<span class="k2">]</span>.ID <span class="k3">=</span> ENEMY<span class="k2">;</span>
<span class="number"> 361</span>    comets<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"> 362</span>    comets<span class="k2">[</span>i<span class="k2">]</span>.speed <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span>
<span class="number"> 363</span>    comets<span class="k2">[</span>i<span class="k2">]</span>.boundx <span class="k3">=</span> <span class="n">18</span><span class="k2">;</span>
<span class="number"> 364</span>    comets<span class="k2">[</span>i<span class="k2">]</span>.boundy <span class="k3">=</span> <span class="n">18</span><span class="k2">;</span>
<span class="number"> 365</span>  <span class="k2">}</span>
<span class="number"> 366</span><span class="k2">}</span>
<span class="number"> 367</span><span class="k1">void</span> DrawComet<span class="k2">(</span>Comet comets<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span>
<span class="number"> 368</span><span class="k2">{</span>
<span class="number"> 369</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"> 370</span>  <span class="k2">{</span>
<span class="number"> 371</span>    <span class="k1">if</span><span class="k2">(</span>comets<span class="k2">[</span>i<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 372</span>    <span class="k2">{</span>
<span class="number"> 373</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>comets<span class="k2">[</span>i<span class="k2">]</span>.x, comets<span class="k2">[</span>i<span class="k2">]</span>.y, <span class="n">20</span>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 374</span>    <span class="k2">}</span>
<span class="number"> 375</span>  <span class="k2">}</span>
<span class="number"> 376</span><span class="k2">}</span>
<span class="number"> 377</span><span class="k1">void</span> StartComet<span class="k2">(</span>Comet comets<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span>
<span class="number"> 378</span><span class="k2">{</span>
<span class="number"> 379</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"> 380</span>  <span class="k2">{</span>
<span class="number"> 381</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>comets<span class="k2">[</span>i<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 382</span>    <span class="k2">{</span>
<span class="number"> 383</span>      <span class="k1">if</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">500</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 384</span>      <span class="k2">{</span>
<span class="number"> 385</span>        comets<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"> 386</span>        comets<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">=</span> WIDTH<span class="k2">;</span>
<span class="number"> 387</span>        comets<span class="k2">[</span>i<span class="k2">]</span>.y <span class="k3">=</span> <span class="n">30</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="k2">(</span>HEIGHT <span class="k3">-</span> <span class="n">60</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 388</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 389</span>      <span class="k2">}</span>
<span class="number"> 390</span>    <span class="k2">}</span>
<span class="number"> 391</span>  <span class="k2">}</span>
<span class="number"> 392</span><span class="k2">}</span>
<span class="number"> 393</span><span class="k1">void</span> UpdateComet<span class="k2">(</span>Comet comets<span class="k2">[</span><span class="k2">]</span>, <span class="k1">int</span> size<span class="k2">)</span>
<span class="number"> 394</span><span class="k2">{</span>
<span class="number"> 395</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"> 396</span>  <span class="k2">{</span>
<span class="number"> 397</span>    <span class="k1">if</span><span class="k2">(</span>comets<span class="k2">[</span>i<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 398</span>    <span class="k2">{</span>
<span class="number"> 399</span>      comets<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">-</span><span class="k3">=</span> comets<span class="k2">[</span>i<span class="k2">]</span>.speed<span class="k2">;</span>
<span class="number"> 400</span>    <span class="k2">}</span>
<span class="number"> 401</span>  <span class="k2">}</span>
<span class="number"> 402</span><span class="k2">}</span>
<span class="number"> 403</span><span class="k1">void</span> CollideComet<span class="k2">(</span>Comet comets<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"> 404</span><span class="k2">{</span>
<span class="number"> 405</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"> 406</span>  <span class="k2">{</span>
<span class="number"> 407</span>    <span class="k1">if</span><span class="k2">(</span>comets<span class="k2">[</span>i<span class="k2">]</span>.live<span class="k2">)</span>
<span class="number"> 408</span>    <span class="k2">{</span>
<span class="number"> 409</span>      <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>comets<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">-</span> comets<span class="k2">[</span>i<span class="k2">]</span>.boundx<span class="k2">)</span> <span class="k3">&lt;</span> <span class="k2">(</span>ship.x <span class="k3">+</span> ship.boundx<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 410</span>        <span class="k2">(</span>comets<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">+</span> comets<span class="k2">[</span>i<span class="k2">]</span>.boundx<span class="k2">)</span> <span class="k3">&gt;</span> <span class="k2">(</span>ship.x <span class="k3">-</span> ship.boundx<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 411</span>        <span class="k2">(</span>comets<span class="k2">[</span>i<span class="k2">]</span>.y <span class="k3">-</span> comets<span class="k2">[</span>i<span class="k2">]</span>.boundy<span class="k2">)</span> <span class="k3">&lt;</span> <span class="k2">(</span>ship.y <span class="k3">+</span> ship.boundy<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 412</span>        <span class="k2">(</span>comets<span class="k2">[</span>i<span class="k2">]</span>.y <span class="k3">+</span> comets<span class="k2">[</span>i<span class="k2">]</span>.boundy<span class="k2">)</span> <span class="k3">&gt;</span> <span class="k2">(</span>ship.y <span class="k3">-</span> ship.boundy<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 413</span>      <span class="k2">{</span>
<span class="number"> 414</span>        ship.lives--<span class="k2">;</span>
<span class="number"> 415</span>        comets<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"> 416</span>      <span class="k2">}</span>
<span class="number"> 417</span>      <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>comets<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 418</span>      <span class="k2">{</span>
<span class="number"> 419</span>        comets<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"> 420</span>        ship.lives--<span class="k2">;</span>
<span class="number"> 421</span>      <span class="k2">}</span>
<span class="number"> 422</span>    <span class="k2">}</span>
<span class="number"> 423</span>  <span class="k2">}</span>
<span class="number"> 424</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="k1">enum</span> IDS<span class="k2">{</span>PLAYER, BULLET, ENEMY<span class="k2">}</span><span class="k2">;</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="k1">struct</span> SpaceShip
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span>  <span class="k1">int</span> ID<span class="k2">;</span>
<span class="number">  6</span>  <span class="k1">int</span> x<span class="k2">;</span>
<span class="number">  7</span>  <span class="k1">int</span> y<span class="k2">;</span>
<span class="number">  8</span>  <span class="k1">int</span> lives<span class="k2">;</span>
<span class="number">  9</span>  <span class="k1">int</span> speed<span class="k2">;</span>
<span class="number"> 10</span>  <span class="k1">int</span> boundx<span class="k2">;</span>
<span class="number"> 11</span>  <span class="k1">int</span> boundy<span class="k2">;</span>
<span class="number"> 12</span>  <span class="k1">int</span> score<span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>  <span class="k1">int</span> maxFrame<span class="k2">;</span>
<span class="number"> 15</span>  <span class="k1">int</span> curFrame<span class="k2">;</span>
<span class="number"> 16</span>  <span class="k1">int</span> frameDelay<span class="k2">;</span>
<span class="number"> 17</span>  <span class="k1">int</span> frameWidth<span class="k2">;</span>
<span class="number"> 18</span>  <span class="k1">int</span> frameHeight<span class="k2">;</span>
<span class="number"> 19</span>  <span class="k1">int</span> animationColumns<span class="k2">;</span>
<span class="number"> 20</span>  <span class="k1">int</span> animationDirection<span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span>  <span class="k1">int</span> animationRow<span class="k2">;</span>
<span class="number"> 23</span>
<span class="number"> 24</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>image<span class="k2">;</span>
<span class="number"> 25</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 26</span>
<span class="number"> 27</span><span class="k1">struct</span> Bullet
<span class="number"> 28</span><span class="k2">{</span>
<span class="number"> 29</span>  <span class="k1">int</span> ID<span class="k2">;</span>
<span class="number"> 30</span>  <span class="k1">int</span> x<span class="k2">;</span>
<span class="number"> 31</span>  <span class="k1">int</span> y<span class="k2">;</span>
<span class="number"> 32</span>  <span class="k1">bool</span> live<span class="k2">;</span>
<span class="number"> 33</span>  <span class="k1">int</span> speed<span class="k2">;</span>
<span class="number"> 34</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 35</span>
<span class="number"> 36</span><span class="k1">struct</span> Comet
<span class="number"> 37</span><span class="k2">{</span>
<span class="number"> 38</span>  <span class="k1">int</span> ID<span class="k2">;</span>
<span class="number"> 39</span>  <span class="k1">int</span> x<span class="k2">;</span>
<span class="number"> 40</span>  <span class="k1">int</span> y<span class="k2">;</span>
<span class="number"> 41</span>  <span class="k1">bool</span> live<span class="k2">;</span>
<span class="number"> 42</span>  <span class="k1">int</span> speed<span class="k2">;</span>
<span class="number"> 43</span>  <span class="k1">int</span> boundx<span class="k2">;</span>
<span class="number"> 44</span>  <span class="k1">int</span> boundy<span class="k2">;</span>
<span class="number"> 45</span>
<span class="number"> 46</span>  <span class="k1">int</span> maxFrame<span class="k2">;</span>
<span class="number"> 47</span>  <span class="k1">int</span> curFrame<span class="k2">;</span>
<span class="number"> 48</span>  <span class="k1">int</span> frameDelay<span class="k2">;</span>
<span class="number"> 49</span>  <span class="k1">int</span> frameWidth<span class="k2">;</span>
<span class="number"> 50</span>  <span class="k1">int</span> frameHeight<span class="k2">;</span>
<span class="number"> 51</span>  <span class="k1">int</span> animationColumns<span class="k2">;</span>
<span class="number"> 52</span>  <span class="k1">int</span> animationDirection<span class="k2">;</span>
<span class="number"> 53</span>
<span class="number"> 54</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>image<span class="k2">;</span>
<span class="number"> 55</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 56</span>
<span class="number"> 57</span><span class="k1">struct</span> Explosion
<span class="number"> 58</span><span class="k2">{</span>
<span class="number"> 59</span>  <span class="k1">int</span> x<span class="k2">;</span>
<span class="number"> 60</span>  <span class="k1">int</span> y<span class="k2">;</span>
<span class="number"> 61</span>  <span class="k1">bool</span> live<span class="k2">;</span>
<span class="number"> 62</span>
<span class="number"> 63</span>  <span class="k1">int</span> maxFrame<span class="k2">;</span>
<span class="number"> 64</span>  <span class="k1">int</span> curFrame<span class="k2">;</span>
<span class="number"> 65</span>  <span class="k1">int</span> frameDelay<span class="k2">;</span>
<span class="number"> 66</span>  <span class="k1">int</span> frameWidth<span class="k2">;</span>
<span class="number"> 67</span>  <span class="k1">int</span> frameHeight<span class="k2">;</span>
<span class="number"> 68</span>  <span class="k1">int</span> animationColumns<span class="k2">;</span>
<span class="number"> 69</span>  <span class="k1">int</span> animationDirection<span class="k2">;</span>
<span class="number"> 70</span>
<span class="number"> 71</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>image<span class="k2">;</span>
<span class="number"> 72</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (1thatonedude1)</author>
		<pubDate>Tue, 14 May 2013 22:52:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Call al_init_image_addon() before loading the bitmap, you call it after
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ph03nix)</author>
		<pubDate>Tue, 14 May 2013 23:36:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Also, <a href="http://wiki.allegro.cc/index.php?title=Loading_Resources_(Troubleshooting)">read this</a>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Wed, 15 May 2013 05:21:02 +0000</pubDate>
	</item>
</rss>
