<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Bug (or not) in Allegro</title>
		<link>http://www.allegro.cc/forums/view/614804</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 17 Nov 2014 03:20:27 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello, I&#39;m creating a game with Allegro 5, Visual Studio 8 and Windows XP.<br />Well, when I run the game, the tiles that are on the screen suffer a deformation, this effect occurs around the display of the Allegro, and only when I move the tiles, when they stopped the deformation disappears.<br />The effect starts low, rises and deforming the tiles, it happens every 4 seconds or so. Tried to replace the images by the most primitive effect is the same.</p><p>A photo of the problem:<br /><span class="remote-thumbnail"><span class="json">{"name":"2w3nfuw.jpg","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/9\/9\/999e772caec7c6f0b2be4a54e280c06a.jpg","w":885,"h":471,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/9\/9\/999e772caec7c6f0b2be4a54e280c06a"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/9/9/999e772caec7c6f0b2be4a54e280c06a-240.jpg" alt="2w3nfuw.jpg" width="240" height="127" /></span></p><p>A video of the &quot;bug&quot;:<br /><a href="http://youtu.be/Nf-Qa7VaWs0">http://youtu.be/Nf-Qa7VaWs0</a></p><p>Below the drawing code of tiles:</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">//class tile</span>
<span class="number"> 2</span>
<span class="number"> 3</span><span class="k1">void</span> tile::draw<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 4</span>  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>image,get_x<span class="k2">(</span><span class="k2">)</span>,get_y<span class="k2">(</span><span class="k2">)</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 5</span><span class="k2">}</span>
</div></div><p>

In tile class has a std :: vector&lt;tile&gt; contains that all existing tiles on the map, and the method draw () the map I draw them like this:</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">//class map</span>
<span class="number">  2</span><span class="c">//all_tiles is std::vector&lt;tile&gt; static that contains all of the map tiles</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">void</span> map::draw<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>  
<span class="number">  5</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>WHITE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</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="k2">(</span><span class="k1">int</span><span class="k2">)</span> tile::all_tiles.size<span class="k2">(</span><span class="k2">)</span> <span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  7</span>    tile::all_tiles.at<span class="k2">(</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span><span class="k2">}</span>
</div></div><p>

Do not bother to swap the buffers because the documentation says that the Allegro automatically identifies what the current backbuffer. I think be no problem with my computer &#39;cause I have done some games in Java (which is much slower than c ++) and ran perfectly. Does the problem is because Windows XP? Or am I doing something wrong?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kuarcke)</author>
		<pubDate>Mon, 17 Nov 2014 00:01:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Show more relevant code. Where are you flipping the display? Are you using transforms?</p><p>Also, have you verified vsync is running?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 17 Nov 2014 00:14:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have not posted much of anything because the code is very simple.<br />Swapping buffers to the end of the method <span class="source-code">repaint<span class="k2">(</span><span class="k2">)</span></span> the main class:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> repaint<span class="k2">(</span><span class="k2">)</span><span class="k2">{</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>WHITE<span class="k2">)</span><span class="k2">;</span>
  mapa.draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</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="k2">}</span>
</pre></div></div><p>

Information that may be important: each object has a pointer to tile corresponds to their respective image. Carry the tileset atlas, he divided the tiles, and move the pointer of each image to its corresponding tile.<br />That alone, without effects, transformation, rotations, etc ..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kuarcke)</author>
		<pubDate>Mon, 17 Nov 2014 00:37:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Show ALL the code.</p><p>This is very unlikely to be a bug with Allegro, or it would be more common.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Mon, 17 Nov 2014 00:40:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Where are you setting up the display?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 17 Nov 2014 00:41:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Main class:</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;allegro5/allegro_primitives.h&gt;</span>
