<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Is there a reason why this code will not display the bitmaps correctly?</title>
		<link>http://www.allegro.cc/forums/view/585938</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 16 Jun 2006 07:20:19 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I typed up this code and changed some stuff, but now the animation isn&#39;t showing. In this, I have a 1280 * 1024 bitmap that I basically use as the buffer(white_screen), and a bunch of animation code. For some reason, instead of the animation showing up after the whole screen turns white, I get a small white square in the upper right corner(about 100 * 100 large). Can anybody help me with this? Thanks!</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">void</span> bar_attack<span class="k2">(</span><span class="k1">int</span> buffer_x, <span class="k1">int</span> buffer_y<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">2</td><td>      <span class="c">//bar bitmap array</span></td></tr><tr><td class="number">3</td><td>      <span class="k1">char</span> bar_bmp_name<span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>      <span class="c">//fal bitmap array</span></td></tr><tr><td class="number">5</td><td>      <span class="k1">char</span> fal_bmp_name<span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>      <span class="c">//load a white square(size 1280 * 1024)</span></td></tr><tr><td class="number">7</td><td>      white_screen <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"whitescreen.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>      <span class="k1">int</span> i,j<span class="k2">;</span>    </td></tr><tr><td class="number">9</td><td>      <span class="c">//load all of the bmps(16)</span></td></tr><tr><td class="number">10</td><td>      <span class="k1">for</span><span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">16</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">11</td><td>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>bar_bmp_name,<span class="s">"bar20%d.bmp"</span>, i<span class="k2">)</span><span class="k2">;</span>        </td></tr><tr><td class="number">12</td><td>         bar<span class="k3">&lt;</span>i&gt;  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span>bar_bmp_name, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">14</td><td>      <span class="k1">for</span><span class="k2">(</span>j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> j<span class="k3">&lt;</span><span class="n">21</span><span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>fal_bmp_name,<span class="s">"f%d.bmp"</span>,j<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>         fal<span class="k2">[</span>j<span class="k2">]</span>  <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span>fal_bmp_name, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">18</td><td>      <span class="c">//clear the key buffer so it doesn't exit 1st time</span></td></tr><tr><td class="number">19</td><td>      <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>      <span class="c">//set coordinates</span></td></tr><tr><td class="number">21</td><td>      buffer_x <span class="k3">=</span> <span class="n">500</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>      buffer_y <span class="k3">=</span> <span class="n">450</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>      <span class="c">//as long as a key is not pressed(unless the key pressed is not ESC), go</span></td></tr><tr><td class="number">24</td><td>      <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span><span class="k2">(</span>buffer_x <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> buffer_y <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">25</td><td>          <span class="c">//animation</span></td></tr><tr><td class="number">26</td><td>          <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>          </td></tr><tr><td class="number">28</td><td>          <span class="k1">for</span><span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">7</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">29</td><td>             <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>              <span class="c">//make 'buffer' white and clear it</span></td></tr><tr><td class="number">31</td><td>             <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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></td></tr><tr><td class="number">32</td><td>             <span class="c">//draw the bar animation, and only draw the first fal frame</span></td></tr><tr><td class="number">33</td><td>             <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>white_screen, bar<span class="k3">&lt;</span>i&gt;, buffer_x, buffer_y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>             <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>white_screen, fal<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, buffer_x-20, buffer_y<span class="k3">+</span><span class="n">100</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>             <span class="c">//provide instructions</span></td></tr><tr><td class="number">36</td><td>             <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"Press Enter to Re-Center Animation,"</span>                                                          <span class="s">"Arrow Keys to Move Animation,"</span> </td></tr><tr><td class="number">37</td><td>             <span class="s">" Hold Escape to quit"</span>,<span class="n">300</span>,<span class="n">1000</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">38</td><td>             put buffer on <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a></td></tr><tr><td class="number">39</td><td>             <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1280</span>,<span class="n">1024</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>             <span class="c">//only let it move if it isn't outside screen limits</span></td></tr><tr><td class="number">41</td><td>            <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>buffer_x <span class="k3">&lt;</span> <span class="n">1271</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>buffer_y <span class="k3">&lt;</span> <span class="n">1015</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>buffer_x <span class="k3">&gt;</span> <span class="k3">-</span><span class="n">16</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>buffer_y <span class="k3">&gt;</span> <span class="k3">-</span><span class="n">1</span> <span class="k2">)</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">42</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span> <span class="c">// right </span></td></tr><tr><td class="number">43</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">44</td><td>                   buffer_x <span class="k3">+</span><span class="k3">=</span><span class="n">10</span><span class="k2">;</span> <span class="c">// Moving right so up the X coordinate by 1</span></td></tr><tr><td class="number">45</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">46</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span> <span class="c">// left </span></td></tr><tr><td class="number">47</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">48</td><td>                   buffer_x <span class="k3">-</span><span class="k3">=</span><span class="n">10</span><span class="k2">;</span> <span class="c">// Moving left, so lower the X coordinate by 1</span></td></tr><tr><td class="number">49</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">50</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span><span class="k2">)</span> <span class="c">// up </span></td></tr><tr><td class="number">51</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">52</td><td>                   buffer_y <span class="k3">-</span><span class="k3">=</span><span class="n">10</span><span class="k2">;</span> <span class="c">// Moving up, so lower the Y coordinate by 1</span></td></tr><tr><td class="number">53</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">54</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span><span class="k2">)</span> <span class="c">// down</span></td></tr><tr><td class="number">55</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">56</td><td>                   buffer_y <span class="k3">+</span><span class="k3">=</span><span class="n">10</span><span class="k2">;</span> <span class="c">// moving down, so up the Y coordinate by 1</span></td></tr><tr><td class="number">57</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">58</td><td>             <span class="k2">}</span></td></tr><tr><td class="number">59</td><td>          <span class="k1">else</span><span class="k2">{</span><span class="c">//if it is at limits, inform user</span></td></tr><tr><td class="number">60</td><td>             <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"Cannot go further!"</span>, <span class="n">500</span>,<span class="n">600</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">61</td><td>             <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1280</span>,<span class="n">1024</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>         </td></tr><tr><td class="number">63</td><td>          <span class="k2">}</span> <span class="c">//re-center picture at (500,450)</span></td></tr><tr><td class="number">64</td><td>          <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ENTER<span class="k2">]</span> <span class="k3">|</span><span class="k3">|</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ENTER_PAD<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">65</td><td>             buffer_x <span class="k3">=</span> <span class="n">500</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>             buffer_y <span class="k3">=</span> <span class="n">450</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>          <span class="k2">}</span><span class="c">//stop for 70ms between frames              </span></td></tr><tr><td class="number">68</td><td>          <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">70</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td>          <span class="k1">if</span><span class="k2">(</span>i<span class="k3">=</span><span class="k3">=</span><span class="n">4</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">70</td><td>          <span class="c">//if fal is about to get hit, play death animation function</span></td></tr><tr><td class="number">71</td><td>          fal_death<span class="k2">(</span>buffer_x, buffer_y, fal<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>          <span class="c">//clear 'buffer' for next animation</span></td></tr><tr><td class="number">73</td><td>          <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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></td></tr><tr><td class="number">74</td><td>          <span class="k2">}</span></td></tr><tr><td class="number">75</td><td>          <span class="k2">}</span></td></tr><tr><td class="number">76</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">77</td><td>      <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1500</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">78</td><td>      <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td>      <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>white_screen<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td><span class="k2">}</span><span class="c">//end of bar_attack()</span></td></tr><tr><td class="number">81</td><td>&#160;</td></tr><tr><td class="number">82</td><td><span class="k1">void</span> fal_death<span class="k2">(</span><span class="k1">int</span> buffer_x, <span class="k1">int</span> buffer_y, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>fal<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">83</td><td>&#160;</td></tr><tr><td class="number">84</td><td>         <span class="k1">int</span> f<span class="k2">;</span></td></tr><tr><td class="number">85</td><td>         </td></tr><tr><td class="number">86</td><td>         <span class="k1">for</span><span class="k2">(</span>f<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> f <span class="k3">&lt;</span> <span class="n">20</span><span class="k2">;</span> f<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">87</td><td>              <span class="c">//only draw bar animation while to first 6 frames of death are going</span></td></tr><tr><td class="number">88</td><td>             <span class="k1">if</span><span class="k2">(</span>f<span class="k3">&lt;</span><span class="n">6</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">89</td><td>                </td></tr><tr><td class="number">90</td><td>                <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>white_screen, bar<span class="k2">[</span>f<span class="k3">+</span><span class="n">8</span><span class="k2">]</span>, buffer_x, buffer_y<span class="k2">)</span><span class="k2">;</span>   </td></tr><tr><td class="number">91</td><td>             <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span></td></tr><tr><td class="number">92</td><td>                <span class="c">//after first 6 frames, keep drawing this one frame</span></td></tr><tr><td class="number">93</td><td>                <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>white_screen, bar<span class="k2">[</span><span class="n">15</span><span class="k2">]</span>, buffer_x, buffer_y<span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">94</td><td>             <span class="k2">}</span><span class="c">//draw fal anim</span></td></tr><tr><td class="number">95</td><td>             <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>white_screen, fal<span class="k2">[</span>f<span class="k2">]</span>, buffer_x-15, buffer_y<span class="k3">+</span><span class="n">95</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">96</td><td>              </td></tr><tr><td class="number">97</td><td>                         <span class="c">//same as bar anim func</span></td></tr><tr><td class="number">98</td><td>             <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"Press Enter to Re-Center Animation, Arrow Keys to Move Animation,"</span> </td></tr><tr><td class="number">99</td><td>             <span class="s">" Hold Escape to Quit"</span>,<span class="n">300</span>,<span class="n">1000</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>             <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1280</span>,<span class="n">1024</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>             <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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></td></tr><tr><td class="number">102</td><td>             <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>buffer_x <span class="k3">&lt;</span> <span class="n">1271</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>buffer_y <span class="k3">&lt;</span> <span class="n">1015</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>buffer_x <span class="k3">&gt;</span> <span class="k3">-</span><span class="n">16</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>buffer_y <span class="k3">&gt;</span> <span class="k3">-</span><span class="n">1</span> <span class="k2">)</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">103</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span> <span class="c">// right </span></td></tr><tr><td class="number">104</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">105</td><td>                   buffer_x <span class="k3">+</span><span class="k3">=</span><span class="n">10</span><span class="k2">;</span><span class="c">// Moving right so up the X coordinate by 10</span></td></tr><tr><td class="number">106</td><td>                    </td></tr><tr><td class="number">107</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">108</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span> <span class="c">// left </span></td></tr><tr><td class="number">109</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">110</td><td>                   buffer_x <span class="k3">-</span><span class="k3">=</span><span class="n">10</span><span class="k2">;</span> <span class="c">// Moving left, so lower the X coordinate by 10</span></td></tr><tr><td class="number">111</td><td>                                           </td></tr><tr><td class="number">112</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">113</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span><span class="k2">)</span> <span class="c">// up </span></td></tr><tr><td class="number">114</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">115</td><td>                   buffer_y <span class="k3">-</span><span class="k3">=</span><span class="n">10</span><span class="k2">;</span> <span class="c">// Moving up, so lower the Y coordinate by 10</span></td></tr><tr><td class="number">116</td><td>                     </td></tr><tr><td class="number">117</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">118</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span><span class="k2">)</span> <span class="c">// down</span></td></tr><tr><td class="number">119</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">120</td><td>                   buffer_y <span class="k3">+</span><span class="k3">=</span><span class="n">10</span><span class="k2">;</span> <span class="c">// moving down, so up the Y coordinate by 10</span></td></tr><tr><td class="number">121</td><td>                     </td></tr><tr><td class="number">122</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">123</td><td>             <span class="k2">}</span></td></tr><tr><td class="number">124</td><td>          <span class="k1">else</span><span class="k2">{</span></td></tr><tr><td class="number">125</td><td>             <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"Cannot go further!"</span>, <span class="n">500</span>,<span class="n">600</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">126</td><td>             <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">1280</span>,<span class="n">1024</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">127</td><td>         </td></tr><tr><td class="number">128</td><td>          <span class="k2">}</span> </td></tr><tr><td class="number">129</td><td>          </td></tr><tr><td class="number">130</td><td>          <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ENTER<span class="k2">]</span> <span class="k3">|</span><span class="k3">|</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ENTER_PAD<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">131</td><td>             buffer_x <span class="k3">=</span> <span class="n">500</span><span class="k2">;</span></td></tr><tr><td class="number">132</td><td>             buffer_y <span class="k3">=</span> <span class="n">450</span><span class="k2">;</span></td></tr><tr><td class="number">133</td><td>          <span class="k2">}</span> <span class="c">//rest for 80 ms between frames  </span></td></tr><tr><td class="number">134</td><td>          <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">80</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">135</td><td>          <span class="k2">}</span>  </td></tr><tr><td class="number">136</td><td>              </td></tr><tr><td class="number">137</td><td>          <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1500</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">138</td><td>          <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>white_screen, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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>     </td></tr><tr><td class="number">139</td><td><span class="k2">}</span><span class="c">//end of fal_death()</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Kindy)</author>
		<pubDate>Thu, 15 Jun 2006 22:46:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, there most certainly is a reason. And it&#39;s probably because you&#39;re doing it all wrong! You shouldn&#39;t mix your drawing code with your logic code like that. Very slow. I don&#39;t think I can tell you how to fix your code, because I honestly don&#39;t understand what it&#39;s suppose to accomplish. However, I can show you what your <i>should</i> look like.<br />Split it up like this.</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    Init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// All your initialization code goes here (allegro_init(), install_keyboard(), set_gfx_mode(), etc.)</span></td></tr><tr><td class="number">4</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>  <span class="c">// This could also go in your init function, I'm just putting it here to show you that I'm doing it.</span></td></tr><tr><td class="number">5</td><td>    <span class="c">// Draw everything to your buffer, then at the end blit the whole thing to the</span></td></tr><tr><td class="number">6</td><td>    <span class="c">// screen. Drawing to the screen is slow, so it's best to do it all at once.</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">int</span> y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>        <span class="c">// This is where your logic should be. Absolutely no drawing! That comes after</span></td></tr><tr><td class="number">12</td><td>        <span class="c">// You should implement some timer to make sure your logic doesn't go to fast.</span></td></tr><tr><td class="number">13</td><td>        <span class="c">// Do NOT use rest for this! It might seem like a good quick solution, but in</span></td></tr><tr><td class="number">14</td><td>        <span class="c">// the end it just complicates things. Update everthing here (animations,</span></td></tr><tr><td class="number">15</td><td>        <span class="c">// ai, physics). Store all positions in variables so they can later be   </span></td></tr><tr><td class="number">16</td><td>        <span class="c">// drawn to the screen.</span></td></tr><tr><td class="number">17</td><td>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>            done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">20</td><td>        <span class="k3">+</span><span class="k3">+</span> x<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>        <span class="k3">+</span><span class="k3">+</span> y<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>        <span class="k1">if</span> <span class="k2">(</span>x <span class="k3">&gt;</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">23</td><td>            x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">25</td><td>        <span class="k1">if</span> <span class="k2">(</span>y <span class="k3">&gt;</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">26</td><td>            y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td>        <span class="c">// Here comes your drawing code.</span></td></tr><tr><td class="number">31</td><td>        <span class="c">// First, make sure the buffer is clean</span></td></tr><tr><td class="number">32</td><td>        <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>        <span class="c">// Draw a rectangle at our coordinates</span></td></tr><tr><td class="number">34</td><td>        <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span>buffer, x, y, x <span class="k3">+</span> <span class="n">100</span>, y <span class="k3">+</span> <span class="n">100</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">150</span>, <span class="n">150</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>        <span class="c">// ... draw whatever else you want to. Here you should draw the map, your</span></td></tr><tr><td class="number">36</td><td>        <span class="c">// sprites, the GUI. Everything.</span></td></tr><tr><td class="number">37</td><td>        <span class="c">// Now blit it to the screen</span></td></tr><tr><td class="number">38</td><td>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">40</td><td>    <span class="c">// Clean up your mess. I noticed in your code you forgot to destroy your </span></td></tr><tr><td class="number">41</td><td>    <span class="c">// bitmaps. This is not good. It will fill up your memory with junk that will</span></td></tr><tr><td class="number">42</td><td>    <span class="c">// stay untill you restart your computer. Whevenver you dynamically allocate</span></td></tr><tr><td class="number">43</td><td>    <span class="c">// memory, it is up to you to also destroy it. If you do not know this, put</span></td></tr><tr><td class="number">44</td><td>    <span class="c">// games on hold and read a tutorial on C.</span></td></tr><tr><td class="number">45</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td><span class="k2">}</span> <a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>

