<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>About load bitmap</title>
		<link>http://www.allegro.cc/forums/view/617277</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 20 Feb 2018 09:50:09 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>&quot;新年快乐！各位！&quot; <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /> <br />（happy New Year! Ladies and gentlemen!）</p><p>I would like to ask a small problem today.For newcomers, though, it is very serious. <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" /> </p><p>ALLEGRO_BITMAP，Is he a &quot;const&quot;?（He pointed pointer）<br />allegro_load_bitmap，How his efficiency?How long it takes to load the image (eg 200 * 200 pixels)?</p><p>Or, if we have a lot of animated pictures.Have to use ALLEGRO_BITMAP to create a large number of pointers.<br />Rather than using load to quickly load.<br />-------------------------------------<br />ALLEGRO_BITMAP * running_anima[500];<br />This should be feasible?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (keprast)</author>
		<pubDate>Thu, 15 Feb 2018 09:17:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ALLEGRO_BITMAP<br /><a href="https://www.allegro.cc/manual/5/ALLEGRO_BITMAP">https://www.allegro.cc/manual/5/ALLEGRO_BITMAP</a></p><p><span class="source-code"><span class="k1">typedef</span> <span class="k1">struct</span> <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k2">;</span></span></p><p>It&#39;s a struct which contains information about the bitmap you loaded, things like width, height etc.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Roy)</author>
		<pubDate>Thu, 15 Feb 2018 09:42:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks. <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /> </p><p>eg：200*200 size，75pixel/cm<br />--------------------------<br />New proble：</p><p>I changed something, but he can not use it.<br />My method of using two timers is wrong.<br />why？</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>    <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number">  2</span>      <span class="k1">if</span> <span class="k2">(</span>event.timer.source <span class="k3">=</span><span class="k3">=</span> timer<span class="k2">)</span>
<span class="number">  3</span>      <span class="k2">{</span>
<span class="number">  4</span>        x <span class="k3">=</span> x <span class="k3">+</span> <span class="n">5</span> <span class="k3">*</span> xd<span class="k2">;</span>
<span class="number">  5</span>        y <span class="k3">=</span> y <span class="k3">+</span> <span class="n">5</span> <span class="k3">*</span> yd<span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>        <span class="k1">if</span> <span class="k2">(</span>xd <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> x <span class="k3">+</span> sw <span class="k3">&gt;</span><span class="k3">=</span> WIDTH<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  8</span>          x <span class="k3">=</span> WIDTH <span class="k3">-</span> sw<span class="k2">;</span>
<span class="number">  9</span>          xd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 10</span>          yd <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 11</span>        <span class="k2">}</span>
<span class="number"> 12</span>        <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xd <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> x <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 13</span>          x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 14</span>          xd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 15</span>          yd <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 16</span>        <span class="k2">}</span>
<span class="number"> 17</span>
<span class="number"> 18</span>        <span class="k1">if</span> <span class="k2">(</span>yd <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">+</span> sh <span class="k3">&gt;</span><span class="k3">=</span> HEIGHT<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 19</span>          y <span class="k3">=</span> HEIGHT <span class="k3">-</span> sh<span class="k2">;</span>
<span class="number"> 20</span>          yd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 21</span>          xd <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 22</span>        <span class="k2">}</span>
<span class="number"> 23</span>        <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>yd <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 24</span>          y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 25</span>          yd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 26</span>          xd <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 27</span>        <span class="k2">}</span>
<span class="number"> 28</span>
<span class="number"> 29</span>        <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</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">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>      <span class="k2">}</span>
<span class="number"> 32</span>      <span class="k1">if</span> <span class="k2">(</span>event.timer.source <span class="k3">=</span><span class="k3">=</span> animation<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 33</span>        <span class="k1">int</span> pt <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 34</span>        pt<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 35</span>        <span class="k1">if</span> <span class="k2">(</span>pt <span class="k3">=</span><span class="k3">=</span> <span class="n">17</span><span class="k2">)</span>
<span class="number"> 36</span>          pt <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 37</span>        <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>sprite<span class="k2">[</span>pt<span class="k2">]</span>, x, y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>      <span class="k2">}</span>
<span class="number"> 39</span>
<span class="number"> 40</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>
</div></div><p>

