<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Vivace extra points.  Its there a better way of doing this one. </title>
		<link>http://www.allegro.cc/forums/view/618775</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 30 Jan 2023 21:07:30 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am working through the Vivace tutorial.  I am at the point of animation, or moving things around the screen.  At the end of the lesson it states extra points for preventing the randomly bouncing objects from drifting off screen.  <br />I manage to get it to work but thanks to the circle and inverted (up ramped) line I ended up with code addressing things individually instead of a system group approach. Maybe this is good as it gets but I thought I&#39;d ask if others had a better approach I didn&#39;t consider.  Any input would be appreciated. <br />I tried to comment the sections I added or altered. Thanks.</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;stdio.h&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;stdlib.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5/allegro5.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_image.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="k1">void</span> must_init<span class="k2">(</span><span class="k1">bool</span> test, <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>description<span class="k2">)</span>
<span class="number">   9</span><span class="k2">{</span>
<span class="number">  10</span>    <span class="k1">if</span><span class="k2">(</span>test<span class="k2">)</span> <span class="k1">return</span><span class="k2">;</span>
<span class="number">  11</span>
<span class="number">  12</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"couldn't initialize %s\n"</span>, description<span class="k2">)</span><span class="k2">;</span>
<span class="number">  13</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  14</span><span class="k2">}</span>
<span class="number">  15</span>
<span class="number">  16</span><span class="k1">enum</span> BOUNCER_TYPE <span class="k2">{</span>
<span class="number">  17</span>    BT_HELLO <span class="k3">=</span> <span class="n">0</span>,
<span class="number">  18</span>    BT_MYSHA,
<span class="number">  19</span>    BT_TRIANGLE,
<span class="number">  20</span>    BT_RECTANGLE_1,
<span class="number">  21</span>    BT_RECTANGLE_2,
<span class="number">  22</span>    BT_CIRCLE,
<span class="number">  23</span>    BT_LINE1,
<span class="number">  24</span>    BT_LINE2,
<span class="number">  25</span>    BT_N
<span class="number">  26</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  27</span>
<span class="number">  28</span><span class="k1">typedef</span> <span class="k1">struct</span> BOUNCER
<span class="number">  29</span><span class="k2">{</span>
<span class="number">  30</span>    <span class="k1">float</span> x, y<span class="k2">;</span>
<span class="number">  31</span>    <span class="k1">float</span> dx, dy<span class="k2">;</span>
<span class="number">  32</span>    <span class="k1">float</span> sx, sy<span class="k2">;</span> <span class="c">// Lower right corner of object square</span>
<span class="number">  33</span>    <span class="k1">int</span> type<span class="k2">;</span>
<span class="number">  34</span><span class="k2">}</span> BOUNCER<span class="k2">;</span>
<span class="number">  35</span>
<span class="number">  36</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  37</span><span class="k2">{</span>
<span class="number">  38</span>   <span class="k1">float</span> limit_x<span class="k2">;</span>  <span class="c">//Offset limits to prevent going off screen </span>
<span class="number">  39</span>   <span class="k1">float</span> limit_y<span class="k2">;</span>
<span class="number">  40</span>
<span class="number">  41</span>  must_init<span class="k2">(</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="s">"allegro"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>    must_init<span class="k2">(</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="s">"keyboard"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>
<span class="number">  44</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> <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">30</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span>    must_init<span class="k2">(</span>timer, <span class="s">"timer"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</span>
<span class="number">  47</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span> 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">  48</span>    must_init<span class="k2">(</span>queue, <span class="s">"queue"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  49</span>
<span class="number">  50</span>    <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLE_BUFFERS, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  51</span>    <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLES, <span class="n">8</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>    <a href="http://www.allegro.cc/manual/al_set_new_bitmap_flags"><span class="a">al_set_new_bitmap_flags</span></a><span class="k2">(</span>ALLEGRO_MIN_LINEAR <span class="k3">|</span> ALLEGRO_MAG_LINEAR<span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>
<span class="number">  54</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> disp <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><span class="n">640</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>    must_init<span class="k2">(</span>disp, <span class="s">"display"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>
<span class="number">  57</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a><span class="k3">*</span> <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">=</span> al_create_builtin_font<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</span>    must_init<span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <span class="s">"font"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>
<span class="number">  60</span>    must_init<span class="k2">(</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="s">"image addon"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> mysha <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">"mysha.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>    must_init<span class="k2">(</span>mysha, <span class="s">"mysha"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>
<span class="number">  64</span>    must_init<span class="k2">(</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="s">"primitives"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>
<span class="number">  66</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>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">  67</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>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>disp<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>    <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>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">  69</span>
<span class="number">  70</span>    <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  71</span>    <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  72</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event<span class="k2">;</span>
<span class="number">  73</span>
<span class="number">  74</span>    BOUNCER obj<span class="k2">[</span>BT_N<span class="k2">]</span><span class="k2">;</span>
<span class="number">  75</span>
<span class="number">  76</span>  obj<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sx <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span> obj<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sy <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span> <span class="c">// used with X and Y, SX and SY create a square to encompass the shapes</span>
<span class="number">  77</span>    obj<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sx <span class="k3">=</span> <span class="n">318</span><span class="k2">;</span> obj<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.sy <span class="k3">=</span> <span class="n">200</span><span class="k2">;</span> <span class="c">// took them from the draw commands below</span>
<span class="number">  78</span>    obj<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sx <span class="k3">=</span> <span class="n">50</span><span class="k2">;</span> obj<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.sy <span class="k3">=</span> <span class="n">50</span><span class="k2">;</span>
<span class="number">  79</span>    obj<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sx <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span> obj<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.sy <span class="k3">=</span> <span class="n">80</span><span class="k2">;</span>
<span class="number">  80</span>    obj<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>.sx <span class="k3">=</span> <span class="n">120</span><span class="k2">;</span> obj<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>.sy <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number">  81</span>    obj<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sx <span class="k3">=</span> <span class="n">30</span><span class="k2">;</span> obj<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>.sy <span class="k3">=</span> <span class="n">30</span><span class="k2">;</span>
<span class="number">  82</span>    obj<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sx <span class="k3">=</span> <span class="n">20</span><span class="k2">;</span> obj<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>.sy <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number">  83</span>    obj<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sx <span class="k3">=</span> <span class="n">70</span><span class="k2">;</span> obj<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>.sy <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  84</span>
<span class="number">  85</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> BT_N<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  86</span>    <span class="k2">{</span>
<span class="number">  87</span>        BOUNCER<span class="k3">*</span> b <span class="k3">=</span> <span class="k3">&amp;</span>obj<span class="k2">[</span>i<span class="k2">]</span><span class="k2">;</span>
<span class="number">  88</span>        b-&gt;x <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">320</span><span class="k2">;</span>   <span class="c">// Changed from 640x480, Once outer limits were established I had to prevent the first draw to be out of bounds.  It would lock the  </span>
<span class="number">  89</span>        b-&gt;y <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">250</span><span class="k2">;</span>   <span class="c">// the shape in the out of bound condition. Used the largest shape for the difference. (Mysha = 320x200)  </span>
<span class="number">  90</span>        b-&gt;dx <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k1">float</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="k2">)</span> <span class="k3">/</span> RAND_MAX<span class="k2">)</span> <span class="k3">-</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">2</span> <span class="k3">*</span> <span class="n">4</span><span class="k2">;</span>
<span class="number">  91</span>        b-&gt;dy <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span><span class="k1">float</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="k2">)</span> <span class="k3">/</span> RAND_MAX<span class="k2">)</span> <span class="k3">-</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">2</span> <span class="k3">*</span> <span class="n">4</span><span class="k2">;</span>
<span class="number">  92</span>        b-&gt;type <span class="k3">=</span> i<span class="k2">;</span>
<span class="number">  93</span>    <span class="k2">}</span>
<span class="number">  94</span>
<span class="number">  95</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">  96</span>    <span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span>
<span class="number">  97</span>    <span class="k2">{</span>
<span class="number">  98</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>queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>
<span class="number"> 100</span>        <span class="k1">switch</span><span class="k2">(</span>event.type<span class="k2">)</span>
<span class="number"> 101</span>        <span class="k2">{</span>
<span class="number"> 102</span>            <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number"> 103</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> BT_N<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 104</span>                <span class="k2">{</span>
<span class="number"> 105</span>                    BOUNCER<span class="k3">*</span> b <span class="k3">=</span> <span class="k3">&amp;</span>obj<span class="k2">[</span>i<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 106</span>                    b-&gt;x <span class="k3">+</span><span class="k3">=</span> b-&gt;dx<span class="k2">;</span>
<span class="number"> 107</span>                    b-&gt;y <span class="k3">+</span><span class="k3">=</span> b-&gt;dy<span class="k2">;</span>
<span class="number"> 108</span>
<span class="number"> 109</span>                    limit_x <span class="k3">=</span> <span class="n">640</span><span class="k3">-</span>b-&gt;sx<span class="k2">;</span>  <span class="c">// Limit isn't 640x480.  limit x and y takes in consideration the lower square point of the shape.  </span>
<span class="number"> 110</span>                    limit_y <span class="k3">=</span> <span class="n">480</span><span class="k3">-</span>b-&gt;sy<span class="k2">;</span>
<span class="number"> 111</span>
<span class="number"> 112</span>                    <span class="k1">if</span><span class="k2">(</span>i<span class="k3">=</span><span class="k3">=</span><span class="n">5</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> b-&gt;x <span class="k3">&lt;</span> <span class="n">30</span><span class="k2">)</span>  <span class="c">//Created for Circle to prevent X and Y from going below the R30 </span>
<span class="number"> 113</span>                    <span class="k2">{</span>
<span class="number"> 114</span>                      b-&gt;dx <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 115</span>                    <span class="k2">}</span>
<span class="number"> 116</span>                    <span class="k1">if</span><span class="k2">(</span>i<span class="k3">=</span><span class="k3">=</span><span class="n">5</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> b-&gt;y <span class="k3">&lt;</span> <span class="n">30</span><span class="k2">)</span>  <span class="c">//Created for Circle to prevent X and Y from going below the R30</span>
<span class="number"> 117</span>                    <span class="k2">{</span>
<span class="number"> 118</span>                        b-&gt;dy <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 119</span>                    <span class="k2">}</span>
<span class="number"> 120</span>                    <span class="k1">if</span><span class="k2">(</span>i<span class="k3">=</span><span class="k3">=</span><span class="n">7</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> b-&gt;y <span class="k3">&lt;</span> <span class="n">20</span><span class="k2">)</span> <span class="c">//Created for Line 2 prevent Y from getting in less than 20 which is the second point location (-20)</span>
<span class="number"> 121</span>                    <span class="k2">{</span>
<span class="number"> 122</span>                        b-&gt;dy <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 123</span>                    <span class="k2">}</span>
<span class="number"> 124</span>                    <span class="k1">if</span><span class="k2">(</span>b-&gt;x <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 125</span>                    <span class="k2">{</span>
<span class="number"> 126</span>                      b-&gt;x  <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 127</span>                        b-&gt;dx <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 128</span>                    <span class="k2">}</span>
<span class="number"> 129</span>
<span class="number"> 130</span>                    <span class="k1">if</span><span class="k2">(</span>b-&gt;x <span class="k3">&gt;</span> limit_x<span class="k2">)</span>
<span class="number"> 131</span>                    <span class="k2">{</span>
<span class="number"> 132</span>                        b-&gt;dx <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 133</span>                    <span class="k2">}</span>
<span class="number"> 134</span>                    <span class="k1">if</span><span class="k2">(</span>b-&gt;y <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 135</span>                    <span class="k2">{</span>
<span class="number"> 136</span>                        b-&gt;y  <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 137</span>                        b-&gt;dy <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 138</span>                    <span class="k2">}</span>
<span class="number"> 139</span>                    <span class="k1">if</span><span class="k2">(</span>b-&gt;y <span class="k3">&gt;</span> limit_y<span class="k2">)</span>
<span class="number"> 140</span>                    <span class="k2">{</span>
<span class="number"> 141</span>
<span class="number"> 142</span>                        b-&gt;dy <span class="k3">*</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 143</span>                    <span class="k2">}</span>
<span class="number"> 144</span>                <span class="k2">}</span>
<span class="number"> 145</span>
<span class="number"> 146</span>                redraw <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_EVENT_KEY_DOWN:
<span class="number"> 150</span>            <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number"> 151</span>                done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 152</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 153</span>        <span class="k2">}</span>
<span class="number"> 154</span>
<span class="number"> 155</span>        <span class="k1">if</span><span class="k2">(</span>done<span class="k2">)</span>
<span class="number"> 156</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 157</span>
<span class="number"> 158</span>        <span class="k1">if</span><span class="k2">(</span>redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>queue<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 159</span>        <span class="k2">{</span>
<span class="number"> 160</span>            <a href="http://www.allegro.cc/manual/ALLEGRO_VERTEX"><span class="a">ALLEGRO_VERTEX</span></a> v<span class="k2">[</span><span class="n">4</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 161</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"> 162</span>
<span class="number"> 163</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> BT_N<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 164</span>            <span class="k2">{</span>
<span class="number"> 165</span>                BOUNCER<span class="k3">*</span> b <span class="k3">=</span> <span class="k3">&amp;</span>obj<span class="k2">[</span>i<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 166</span>                <span class="k1">switch</span><span class="k2">(</span>b-&gt;type<span class="k2">)</span>
<span class="number"> 167</span>                <span class="k2">{</span>
<span class="number"> 168</span>                    <span class="k1">case</span> BT_HELLO:
<span class="number"> 169</span>                        <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <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>, b-&gt;x, b-&gt;y, <span class="n">0</span>, <span class="s">"Hello world!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 170</span>                        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 171</span>
<span class="number"> 172</span>                    <span class="k1">case</span> BT_MYSHA:
<span class="number"> 173</span>                        <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>mysha, b-&gt;x, b-&gt;y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 174</span>                        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 175</span>
<span class="number"> 176</span>                    <span class="k1">case</span> BT_TRIANGLE:
<span class="number"> 177</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>b-&gt;x, b-&gt;y, b-&gt;x <span class="k3">+</span> <span class="n">50</span>, b-&gt;y <span class="k3">+</span> <span class="n">25</span>, b-&gt;x, b-&gt;y <span class="k3">+</span> <span class="n">50</span>, <a href="http://www.allegro.cc/manual/al_map_rgb_f"><span class="a">al_map_rgb_f</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">1</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 178</span>                        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 179</span>
<span class="number"> 180</span>                    <span class="k1">case</span> BT_RECTANGLE_1:
<span class="number"> 181</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>b-&gt;x, b-&gt;y, b-&gt;x <span class="k3">+</span> <span class="n">100</span>, b-&gt;y <span class="k3">+</span> <span class="n">80</span>, <a href="http://www.allegro.cc/manual/al_map_rgba_f"><span class="a">al_map_rgba_f</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>.<span class="n">5</span>, <span class="n">0</span>.<span class="n">5</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 182</span>                        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 183</span>
<span class="number"> 184</span>                    <span class="k1">case</span> BT_RECTANGLE_2:
<span class="number"> 185</span>                        v<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.x <span class="k3">=</span> b-&gt;x<span class="k2">;</span>       v<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.y <span class="k3">=</span> b-&gt;y<span class="k2">;</span>       v<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.z <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> v<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_map_rgb_f"><span class="a">al_map_rgb_f</span></a><span class="k2">(</span><span class="n">1</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 186</span>                        v<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.x <span class="k3">=</span> b-&gt;x <span class="k3">+</span> <span class="n">120</span><span class="k2">;</span> v<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.y <span class="k3">=</span> b-&gt;y<span class="k2">;</span>       v<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.z <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> v<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_map_rgb_f"><span class="a">al_map_rgb_f</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">1</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 187</span>                        v<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.x <span class="k3">=</span> b-&gt;x<span class="k2">;</span>       v<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.y <span class="k3">=</span> b-&gt;y <span class="k3">+</span> <span class="n">100</span><span class="k2">;</span> v<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.z <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> v<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_map_rgb_f"><span class="a">al_map_rgb_f</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 188</span>                        v<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.x <span class="k3">=</span> b-&gt;x <span class="k3">+</span> <span class="n">120</span><span class="k2">;</span> v<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.y <span class="k3">=</span> b-&gt;y <span class="k3">+</span> <span class="n">100</span><span class="k2">;</span> v<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.z <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> v<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>.color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_map_rgb_f"><span class="a">al_map_rgb_f</span></a><span class="k2">(</span><span class="n">1</span>, <span class="n">1</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 189</span>
<span class="number"> 190</span>                        <a href="http://www.allegro.cc/manual/al_draw_prim"><span class="a">al_draw_prim</span></a><span class="k2">(</span>v, NULL, NULL, <span class="n">0</span>, <span class="n">4</span>, ALLEGRO_PRIM_TRIANGLE_STRIP<span class="k2">)</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="number"> 193</span>                    <span class="k1">case</span> BT_CIRCLE:
<span class="number"> 194</span>                <a href="http://www.allegro.cc/manual/al_draw_circle"><span class="a">al_draw_circle</span></a><span class="k2">(</span>b-&gt;x, b-&gt;y, <span class="n">30</span>, <a href="http://www.allegro.cc/manual/al_map_rgb_f"><span class="a">al_map_rgb_f</span></a><span class="k2">(</span><span class="n">1</span>, <span class="n">0</span>, <span class="n">1</span><span class="k2">)</span>, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 195</span>                        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 196</span>
<span class="number"> 197</span>                    <span class="k1">case</span> BT_LINE1:
<span class="number"> 198</span>                        <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>b-&gt;x, b-&gt;y, b-&gt;x <span class="k3">+</span> <span class="n">20</span>, b-&gt;y <span class="k3">+</span> <span class="n">100</span>, <a href="http://www.allegro.cc/manual/al_map_rgb_f"><span class="a">al_map_rgb_f</span></a><span class="k2">(</span><span class="n">1</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 199</span>                        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 200</span>
<span class="number"> 201</span>                    <span class="k1">case</span> BT_LINE2:
<span class="number"> 202</span>                        <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span>b-&gt;x, b-&gt;y, b-&gt;x <span class="k3">+</span> <span class="n">70</span>, b-&gt;y <span class="k3">-</span> <span class="n">20</span>, <a href="http://www.allegro.cc/manual/al_map_rgb_f"><span class="a">al_map_rgb_f</span></a><span class="k2">(</span><span class="n">1</span>, <span class="n">1</span>, <span class="n">0</span><span class="k2">)</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 203</span>                        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 204</span>                <span class="k2">}</span>
<span class="number"> 205</span>            <span class="k2">}</span>
<span class="number"> 206</span>
<span class="number"> 207</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"> 208</span>            redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 209</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_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>mysha<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 213</span>    <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 214</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>disp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 215</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"> 216</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>queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 217</span>
<span class="number"> 218</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 219</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Thu, 26 Jan 2023 04:03:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Since you&#39;re using objects, you can try OOP.</p><p>Give Each object a GetLeft, SetLeft, GetRight, SetRight, GetTop, SetTop, GetBottom, and SetBottom function. Now you can easily constrain any object to the boundaries of the screen.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 30 Jan 2023 03:11:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sounds good.  I was thinking there was a more systemic way than using a line by line deviation. Thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Mon, 30 Jan 2023 21:07:30 +0000</pubDate>
	</item>
</rss>