That&#39;s basically what you game should consist of. By no means does it have to look <i>exactly</i> like that (I&#39;m sure if you are using threads it will be significantly different), but that should give you a general idea of what is right. Once you structure your code better, finding bugs will be a lot easier. Then, when you come here asking for help, people might actually be able to help you.</p><p>I also suggest you read the Allegro manual. It might help you understand timing and drawing a little better. Reading the source to a simple game might also help. Check out the open source games in the Depot.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonny Cook)</author>
		<pubDate>Thu, 15 Jun 2006 23:59:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Jonny Cook said:</div><div class="quote"><p>
...I honestly don&#39;t understand what it&#39;s suppose to accomplish
</p></div></div><p>

How can you not?? It&#39;s only simple C with some allegro drawing elements! It was working fine but then I changed some stuff and now it&#39;s not. First I load the bmps. Then I draw them to the buffer, blitting the buffer to the screen each time I do that, and clearing the buffer in between(achieving the &#39;motion&#39;!). Then, once the Fallen monster gets &#39;hit&#39; (frame 6), the Fallen starts to die. If you press the arrow keys, the animation moves up, down, left, or right. When you press enter, it re-centers. If you hold ESC, it quits. Any other questions?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Kindy)</author>
		<pubDate>Fri, 16 Jun 2006 00:17:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, I&#39;m sorry if I missed all the signs. To me, it looks like a big mess of rest, blits, clears, and perhaps a few comments that only point out the obvious. It&#39;s not well formed code. Yes, I admit that I didn&#39;t spend a considerable amount of time decrypting it, but to me it&#39;s quite obvious why it won&#39;t run properly. And thank you for ignoring the big block of text which points out some of the major flaws of your code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonny Cook)</author>
		<pubDate>Fri, 16 Jun 2006 00:33:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I admit that I forgot the destroy_bitmaps()... I should&#39;ve caught that., but there&#39;s no reason to pick apart my code when you imply that you don&#39;t even know what it means. I just want someone to analyze this code for me to see if they maybe notice something wrong that I missed. In your case, you did spot the destroy_bitmaps, so I thank you. I will improve my code, but I&#39;ve been doing so much trying to get this done for one of my classes, that I haven&#39;t been able to refine it. I understand why not to use rest. It is a quick solution, albeit not a good one. I just do not have the time right now to learn timers.</p><p>EDIT: I did have a bunch of destroy_bitmap()s in my &#39;destroybitmap()&#39; function. So I had destroyed almost everything... but not the fal sprite array.
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">void</span> destroybitmap<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">2</td><td>     <span class="k1">int</span> x<span class="k2">;</span></td></tr><tr><td class="number">3</td><td>   </td></tr><tr><td class="number">4</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>white_screen<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>     <span class="k1">for</span><span class="k2">(</span>x<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> <span class="n">9</span><span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">6</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bar<span class="k2">[</span>x<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">8</td><td>     <span class="k1">for</span><span class="k2">(</span>x<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>x <span class="k3">&lt;</span> <span class="n">16</span><span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>fal<span class="k2">[</span>x<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">10</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">11</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>diablosprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>titlesprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>title2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>menu<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>heading<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>     <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>menu2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td><span class="k2">}</span><span class="c">//end of destroybitmap()</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Kindy)</author>
		<pubDate>Fri, 16 Jun 2006 01:23:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>One quick note:</p><div class="source-code snippet"><div class="inner"><pre>    <span class="k1">char</span> fal_bmp_name<span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k2">;</span>
    <span class="c">/*  ...  */</span>
    <span class="k1">for</span><span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">16</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
        <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>bar_bmp_name,<span class="s">"bar20%d.bmp"</span>, i<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

&quot;bar2011.bmp&quot; has 11 characters (plus &#39;\0&#39;), so your arrays should be 12 at least, not 10.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Fri, 16 Jun 2006 01:26:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh, thanks Rey! That was one of the things I changed... I only had 9 frames at first, so it was alright.Then I changed it to 16 so i would&#39;ve <i>needed</i> 11</p><p>EDIT: Could be not loading because the images are set to 16 million. Hold on , let me check...</p><p>EDIT[2]: Yes! The bar images were set to 16 million color mode. But, sadly: NO! It still doesn&#39;t work... and I changed:  white_screen = create_bitmap(1280,1024);<br />but that didn&#39;t help either...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Kindy)</author>
		<pubDate>Fri, 16 Jun 2006 01:32:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I was not aware that you are on a time schedule, but nonetheless. What I was getting at in my earlier posts is that it would take less time to do it right, even if initially there is a little bit of extra learning to do. Setting up a timer takes about 8 lines of code and it can be summed up in 30 seconds. Based on what information you gave us about your problem, it&#39;s hard to tell what&#39;s wrong. The quality of your code makes it even harder. </p><p>One of the many reason people separate their logic code from their drawing code is it makes it easier to debug. Such a simple program, if coded correctly, would take very little time to both create and debug. </p><p>Also, checking the return values from the create and load bitmaps functions is always a good idea. </p><p>And perhaps you could tell us the last major change you made to your code before it stopped working. </p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">volatile</span> <span class="k1">int</span> logic_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td><span class="k1">void</span> inc_logic_counter<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    <span class="k3">+</span><span class="k3">+</span> logic_counter<span class="k2">;</span></td></tr><tr><td class="number">4</td><td><span class="k2">}</span> <a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>inc_logic_counter<span class="k2">)</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">7</td><td>    <span class="c">// Normal setup functions</span></td></tr><tr><td class="number">8</td><td>    <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>logic_counter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>inc_logic_counter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    <a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a><span class="k2">(</span>inc_logic_counter, BPS_TO_TIMER<span class="k2">(</span><span class="n">60</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td>    <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>        <span class="k1">while</span> <span class="k2">(</span>logic_counter <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>            <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">17</td><td>                done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>            <span class="c">// ... Do logic</span></td></tr><tr><td class="number">20</td><td>            <span class="k3">-</span><span class="k3">-</span> logic_counter<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">22</td><td>        <span class="c">// Drawing</span></td></tr><tr><td class="number">23</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">24</td><td>     <span class="c">// Cleanup</span></td></tr><tr><td class="number">25</td><td>     <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td><span class="k2">}</span> <a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>

That&#39;s the standard Allegro timer implementation.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonny Cook)</author>
		<pubDate>Fri, 16 Jun 2006 01:52:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">while</span> <span class="k2">(</span>logic_counter <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
            <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
                done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
            <span class="k2">}</span>
            <span class="c">// ... Do logic</span>
            <span class="k3">-</span><span class="k3">-</span> logic_counter<span class="k2">;</span>
        <span class="k2">}</span>
</pre></div></div><p>
</p></div></div><p>

I don&#39;t understand this here... so, you&#39;re in a loop.if user presses escape, it will exit after ALL the logic is done(when logic_counter &lt;= 0). What purpose does the logic_counter serve, outside of that? You have the variable also continually going up( at least, that&#39;s what I assume)... so the only thing I can make out would be that.. it would be going up at a constant rate and once enough things were finished in the loop, the --logic_counter would overcome(loop finishing cycles more quickly) the ++ and you would quit the logic loop, possibly even before you were intending. Are my conclusions correct(most likely not)? Could you explain why they are false? and what your code really means.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Kindy)</author>
		<pubDate>Fri, 16 Jun 2006 02:09:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Remember that your timer is executed every 1/60 seconds (in example). So, the logic_counter variable will be incremented around 60 times per second. Your logic can be extremely fast (say, it can be executed in 1/100 seconds), but since the counter increases only 1/60, your logic will be executed 60 times per second (and thus, you will draw on the screen only 60 times per second).</p><p>If your logic is too heavy (say, it executes in 1/30 seconds), your timer variable will begin increasing. If this happens, you can stop the execution of the program.</p><p>My implementation is a bit different:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span> quit<span class="k2">)</span> <span class="k2">{</span>
    <span class="k1">while</span> <span class="k2">(</span>logic_counter <span class="k3">&lt;</span> timer_counter<span class="k2">)</span> <span class="k2">{</span>
        do_logic<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
        logic_counter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
    <span class="k2">}</span>

    do_input<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    do_output<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

where <i>timer_counter</i> is the variable that is being incremented by the timer, and <i>do_input</i> is the function that sets the quit flag if necessary.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Fri, 16 Jun 2006 02:15:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The code sets a function (inc_logic_counter) to be called 60 times a second (BPS_TO_TIMER(60)). Each time the function is called, a counter gets incremented. The counter gets incremented 60 times a second. The logic only runs if the counter is greater than 0 (if (logic_counter &gt; 0) {). Since the counter only gets incremented every 60th of a second, the logic will run no more than 60 times a second. Using this method, on slower computers the graphics might get a little laggy, but you will never miss a logic frame, and it will never go too fast.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonny Cook)</author>
		<pubDate>Fri, 16 Jun 2006 02:17:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="cuss"><span>GODDAMN</span></span>!!!! I found it!!!... it was, of course, not in the code I gave you. I didn&#39;t change my array to size 16 from 9.. so ya... now it works. thanks. keep explaining timers please!</p><p>EDIT: BTW I am also very inexperienced in Allegro.:-[
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Kindy)</author>
		<pubDate>Fri, 16 Jun 2006 06:55:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>We all have been/still are, don&#39;t worry <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Fri, 16 Jun 2006 07:14:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Could you also explain how to create basically a map that you can scroll through? <br />I don&#39;t know whether you would make sections and display them at certain times, or hide parts of it and just move the bitmap over or what, and I can&#39;t find a good tutorial to explain it. )I like the 2nd option <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />)</p><p>EDIT: BUT TIMERS ARE MORE IMPORTANT!!!</p><p>EDIT: I&#39;m gonna make a new thread called &#39;I don&#39;t get timers...!&#39;  post there, ok?.<br />I won&#39;t be on until tomorrow. see ya.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Kindy)</author>
		<pubDate>Fri, 16 Jun 2006 07:20:19 +0000</pubDate>
	</item>
</rss>
