<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Shooting Ball From Rotating Bitmap</title>
		<link>http://www.allegro.cc/forums/view/618884</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 13 Jan 2024 23:51:10 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi all:<br /> I hate to post again so soon, but I have another<br />question:<br /> I have this bitmap rotating at center of screen.<br /> I want to shoot a ball from the bitmap across the<br />screen at the angle of the rotating bitmap. I am<br />pretty close but something is not right with what<br />I have now. I have uploaded the two files above<br />so you can see what I have now. It should be very<br />simple but in two days I haven&#39;t a clue what is<br />wrong. If you could point me in the right direction,<br />that would be great.</p><p>Thanks for your time!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Scooter)</author>
		<pubDate>Thu, 11 Jan 2024 00:57:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Each update should be off the last x and y, not new x,y. </p><div class="source-code snippet"><div class="inner"><pre>ball_x <span class="k3">=</span> ball_x <span class="k3">+</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>angle<span class="k2">)</span> <span class="k3">*</span> speed<span class="k2">;</span>
</pre></div></div><p>

And the draw should be based off the current x and y.</p><p>Save yourself some hassle and pre-convert your pi/180 or 180/pi. Just a suggestion. Saves writing time.</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#define PI_OVER_180 0.017453292</span>
</pre></div></div><p>

Actually confused as to why you have ball_x/y and new_x/y. What is the purpose of each?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Thu, 11 Jan 2024 01:10:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi Scooter, nice to see you again.</p><p>So, to clear up a few things, you&#39;re mixing ball and turret updates together. The angle of the ball shouldn&#39;t change once it is fired. Track the start x and y of the ball and get the speed * delta time with the original firing angle to get the new position.</p><p><img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 11 Jan 2024 20:08:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi Daniel and Edgar:<br />  Thanks for your replies!<br />I have posted an update using the instructions.<br />You can see my changes. I am now shooting the ball.<br />Great relief! But I still have a problem,<br />If I comment out &#39;updating the turret angle&#39; and then press<br />the SPACE Key the ball will fire to the right like<br />it is supposed to. If I allow to turret to rotate it appears<br />the ball is not rotating with the angle of the turret. When<br />I press the SPACE Key the ball fires at a different angle.<br />Kinda crazy really. I still can&#39;t see what is going on! If<br />you run my update you will see what I mean!<br />No hurry, just when you have time!</p><p>Thanks for your time!!!</p><p>I know exactly what I need to do, but I can&#39;t make it happen!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Scooter)</author>
		<pubDate>Fri, 12 Jan 2024 01:32:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If the ball is not centered on the turret, say because it&#39;s on the end, then you need to account for that. What is the length of the turret? Use trig to get the end of the turret. That is where the ball is when it has not been fired. When it is fired, store the position and angle of the ball.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 12 Jan 2024 23:34:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi Edgar:<br />  Having no luck at all today.<br />  Did you take a look at my update I posted above?<br />  The trouble I am having is the ball position is<br />  not following the turret. The ball_angle should<br />  be the same as the turret_angle which is angleX<br />  incremented at 2 degrees converted to radians.<br />  The turret is located at center of screen at:</p><p>  x = 640<br />  y = 360<br />  ball location at 690<br />  <br />  turret is 100 x 80</p><p>  2D rotations have always been a problem for me!<br />  3D rotations are NOT this big of a problem!<br />  If you remember, some time ago I was asking about<br />  unfolding a 3D cube. Had no problem doing that&#39;<br />  I will be back at it again tomorrow to see if<br />  I can solve the problem.</p><p>  Thanks for your time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Scooter)</author>
		<pubDate>Sat, 13 Jan 2024 03:04:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello Scooter, I had a play around with your code. It looked like you were updating the ball angle and new_x/y every frame, whcich I couln&#39;t really follow. Also it looked like the ball just appeared then disappeared? </p><p>I have changed some code and made a new function <span class="source-code">start_shoot_ball<span class="k2">(</span><span class="k2">)</span></span> that starts the ball firing when you press space.</p><p>Try my code and see if it&#39;s closer to what you wanted? I don&#39;t know if you want the ball to keep following the turret angle <b>after</b> firing, that seems odd but, let me know!!</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;stdio.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;stdlib.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">   7</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">   8</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">   9</span><span class="p">#include &lt;stdbool.h&gt;</span>