error:</p><p>abort() been xxxxxxxxx.<br />---------------------------------<br />Complete code：
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">   4</span>
<span class="number">   5</span><span class="k1">const</span> <span class="k1">int</span> WIDTH <span class="k3">=</span> <span class="n">1024</span><span class="k2">;</span>
<span class="number">   6</span><span class="k1">const</span> <span class="k1">int</span> HEIGHT <span class="k3">=</span> <span class="n">768</span><span class="k2">;</span>
<span class="number">   7</span><span class="k1">char</span> anima<span class="k2">[</span><span class="n">25</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">   8</span>
<span class="number">   9</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span> argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  10</span>  <span class="k1">int</span> running <span class="k3">=</span> <span class="n">1</span>, sw, sh, x, y, xd <span class="k3">=</span> <span class="n">1</span>, yd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  11</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> sprite<span class="k2">[</span><span class="n">16</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  12</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> <span class="n">16</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  13</span>  <span class="k2">{</span>
<span class="number">  14</span>    sprite<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  15</span>  <span class="k2">}</span>
<span class="number">  16</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span> display <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  17</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span> event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  18</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">  19</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span> timer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  20</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span> animation <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  21</span>
<span class="number">  22</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  23</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Allegro failed to initialize. Something is wrong with your system.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  25</span>  <span class="k2">}</span>
<span class="number">  26</span>
<span class="number">  27</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  28</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Allegro failed to install keyboard. Something is wrong with your system.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  30</span>  <span class="k2">}</span>
<span class="number">  31</span>
<span class="number">  32</span>  display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>WIDTH, HEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span>
<span class="number">  34</span>  <span class="k1">if</span> <span class="k2">(</span>display <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  35</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Allegro failed to create a display of size 1024x768. Something is wrong with your system.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  37</span>  <span class="k2">}</span>
<span class="number">  38</span>
<span class="number">  39</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="k3">/</span> <span class="n">60</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>  animation <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">0</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>  <a href="http://www.allegro.cc/manual/al_set_timer_speed"><span class="a">al_set_timer_speed</span></a><span class="k2">(</span>animation, <span class="n">0</span>.<span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>
<span class="number">  43</span>  <span class="k1">if</span> <span class="k2">(</span>timer <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  44</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Allegro failed to create a timer. Something is wrong with your system.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  46</span>  <span class="k2">}</span>
<span class="number">  47</span>
<span class="number">  48</span>  event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  49</span>
<span class="number">  50</span>  <span class="k1">if</span> <span class="k2">(</span>event_queue <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  51</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Allegro failed to create an event queue. Something is wrong with your system.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  53</span>  <span class="k2">}</span>
<span class="number">  54</span>
<span class="number">  55</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>animation<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>
<span class="number">  60</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  61</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Allegro failed to initialize the image addon. Something is wrong with your system.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  63</span>  <span class="k2">}</span>
<span class="number">  64</span>
<span class="number">  65</span>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">21</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  66</span>  <span class="k2">{</span>
<span class="number">  67</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>anima, <span class="s">"%.5i.png"</span>, i<span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>    sprite<span class="k2">[</span>i <span class="k3">-</span> <span class="n">5</span><span class="k2">]</span> <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>anima<span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>  <span class="c">/*  if (sprite[i] == NULL) {</span>
<span class="number">  70</span><span class="c">      fprintf(stderr, "Allegro failed to load %s. Image format may not be supported. Or something is wrong with your system.\n", sprite[i]);</span>
<span class="number">  71</span><span class="c">      return 1;</span>
<span class="number">  72</span><span class="c">    }*/</span>
<span class="number">  73</span>  <span class="k2">}</span>
<span class="number">  74</span>
<span class="number">  75</span>  sw <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_width"><span class="a">al_get_bitmap_width</span></a><span class="k2">(</span>sprite<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>  sh <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_width"><span class="a">al_get_bitmap_width</span></a><span class="k2">(</span>sprite<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>
<span class="number">  78</span>  x <span class="k3">=</span> <span class="k2">(</span>WIDTH <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>sw <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>  y <span class="k3">=</span> <span class="k2">(</span>HEIGHT <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>sh <span class="k3">/</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  80</span>
<span class="number">  81</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">  82</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>animation<span class="k2">)</span><span class="k2">;</span>
<span class="number">  83</span>
<span class="number">  84</span>  <span class="k1">while</span> <span class="k2">(</span>running<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  85</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>
<span class="number">  87</span>    <span class="k1">switch</span> <span class="k2">(</span>event.type<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  88</span>    <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number">  89</span>      running <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  90</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number">  91</span>    <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number">  92</span>      <span class="k1">if</span> <span class="k2">(</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  93</span>        running <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  94</span>      <span class="k2">}</span>
<span class="number">  95</span>
<span class="number">  96</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number">  97</span>    <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number">  98</span>      <span class="k1">if</span> <span class="k2">(</span>event.timer.source <span class="k3">=</span><span class="k3">=</span> timer<span class="k2">)</span>
<span class="number">  99</span>      <span class="k2">{</span>
<span class="number"> 100</span>        x <span class="k3">=</span> x <span class="k3">+</span> <span class="n">5</span> <span class="k3">*</span> xd<span class="k2">;</span>
<span class="number"> 101</span>        y <span class="k3">=</span> y <span class="k3">+</span> <span class="n">5</span> <span class="k3">*</span> yd<span class="k2">;</span>
<span class="number"> 102</span>
<span class="number"> 103</span>        <span class="k1">if</span> <span class="k2">(</span>xd <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> x <span class="k3">+</span> sw <span class="k3">&gt;</span><span class="k3">=</span> WIDTH<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 104</span>          x <span class="k3">=</span> WIDTH <span class="k3">-</span> sw<span class="k2">;</span>
<span class="number"> 105</span>          xd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 106</span>          yd <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 107</span>        <span class="k2">}</span>
<span class="number"> 108</span>        <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xd <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> x <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 109</span>          x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 110</span>          xd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 111</span>          yd <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 112</span>        <span class="k2">}</span>
<span class="number"> 113</span>
<span class="number"> 114</span>        <span class="k1">if</span> <span class="k2">(</span>yd <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">+</span> sh <span class="k3">&gt;</span><span class="k3">=</span> HEIGHT<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 115</span>          y <span class="k3">=</span> HEIGHT <span class="k3">-</span> sh<span class="k2">;</span>
<span class="number"> 116</span>          yd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 117</span>          xd <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 118</span>        <span class="k2">}</span>
<span class="number"> 119</span>        <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>yd <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 120</span>          y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 121</span>          yd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 122</span>          xd <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="number"> 125</span>        <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 126</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">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span>      <span class="k2">}</span>
<span class="number"> 128</span>      <span class="k1">if</span> <span class="k2">(</span>event.timer.source <span class="k3">=</span><span class="k3">=</span> animation<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 129</span>        <span class="k1">int</span> pt <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 130</span>        pt<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 131</span>        <span class="k1">if</span> <span class="k2">(</span>pt <span class="k3">=</span><span class="k3">=</span> <span class="n">17</span><span class="k2">)</span>
<span class="number"> 132</span>          pt <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 133</span>        <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>sprite<span class="k2">[</span>pt<span class="k2">]</span>, x, y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 134</span>      <span class="k2">}</span>
<span class="number"> 135</span>
<span class="number"> 136</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"> 137</span>
<span class="number"> 138</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 139</span>    <span class="k2">}</span>
<span class="number"> 140</span>  <span class="k2">}</span>
<span class="number"> 141</span>
<span class="number"> 142</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 143</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (keprast)</author>
		<pubDate>Thu, 15 Feb 2018 11:27:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>With contemporary graphics hardware, it is best to arrange all animation frames in a single bitmap. This is called an &quot;atlas bitmap&quot;. You can then either use al_draw_bitmap_region to draw the frames, or al_create_sub_bitmap to create individual bitmaps for the frames efficienly.</p><p>And a happy new year to you to!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (beoran)</author>
		<pubDate>Thu, 15 Feb 2018 20:17:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You are mixing drawing and logic. That only causes problems. Keep your drawing code separate from your logic. Have one redraw only, not two running on separate timers or you&#39;ll get out of sequence. You can still use two timers for your logic rates, but only one timer should control the redraw.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 16 Feb 2018 00:54:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>To add to beoran&#39;s advice.  You should also set up a timer so that every time the timer fires off, you update the animation (switch to the next image).  You will have to decide for yourself how often you want the time to fire off.</p><p>In my Deluxe Pacman 2 game I have one large PNG image for my Pacman character in a 5x5 grid of images that make up the animation.  When you are moving, the first 5 images are used and when you die, it goes through the rest.</p><p>My Allegro 5 code to load in my main pacman image, with this 5x5 grid of images is...</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>   <span class="c">// Note: SPRITE_SIZE = the size of each image in your sheet</span>
<span class="number">  2</span>   pacman.sheet <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">"Graphics/Pacman.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>pacman.sheet<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  4</span>      <span class="c">// didn't load, do error stuff here</span>
<span class="number">  5</span>   <span class="k2">}</span>
<span class="number">  6</span>   <a href="http://www.allegro.cc/manual/al_lock_bitmap"><span class="a">al_lock_bitmap</span></a><span class="k2">(</span>pacman.sheet, <a href="http://www.allegro.cc/manual/al_get_bitmap_format"><span class="a">al_get_bitmap_format</span></a><span class="k2">(</span>pacman.sheet<span class="k2">)</span>, ALLEGRO_LOCK_READONLY<span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>   <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> y <span class="k3">&lt;</span> <span class="n">5</span><span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span> <span class="c">// bitmaps are 5 rows</span>
<span class="number">  8</span>      <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> <span class="n">5</span><span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span> <span class="c">// by 5 columns</span>
<span class="number">  9</span>         pacman.bitmap<span class="k2">[</span><span class="n">5</span> <span class="k3">*</span> y <span class="k3">+</span> x<span class="k2">]</span> <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 10</span>         pacman.bitmap<span class="k2">[</span><span class="n">5</span> <span class="k3">*</span> y <span class="k3">+</span> x<span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_sub_bitmap"><span class="a">al_create_sub_bitmap</span></a><span class="k2">(</span>pacman.sheet, x <span class="k3">*</span> SPRITE_SIZE, y <span class="k3">*</span> SPRITE_SIZE, SPRITE_SIZE, SPRITE_SIZE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>         <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>pacman.bitmap<span class="k2">[</span><span class="n">5</span> <span class="k3">*</span> y <span class="k3">+</span> x<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 12</span>            <span class="c">// sub_bitmap failed, handle error here</span>
<span class="number"> 13</span>         <span class="k2">}</span>
<span class="number"> 14</span>      <span class="k2">}</span>
<span class="number"> 15</span>   <span class="k2">}</span>
</div></div><p>

I then later set up a timer for the pacman animation...</p><div class="source-code snippet"><div class="inner"><pre>   <span class="c">// Create a timer for updating pacman movement</span>
   <span class="c">// once InitPacman is done</span>
   pacman.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">0f</span> <span class="k3">/</span> pacman.ts<span class="k2">)</span><span class="k2">;</span>
   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>pacman.timer<span class="k2">)</span> <span class="k2">{</span>
      <span class="c">// Handle errors here</span>
   <span class="k2">}</span>
   <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>pacman.timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
   <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>pacman.timer<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