<span class="number">   4</span><span class="p">#include "map.h"</span>
<span class="number">   5</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;windows.h&gt;</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="p">#define WIDTH 1280</span>
<span class="number">   9</span><span class="p">#define HEIGHT 800</span>
<span class="number">  10</span><span class="p">#define GAME_NAME "Game Allegro"</span>
<span class="number">  11</span><span class="p">#define FPS 60.0</span>
<span class="number">  12</span><span class="p">#define LPS 120.0</span>
<span class="number">  13</span>
<span class="number">  14</span><span class="k1">int</span> load<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  15</span><span class="k1">void</span> main_loop<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  16</span><span class="k1">void</span> events<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span><span class="k1">void</span> update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span><span class="k1">void</span> repaint<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span><span class="k1">void</span> quit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span>
<span class="number">  21</span>map mapa<span class="k2">;</span>
<span class="number">  22</span>
<span class="number">  23</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">  24</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>eventqueue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  25</span><a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer_fps <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  26</span><a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer_lps <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  27</span>
<span class="number">  28</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> evento<span class="k2">;</span>
<span class="number">  29</span>
<span class="number">  30</span><span class="k1">bool</span> play <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  31</span><span class="k1">bool</span> keys<span class="k2">[</span><span class="n">226</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  32</span>
<span class="number">  33</span><span class="k1">bool</span> need_redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  34</span><span class="k1">bool</span> need_update <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  35</span>
<span class="number">  36</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>argv<span class="k2">)</span><span class="k2">{</span>
<span class="number">  37</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>load<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  38</span>    quit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nPressione uma tecla para sair."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_384.html" target="_blank">getchar</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  42</span>  <span class="k2">}</span>
<span class="number">  43</span>  main_loop<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span><span class="k2">}</span>
<span class="number">  45</span>
<span class="number">  46</span><span class="k1">int</span> load<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  47</span>  
<span class="number">  48</span>  <span class="c">//ALLEGRO E ADDONS</span>
<span class="number">  49</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  50</span>  <span class="k2">{</span>
<span class="number">  51</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Problema ao iniciar Allegro."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  53</span>  <span class="k2">}</span>
<span class="number">  54</span>
<span class="number">  55</span>
<span class="number">  56</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  57</span>  <span class="k2">{</span>
<span class="number">  58</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Problema ao iniciar Addon de imagem do Allegro."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  60</span>  <span class="k2">}</span>
<span class="number">  61</span>
<span class="number">  62</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  63</span>  <span class="k2">{</span>
<span class="number">  64</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Problema ao iniciar Addon de primitivas do Allegro."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  66</span>  <span class="k2">}</span>
<span class="number">  67</span>  
<span class="number">  68</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="number">  69</span>  <span class="k2">{</span>
<span class="number">  70</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Problema ao instalar teclado."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  72</span>  <span class="k2">}</span>
<span class="number">  73</span>
<span class="number">  74</span>  <span class="c">//FULL SCREEN  </span>
<span class="number">  75</span>  <span class="c">//al_set_new_display_flags(ALLEGRO_FULLSCREEN);</span>
<span class="number">  76</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">  77</span>
<span class="number">  78</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span>
<span class="number">  79</span>  <span class="k2">{</span>
<span class="number">  80</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Problema ao criar janela do Allegro."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  82</span>  <span class="k2">}</span>
<span class="number">  83</span>  
<span class="number">  84</span>  
<span class="number">  85</span>  timer_fps <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> FPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>  timer_lps <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> LPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, GAME_NAME<span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>  
<span class="number">  89</span>  eventqueue <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">  90</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>eventqueue, <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_fps<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>eventqueue, <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_lps<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>eventqueue, <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">  93</span>  
<span class="number">  94</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer_fps<span class="k2">)</span><span class="k2">;</span>
<span class="number">  95</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer_lps<span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>  map <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">"mapa.bmp"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>  <span class="c">//---</span>
<span class="number">  98</span>
<span class="number">  99</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>mapa.load<span class="k2">(</span><span class="s">"mapa.bmp"</span>,WIDTH, HEIGHT<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 100</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 101</span>
<span class="number"> 102</span>  <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 103</span><span class="k2">}</span>
<span class="number"> 104</span>
<span class="number"> 105</span><span class="k1">void</span> main_loop<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 106</span>  <span class="k1">while</span><span class="k2">(</span>play<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 107</span>    <span class="k1">if</span><span class="k2">(</span>need_redraw<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 108</span>      repaint<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span>      need_redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 110</span>    <span class="k2">}</span>
<span class="number"> 111</span>    
<span class="number"> 112</span>    <span class="k1">if</span><span class="k2">(</span>need_update<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 113</span>      update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>      need_update <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 115</span>    <span class="k2">}</span>
<span class="number"> 116</span>    events<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 117</span>  <span class="k2">}</span>
<span class="number"> 118</span>    
<span class="number"> 119</span><span class="k2">}</span>
<span class="number"> 120</span>
<span class="number"> 121</span><span class="k1">void</span> events<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 122</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>eventqueue, <span class="k3">&amp;</span>evento<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>    <span class="k1">if</span><span class="k2">(</span>evento.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 124</span>      <span class="k1">if</span><span class="k2">(</span>evento.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span>
<span class="number"> 125</span>        quit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 126</span>      <span class="k1">if</span><span class="k2">(</span>evento.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_UP<span class="k2">)</span>
<span class="number"> 127</span>        keys<span class="k2">[</span>ALLEGRO_KEY_UP<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 128</span>      <span class="k1">if</span><span class="k2">(</span>evento.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_DOWN<span class="k2">)</span>
<span class="number"> 129</span>        keys<span class="k2">[</span>ALLEGRO_KEY_DOWN<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 130</span>      <span class="k1">if</span><span class="k2">(</span>evento.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_LEFT<span class="k2">)</span>
<span class="number"> 131</span>        keys<span class="k2">[</span>ALLEGRO_KEY_LEFT<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 132</span>      <span class="k1">if</span><span class="k2">(</span>evento.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_RIGHT<span class="k2">)</span>
<span class="number"> 133</span>        keys<span class="k2">[</span>ALLEGRO_KEY_RIGHT<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 134</span>
<span class="number"> 135</span>    <span class="k2">}</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>evento.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_UP<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 136</span>      <span class="k1">if</span><span class="k2">(</span>evento.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_UP<span class="k2">)</span>
<span class="number"> 137</span>        keys<span class="k2">[</span>ALLEGRO_KEY_UP<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 138</span>      <span class="k1">if</span><span class="k2">(</span>evento.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_DOWN<span class="k2">)</span>
<span class="number"> 139</span>        keys<span class="k2">[</span>ALLEGRO_KEY_DOWN<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 140</span>      <span class="k1">if</span><span class="k2">(</span>evento.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_LEFT<span class="k2">)</span>
<span class="number"> 141</span>        keys<span class="k2">[</span>ALLEGRO_KEY_LEFT<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 142</span>      <span class="k1">if</span><span class="k2">(</span>evento.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_RIGHT<span class="k2">)</span>
<span class="number"> 143</span>        keys<span class="k2">[</span>ALLEGRO_KEY_RIGHT<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 144</span>      
<span class="number"> 145</span>    <span class="k2">}</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>evento.timer.source <span class="k3">=</span><span class="k3">=</span> timer_fps<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 146</span>      need_redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 147</span>    <span class="k2">}</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>evento.timer.source <span class="k3">=</span><span class="k3">=</span> timer_lps<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 148</span>      need_update<span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 149</span>    <span class="k2">}</span>
<span class="number"> 150</span><span class="k2">}</span>
<span class="number"> 151</span>
<span class="number"> 152</span><span class="k1">void</span> update<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 153</span>  mapa.update<span class="k2">(</span>keys<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 154</span><span class="k2">}</span>
<span class="number"> 155</span>
<span class="number"> 156</span><span class="k1">void</span> repaint<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 157</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>WHITE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>  mapa.draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</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"> 160</span><span class="k2">}</span>
<span class="number"> 161</span>
<span class="number"> 162</span><span class="k1">void</span> quit<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 163</span>  play <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 164</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>  <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>timer_fps<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 166</span>  <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>timer_lps<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 167</span>  <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>eventqueue<span class="k2">)</span><span class="k2">;</span>  
<span class="number"> 168</span><span class="k2">}</span>
</div></div><p>


map class:
</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 "map.h"</span>
<span class="number">  2</span>map::map<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  3</span><span class="k2">{</span>
<span class="number">  4</span><span class="k2">}</span>
<span class="number">  5</span>map::~map<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  6</span><span class="k2">{</span>
<span class="number">  7</span><span class="k2">}</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">int</span> map::load<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>file_name, <span class="k1">int</span> window_width, <span class="k1">int</span> window_height<span class="k2">)</span>
<span class="number"> 10</span><span class="k2">{</span>
<span class="number"> 11</span>  xx <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span>  <a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>  file <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>file_name<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>file<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 16</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nFalha ao ler arquivo %s"</span>, file_name<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 18</span>  <span class="k2">}</span>
<span class="number"> 19</span>  width <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_width"><span class="a">al_get_bitmap_width</span></a><span class="k2">(</span>file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>  height <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_height"><span class="a">al_get_bitmap_height</span></a><span class="k2">(</span>file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span>  <span class="c">//todos tiles do mapa</span>
<span class="number"> 23</span>  <span class="c">//all_tiles = new tile[width * height];</span>
<span class="number"> 24</span>
<span class="number"> 25</span>  <span class="c">//carrega o tileset - imagem / tamanho do tile</span>
<span class="number"> 26</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>tile_set.load<span class="k2">(</span><span class="s">"tileset.jpg"</span>, <span class="n">32</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 27</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span>  tiles_to_show_x <span class="k3">=</span> window_width <span class="k3">/</span> tile_set.get_tile_size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>  tiles_to_show_y <span class="k3">=</span> window_height <span class="k3">/</span> tile_set.get_tile_size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>  
<span class="number"> 32</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color<span class="k2">;</span>
<span class="number"> 33</span>
<span class="number"> 34</span>  tile <span class="k3">*</span>tl<span class="k2">;</span>
<span class="number"> 35</span>
<span class="number"> 36</span>  <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> r <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> r <span class="k3">&lt;</span> height <span class="k2">;</span> r<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 37</span>  <span class="k2">{</span>
<span class="number"> 38</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> c <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> c <span class="k3">&lt;</span> width <span class="k2">;</span> c<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 39</span>    <span class="k2">{</span>
<span class="number"> 40</span>      color <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_pixel"><span class="a">al_get_pixel</span></a><span class="k2">(</span>file, c, r<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>
<span class="number"> 42</span>      <span class="k1">if</span><span class="k2">(</span>color_to_tile<span class="k2">(</span>color<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 43</span>        <span class="k1">continue</span><span class="k2">;</span>
<span class="number"> 44</span>
<span class="number"> 45</span>      <span class="k1">int</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> r <span class="k3">*</span> width <span class="k3">+</span> c<span class="k2">;</span>
<span class="number"> 46</span>      tl <span class="k3">=</span> <span class="k1">new</span> tile<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>
<span class="number"> 48</span>      tl-&gt;set_x<span class="k2">(</span>c <span class="k3">*</span> tile_set.get_tile_size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span>      tl-&gt;set_y<span class="k2">(</span>r <span class="k3">*</span> tile_set.get_tile_size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>      tl-&gt;set_w<span class="k2">(</span>tile_set.get_tile_size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span>      tl-&gt;set_h<span class="k2">(</span>tile_set.get_tile_size<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span>      tl-&gt;set_tile_index<span class="k2">(</span>color_to_tile<span class="k2">(</span>color<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 53</span>      tl-&gt;set_image<span class="k2">(</span>tile_set.get_tile<span class="k2">(</span>tl-&gt;get_tile_index<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 54</span>    <span class="k2">}</span>
<span class="number"> 55</span>  <span class="k2">}</span>
<span class="number"> 56</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"%d tiles carregados."</span>,tile::all_tiles.size<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_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>  <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 59</span><span class="k2">}</span>
<span class="number"> 60</span>
<span class="number"> 61</span><span class="k1">void</span> map::draw<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>  
<span class="number"> 62</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="k2">(</span><span class="k1">int</span><span class="k2">)</span> tile::all_tiles.size<span class="k2">(</span><span class="k2">)</span> <span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 63</span>    tile::all_tiles.at<span class="k2">(</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 64</span><span class="k2">}</span>
<span class="number"> 65</span>
<span class="number"> 66</span><span class="k1">void</span> map::update<span class="k2">(</span><span class="k1">bool</span> keys<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 67</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="k2">(</span><span class="k1">int</span><span class="k2">)</span> tile::all_tiles.size<span class="k2">(</span><span class="k2">)</span> <span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 68</span>    tile::all_tiles.at<span class="k2">(</span>i<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>update<span class="k2">(</span>keys<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 69</span><span class="k2">}</span>
<span class="number"> 70</span>
<span class="number"> 71</span><span class="k1">int</span> map::color_to_tile<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 72</span>
<span class="number"> 73</span>  <span class="k1">int</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">;</span>
<span class="number"> 74</span>
<span class="number"> 75</span>  <span class="k1">if</span><span class="k2">(</span>compare_color<span class="k2">(</span>color, BLACK<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 76</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 77</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>compare_color<span class="k2">(</span>color, RED<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 78</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 79</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>compare_color<span class="k2">(</span>color, GREEN<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 80</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number"> 81</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>compare_color<span class="k2">(</span>color, BLUE<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 82</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">4</span><span class="k2">;</span>
<span class="number"> 83</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>compare_color<span class="k2">(</span>color, YELLOW<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 84</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span>
<span class="number"> 85</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>compare_color<span class="k2">(</span>color, MAGENTA<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 86</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span>
<span class="number"> 87</span>  <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>compare_color<span class="k2">(</span>color, CYAN<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 88</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">7</span><span class="k2">;</span>
<span class="number"> 89</span>  <span class="k1">else</span>
<span class="number"> 90</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 91</span>  <span class="k1">return</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">;</span>
<span class="number"> 92</span><span class="k2">}</span>
<span class="number"> 93</span>
<span class="number"> 94</span><span class="k1">bool</span> map::compare_color<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color1, <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color2<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 95</span>  <span class="k1">return</span> <span class="k2">(</span>color1.r <span class="k3">=</span><span class="k3">=</span> color2.r<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>color1.g <span class="k3">=</span><span class="k3">=</span> color2.g<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>color1.b <span class="k3">=</span><span class="k3">=</span> color2.b<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 96</span><span class="k2">}</span>
</div></div><p>


tileset class:
</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 "tileset.h"</span>
<span class="number">  2</span>
<span class="number">  3</span>tileset::tileset<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number">  4</span>tileset::~tileset<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number">  5</span><span class="k1">int</span> tileset::load<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>file, <span class="k1">int</span> ts<span class="k2">)</span>
<span class="number">  6</span><span class="k2">{</span>
<span class="number">  7</span>  tile_size <span class="k3">=</span> ts<span class="k2">;</span>
<span class="number">  8</span>  <a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>  image <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>file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>image<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 12</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nFalha ao ler tileset %s"</span>, file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 14</span>  <span class="k2">}</span>
<span class="number"> 15</span>
<span class="number"> 16</span>  width <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_width"><span class="a">al_get_bitmap_width</span></a><span class="k2">(</span>image<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>  height <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_height"><span class="a">al_get_bitmap_height</span></a><span class="k2">(</span>image<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>  
<span class="number"> 19</span>  <span class="c">//caso o tileset nao seja multiplo do tamanho de seus tiles</span>
<span class="number"> 20</span>  <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>width % tile_size <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">|</span> <span class="k2">(</span>height % tile_size <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 21</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nTileset nao compativel com o tamanho dos tiles."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 23</span>  <span class="k2">}</span>
<span class="number"> 24</span>  number_tiles <span class="k3">=</span> width <span class="k3">/</span> height<span class="k2">;</span>
<span class="number"> 25</span>
<span class="number"> 26</span>  tiles_x <span class="k3">=</span> width <span class="k3">/</span> tile_size<span class="k2">;</span>
<span class="number"> 27</span>  tiles_y <span class="k3">=</span> height <span class="k3">/</span> tile_size<span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span>  sub_tiles <span class="k3">=</span> <span class="k1">new</span> <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span><span class="k2">[</span>tiles_x <span class="k3">*</span> tiles_y<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 30</span>
<span class="number"> 31</span>  <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> r <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> r <span class="k3">&lt;</span> tiles_y <span class="k2">;</span> r<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 32</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> c <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> c <span class="k3">&lt;</span> tiles_x <span class="k2">;</span> c<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 33</span>      sub_tiles<span class="k2">[</span>r <span class="k3">*</span> tiles_x <span class="k3">+</span> c <span class="k3">+</span> <span class="n">1</span><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>image, c <span class="k3">*</span> tile_size, r <span class="k3">*</span> tile_size, tile_size, tile_size<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>
<span class="number"> 35</span>  <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 36</span>
<span class="number"> 37</span><span class="k2">}</span>
<span class="number"> 38</span><span class="k1">int</span> tileset::get_tile_size<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 39</span>  <span class="k1">return</span> tile_size<span class="k2">;</span>
<span class="number"> 40</span><span class="k2">}</span>
<span class="number"> 41</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> tileset::get_tile<span class="k2">(</span><span class="k1">int</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 42</span>  <span class="k1">return</span> sub_tiles<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 43</span><span class="k2">}</span>
</div></div><p>

tile class:
</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 "tile.h"</span>
<span class="number">  2</span>
<span class="number">  3</span>std::vector<span class="k3">&lt;</span>tile<span class="k3">*</span><span class="k3">&gt;</span> tile::all_tiles<span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span>tile::tile<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  6</span>  all_tiles.push_back<span class="k2">(</span><span class="k1">this</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span><span class="k2">}</span>
<span class="number">  8</span>tile::~tile<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  9</span><span class="k2">}</span>
<span class="number"> 10</span><span class="k1">int</span> tile::get_tile_index<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 11</span><span class="k2">{</span>
<span class="number"> 12</span>  <span class="k1">return</span> tile_index<span class="k2">;</span>
<span class="number"> 13</span><span class="k2">}</span>
<span class="number"> 14</span><span class="k1">bool</span> tile::is_solid<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 15</span><span class="k2">{</span>
<span class="number"> 16</span>  <span class="k1">return</span> solid<span class="k2">;</span>
<span class="number"> 17</span><span class="k2">}</span>
<span class="number"> 18</span>
<span class="number"> 19</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> tile::get_image<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 20</span><span class="k2">{</span>
<span class="number"> 21</span>  <span class="k1">return</span> image<span class="k2">;</span>
<span class="number"> 22</span><span class="k2">}</span>
<span class="number"> 23</span><span class="k1">void</span> tile::set_tile_index<span class="k2">(</span><span class="k1">int</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">)</span>
<span class="number"> 24</span><span class="k2">{</span>
<span class="number"> 25</span>  tile_index <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">;</span>
<span class="number"> 26</span><span class="k2">}</span>
<span class="number"> 27</span>
<span class="number"> 28</span><span class="k1">void</span> tile::set_solid<span class="k2">(</span><span class="k1">bool</span> state<span class="k2">)</span>
<span class="number"> 29</span><span class="k2">{</span>
<span class="number"> 30</span>  solid <span class="k3">=</span> state<span class="k2">;</span>
<span class="number"> 31</span><span class="k2">}</span>
<span class="number"> 32</span><span class="k1">void</span> tile::set_image<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span> img<span class="k2">)</span>
<span class="number"> 33</span><span class="k2">{</span>
<span class="number"> 34</span>  image <span class="k3">=</span> img<span class="k2">;</span>
<span class="number"> 35</span><span class="k2">}</span>
<span class="number"> 36</span><span class="k1">void</span> tile::draw<span class="k2">(</span><span class="k2">)</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>image,get_x<span class="k2">(</span><span class="k2">)</span>,get_y<span class="k2">(</span><span class="k2">)</span>,<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="k1">void</span> tile::update<span class="k2">(</span><span class="k1">bool</span> keys<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 40</span>  <span class="k1">if</span><span class="k2">(</span>keys<span class="k2">[</span>ALLEGRO_KEY_RIGHT<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 41</span>    set_x<span class="k2">(</span>get_x<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span><span class="k2">}</span>
</div></div><p>

It is all.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kuarcke)</author>
		<pubDate>Mon, 17 Nov 2014 00:57:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That video looks like a vsync problem to me.  The display is updated while the monitor is halfway through showing the previous frame.  Try this before creating the display:</p><div class="source-code snippet"><div class="inner"><pre>  <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_VSYNC, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

and if that doesn&#39;t work, there should be a setting in your graphics utility to allow programs to set vsync/flipping and not override it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Mon, 17 Nov 2014 01:59:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="source-code"> <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a> <span class="k2">(</span>ALLEGRO_VSYNC, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span></span> worked, the tiles are perfect now, but the game is too slow, the controls are coming with 1 sec delay <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kuarcke)</author>
		<pubDate>Mon, 17 Nov 2014 02:18:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Try adjusting your timer values.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Mon, 17 Nov 2014 02:21:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Tips? because they seem ok to me.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kuarcke)</author>
		<pubDate>Mon, 17 Nov 2014 02:32:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Check if your event queue is empty before drawing, that should solve the input delay.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (l j)</author>
		<pubDate>Mon, 17 Nov 2014 02:43:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I was thinking that somehow the timer would cause a delay after the vsync or something, so it&#39;d have two delays, one for the vsync and one for the timer itself.  If you sped up the timer a bit so it&#39;d always ask for a redraw before a vsync kicked in, then it&#39;d work better I&#39;d think.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Mon, 17 Nov 2014 02:45:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It worked guys, is perfect right now with vsync!<br />I did so:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>al_event_queue_is_empty<span class="k2">(</span>eventqueue<span class="k2">)</span><span class="k2">)</span>
<span class="k2">{</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>eventqueue, <span class="k3">&amp;</span> event<span class="k2">)</span><span class="k2">;</span>
  <span class="k1">if</span> <span class="k2">(</span>evento.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span>
  <span class="k2">{</span>
    <span class="c">//do something ...</span>
  <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>

Many thanks for the help.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kuarcke)</author>
		<pubDate>Mon, 17 Nov 2014 03:20:27 +0000</pubDate>
	</item>
</rss>