<span class="number">  10</span>
<span class="number">  11</span><span class="p">#define PI 3.1415927</span>
<span class="number">  12</span>
<span class="number">  13</span><span class="k1">float</span> screen_width <span class="k3">=</span> <span class="n">1280</span><span class="k2">;</span>
<span class="number">  14</span><span class="k1">float</span> screen_height <span class="k3">=</span> <span class="n">720</span><span class="k2">;</span>
<span class="number">  15</span><span class="k1">float</span> image_width, image_height<span class="k2">;</span>
<span class="number">  16</span>
<span class="number">  17</span><span class="k1">float</span> ball_x <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span>
<span class="number">  18</span><span class="k1">float</span> ball_y <span class="k3">=</span> <span class="n">360</span><span class="k2">;</span>
<span class="number">  19</span><span class="k1">float</span> turret_x <span class="k3">=</span> <span class="n">620</span><span class="k2">;</span>
<span class="number">  20</span><span class="k1">float</span> turret_y <span class="k3">=</span> <span class="n">360</span><span class="k2">;</span>
<span class="number">  21</span><span class="k1">float</span> ball_speed <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  22</span>
<span class="number">  23</span><span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  24</span><span class="k1">bool</span> shoot_ball <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  25</span><span class="k1">bool</span> start <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  26</span>
<span class="number">  27</span><span class="k1">float</span> angleX <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  28</span><span class="k1">float</span> ball_angle <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  29</span><span class="k1">float</span> turret_angle <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  30</span><span class="k1">float</span> dist <span class="k3">=</span> <span class="n">50</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  31</span>
<span class="number">  32</span><span class="k1">int</span> ball_dia <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span>
<span class="number">  33</span>
<span class="number">  34</span><span class="k1">void</span> start_shoot_ball<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span><span class="k1">void</span> update_turret_angle<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span><span class="k1">void</span> update_ball<span class="k2">(</span><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="k2">)</span>
<span class="number">  39</span><span class="k2">{</span>
<span class="number">  40</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">  41</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> turret <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  42</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">  43</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">  44</span>
<span class="number">  45</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">  46</span>    <span class="k2">{</span>
<span class="number">  47</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Couldn't initialize allegro!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  49</span>    <span class="k2">}</span>
<span class="number">  50</span>
<span class="number">  51</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  52</span>    <span class="k2">{</span>
<span class="number">  53</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to initialize the mouse!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  54</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  55</span>    <span class="k2">}</span>
<span class="number">  56</span>
<span class="number">  57</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  58</span>    <span class="k2">{</span>
<span class="number">  59</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Couldn't initialize primitives addon!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  61</span>    <span class="k2">}</span>
<span class="number">  62</span>
<span class="number">  63</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>screen_width, screen_height<span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>
<span class="number">  65</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span>
<span class="number">  66</span>    <span class="k2">{</span>
<span class="number">  67</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Couldn't create allegro display!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  69</span>    <span class="k2">}</span>
<span class="number">  70</span>
<span class="number">  71</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  72</span>    <span class="k2">{</span>
<span class="number">  73</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Couldn't display image!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  74</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  75</span>    <span class="k2">}</span>
<span class="number">  76</span>
<span class="number">  77</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">  78</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">  79</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">  80</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">  81</span>
<span class="number">  82</span>    turret <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">"turret.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  83</span>    image_height <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_height"><span class="a">al_get_bitmap_height</span></a><span class="k2">(</span>turret<span class="k2">)</span><span class="k2">;</span>
<span class="number">  84</span>    image_width <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_width"><span class="a">al_get_bitmap_width</span></a><span class="k2">(</span>turret<span class="k2">)</span><span class="k2">;</span>
<span class="number">  85</span>
<span class="number">  86</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> <span class="n">60</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_KEYBOARD_STATE"><span class="a">ALLEGRO_KEYBOARD_STATE</span></a> keyState<span class="k2">;</span>
<span class="number">  88</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">  89</span>
<span class="number">  90</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">  91</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_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">  92</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">  93</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">  94</span>
<span class="number">  95</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">127</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">  96</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">  97</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">  98</span>    <span class="k1">int</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  99</span>
<span class="number"> 100</span>    <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span>
<span class="number"> 101</span>    <span class="k2">{</span>
<span class="number"> 102</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"> 103</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"> 104</span>        <a href="http://www.allegro.cc/manual/al_get_keyboard_state"><span class="a">al_get_keyboard_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>keyState<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</span>
<span class="number"> 106</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="k3">&amp;</span><span class="k3">&amp;</span> ev.timer.source <span class="k3">=</span><span class="k3">=</span> timer<span class="k2">)</span>
<span class="number"> 107</span>        <span class="k2">{</span>
<span class="number"> 108</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">127</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"> 109</span>
<span class="number"> 110</span>            angleX <span class="k3">=</span> <span class="k2">(</span>turret_angle <span class="k3">*</span> PI<span class="k2">)</span> <span class="k3">/</span> <span class="n">180</span>.<span class="n">0</span><span class="k2">;</span>  <span class="c">//convert angle to radians</span>
<span class="number"> 111</span>            <a href="http://www.allegro.cc/manual/al_draw_rotated_bitmap"><span class="a">al_draw_rotated_bitmap</span></a><span class="k2">(</span>turret, <span class="n">50</span>, <span class="n">40</span>, turret_x, turret_y, <span class="k3">-</span>angleX, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>
<span class="number"> 113</span>            update_turret_angle<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>
<span class="number"> 115</span>            <span class="k1">if</span> <span class="k2">(</span>shoot_ball <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span>
<span class="number"> 116</span>            <span class="k2">{</span>
<span class="number"> 117</span>                update_ball<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</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>ball_x, ball_y, ball_dia, <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"> 119</span>            <span class="k2">}</span>
<span class="number"> 120</span>
<span class="number"> 121</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"> 122</span>        <span class="k2">}</span>
<span class="number"> 123</span>
<span class="number"> 124</span>
<span class="number"> 125</span>
<span class="number"> 126</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"> 127</span>        <span class="k2">{</span>
<span class="number"> 128</span>            <span class="k1">switch</span> <span class="k2">(</span>ev.keyboard.keycode<span class="k2">)</span>
<span class="number"> 129</span>            <span class="k2">{</span>
<span class="number"> 130</span>            <span class="k1">case</span> ALLEGRO_KEY_ESCAPE:
<span class="number"> 131</span>                done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 132</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 133</span>
<span class="number"> 134</span>            <span class="k1">case</span> ALLEGRO_KEY_SPACE:
<span class="number"> 135</span>                <a href="http://www.allegro.cc/manual/al_get_keyboard_state"><span class="a">al_get_keyboard_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>keyState<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 136</span>                start_shoot_ball<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 137</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 138</span>
<span class="number"> 139</span>            <span class="k2">}</span>
<span class="number"> 140</span>
<span class="number"> 141</span>        <span class="k2">}</span>
<span class="number"> 142</span>
<span class="number"> 143</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"> 144</span>
<span class="number"> 145</span>        <span class="k2">{</span>
<span class="number"> 146</span>            done <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="k2">}</span>
<span class="number"> 149</span>    <span class="k2">}</span>
<span class="number"> 150</span>
<span class="number"> 151</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"> 152</span>    <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>turret<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 153</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"> 154</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"> 155</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 156</span><span class="k2">}</span>
<span class="number"> 157</span>
<span class="number"> 158</span><span class="k1">void</span> start_shoot_ball<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 159</span><span class="k2">{</span>
<span class="number"> 160</span>    shoot_ball <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 161</span>    ball_angle <span class="k3">=</span> <span class="k2">(</span>turret_angle <span class="k3">*</span> PI<span class="k2">)</span> <span class="k3">/</span> <span class="n">180</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 162</span>    ball_x <span class="k3">=</span> <span class="n">620</span> <span class="k3">+</span> <span class="k2">(</span>dist <span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>angleX<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 163</span>    ball_y <span class="k3">=</span> <span class="n">360</span> <span class="k3">-</span> <span class="k2">(</span>dist <span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span>angleX<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 164</span><span class="k2">}</span>
<span class="number"> 165</span>
<span class="number"> 166</span><span class="k1">void</span> update_turret_angle<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 167</span><span class="k2">{</span>
<span class="number"> 168</span>    turret_angle <span class="k3">+</span><span class="k3">=</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 169</span>    <span class="k1">if</span> <span class="k2">(</span>turret_angle <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">360</span><span class="k2">)</span> turret_angle <span class="k3">=</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 170</span><span class="k2">}</span>
<span class="number"> 171</span>
<span class="number"> 172</span><span class="k1">void</span> update_ball<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 173</span><span class="k2">{</span>
<span class="number"> 174</span>    ball_x <span class="k3">+</span><span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>ball_angle<span class="k2">)</span> <span class="k3">*</span> ball_speed<span class="k2">;</span>
<span class="number"> 175</span>    ball_y <span class="k3">-</span><span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span>ball_angle<span class="k2">)</span> <span class="k3">*</span> ball_speed<span class="k2">;</span>
<span class="number"> 176</span>
<span class="number"> 177</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Sat, 13 Jan 2024 20:30:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi Dizzy:<br />  This looks GREAT!<br />I finally got the ball to track the turret but I was<br />never able to shoot the ball with the Space Key.<br />The only things I changed was:</p><p>I changed the ball speed to 15.<br />I advanced the turret angle 10 degrees to shoot the ball.</p><p>This made the ball track the turret angle closer. I might<br />still be off a little on that.</p><p>Everything seems to be perfect, just what I wanted.<br />Great job, as usual!</p><p>Thanks, have a great day!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Scooter)</author>
		<pubDate>Sat, 13 Jan 2024 23:51:10 +0000</pubDate>
	</item>
</rss>