<span class="source-code">pacman.ts</span> holding the speed I wish to update this.</p><p>And in my game loop event checker, I check for the timer and update pacman&#39;s animation when it fires...</p><div class="source-code snippet"><div class="inner"><pre>   <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
      <span class="c">// PACMAN TIMER</span>
      <span class="k1">if</span><span class="k2">(</span>event.timer.source <span class="k3">=</span><span class="k3">=</span> pacman.timer<span class="k2">)</span> <span class="k2">{</span>
         <span class="c">// Do pacman stuff here</span>
      <span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Roy)</author>
		<pubDate>Fri, 16 Feb 2018 01:04:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>A large number of relatives I totally can not find time.</p><p>Thank you for your help, I think I understand. <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /> <br />But still, the problems are always one after another.  <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" /> <br />I do not quite understand what a substantive effect locking the image is, except for faster changes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (keprast)</author>
		<pubDate>Mon, 19 Feb 2018 21:59:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>From the Allegro wiki (<a href="https://www.allegro.cc/manual/5/al_lock_bitmap">https://www.allegro.cc/manual/5/al_lock_bitmap</a>) on using <span class="source-code"><a href="http://www.allegro.cc/manual/al_lock_bitmap"><span class="a">al_lock_bitmap</span></a><span class="k2">(</span><span class="k2">)</span></span> with <span class="source-code">ALLEGRO_LOCK_READONLY</span> as I do in my code.</p><p>“ALLEGRO_LOCK_READONLY - The locked region will not be written to. This can be faster if the bitmap is a video texture, as it can be discarded after the lock instead of uploaded back to the card.”</p><p>When you read/write a bitmap, Allegro has to update the bitmap after you are done, which takes time.  If you lock it as read only, that means you won&#39;t be altering it and Allegro can simply discard it once you&#39;re done without wasting time updating it.  Which makes sense.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Roy)</author>
		<pubDate>Tue, 20 Feb 2018 02:03:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think I understand, thank you for teaching.<br />When the image is locked, the image will not be drawn, but he is in memory when it is unlocked, it will draw on the screen.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (keprast)</author>
		<pubDate>Tue, 20 Feb 2018 09:50:09 +0000</pubDate>
	</item>
</rss>
