<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>[ALLEGRO 5] I am having trouble with getting my character to stand still when...</title>
		<link>http://www.allegro.cc/forums/view/606328</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 07 Feb 2011 09:12:13 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi, everyone I am having a little trouble with the new Allegro 5. Any way, I am making a game and I have finally got the character to move smoothly. But I want it to stand still when the left key is not pressed, and the right key is not pressed. But it doesn&#39;t seem to work, when I let go of both the left or the right it stays at the last position it was running, and it doesn&#39;t stand normally. It used to work with Allegro 4, but the API has been revamped so I have to learn it again. Here is the code below:
</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="k1">bool</span> doexit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">   4</span><span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">   5</span><span class="k1">int</span> y <span class="k3">=</span> <span class="n">117</span><span class="k2">;</span>
<span class="number">   6</span><span class="k1">int</span> xpos <span class="k3">=</span> <span class="n">405</span><span class="k2">;</span>
<span class="number">   7</span><span class="k1">const</span> <span class="k1">float</span> fps <span class="k3">=</span> <span class="n">20</span><span class="k2">;</span>
<span class="number">   8</span><span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">   9</span><span class="k1">bool</span> rightpress <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  10</span><span class="k1">bool</span> leftwaslast <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  11</span><span class="k1">bool</span> rightwaslast <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  12</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  13</span><span class="k2">{</span>
<span class="number">  14</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> buffer<span class="k2">;</span>
<span class="number">  15</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> <a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a><span class="k2">;</span>
<span class="number">  16</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="k2">;</span>
<span class="number">  17</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> bck<span class="k2">;</span>
<span class="number">  18</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> right<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="k2">;</span>
<span class="number">  20</span>  <span class="k1">int</span> retval <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">  21</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>retval<span class="k2">)</span>
<span class="number">  22</span>  <span class="k2">{</span>
<span class="number">  23</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  24</span>  <span class="k2">}</span>
<span class="number">  25</span>  <a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">256</span>, <span class="n">192</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a><span class="k2">)</span>
<span class="number">  27</span>  <span class="k2">{</span>
<span class="number">  28</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  29</span>  <span class="k2">}</span>
<span class="number">  30</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">  31</span>  <span class="k2">{</span>
<span class="number">  32</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  33</span>  <span class="k2">}</span>
<span class="number">  34</span>  timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> fps<span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span>
<span class="number">  36</span>  <span class="k1">bool</span> retval2 <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">  37</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>retval2<span class="k2">)</span>
<span class="number">  38</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  39</span>  buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">256</span>, <span class="n">192</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>buffer<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>  bck <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">"background.bmp"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>  right <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">"right.bmp"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>bck <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>right<span class="k2">)</span>
<span class="number">  45</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  46</span>  <a href="http://www.allegro.cc/manual/al_set_app_name"><span class="a">al_set_app_name</span></a><span class="k2">(</span><span class="s">"Metriod Game"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</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><a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a>, <span class="s">"Metriod Game"</span><span class="k2">)</span><span class="k2">;</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>  <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">  50</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">  51</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">  52</span>  <span class="k1">while</span> <span class="k2">(</span><span class="n">1</span><span class="k2">)</span>
<span class="number">  53</span>  <span class="k2">{</span>
<span class="number">  54</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>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bck, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</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>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>    <a href="http://www.allegro.cc/manual/al_convert_mask_to_alpha"><span class="a">al_convert_mask_to_alpha</span></a><span class="k2">(</span>right, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">0</span>, <span class="n">255</span><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_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>right, xpos, <span class="n">0</span>, <span class="n">37</span>, <span class="n">40</span>, x, y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</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><a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</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">  62</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number">  63</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>    <span class="k1">if</span> <span class="k2">(</span>ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span>
<span class="number">  65</span>    <span class="k2">{</span>
<span class="number">  66</span>      <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</span>      <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// End the game!</span>
<span class="number">  68</span>    <span class="k2">}</span>
<span class="number">  69</span>    
<span class="number">  70</span>    
<span class="number">  71</span>    <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number">  72</span>    <span class="k2">{</span>
<span class="number">  73</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  74</span>
<span class="number">  75</span>        <span class="k1">if</span> <span class="k2">(</span>rightpress<span class="k2">)</span>
<span class="number">  76</span>        <span class="k2">{</span>
<span class="number">  77</span>          x <span class="k3">+</span><span class="k3">=</span> <span class="n">4</span><span class="k2">;</span>
<span class="number">  78</span>      
<span class="number">  79</span>            <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">405</span><span class="k2">)</span>
<span class="number">  80</span>            <span class="k2">{</span>
<span class="number">  81</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  82</span>              xpos <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  83</span>          
<span class="number">  84</span>            <span class="k2">}</span>
<span class="number">  85</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  86</span>            <span class="k2">{</span>
<span class="number">  87</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>
<span class="number">  89</span>              xpos <span class="k3">=</span> <span class="n">37</span><span class="k2">;</span>
<span class="number">  90</span>          
<span class="number">  91</span>            <span class="k2">}</span>
<span class="number">  92</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">37</span><span class="k2">)</span>
<span class="number">  93</span>            <span class="k2">{</span>
<span class="number">  94</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  95</span>
<span class="number">  96</span>              xpos <span class="k3">=</span> <span class="n">75</span><span class="k2">;</span>
<span class="number">  97</span>            <span class="k2">}</span>
<span class="number">  98</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">75</span><span class="k2">)</span>
<span class="number">  99</span>            <span class="k2">{</span>
<span class="number"> 100</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>
<span class="number"> 102</span>              xpos <span class="k3">=</span> <span class="n">117</span><span class="k2">;</span>
<span class="number"> 103</span>            <span class="k2">}</span>
<span class="number"> 104</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">117</span><span class="k2">)</span>
<span class="number"> 105</span>            <span class="k2">{</span>
<span class="number"> 106</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 107</span>
<span class="number"> 108</span>              xpos <span class="k3">=</span> <span class="n">159</span><span class="k2">;</span>
<span class="number"> 109</span>            <span class="k2">}</span>
<span class="number"> 110</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">159</span><span class="k2">)</span>
<span class="number"> 111</span>            <span class="k2">{</span>
<span class="number"> 112</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>
<span class="number"> 114</span>              xpos <span class="k3">=</span> <span class="n">202</span><span class="k2">;</span>
<span class="number"> 115</span>            <span class="k2">}</span>
<span class="number"> 116</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">202</span><span class="k2">)</span>
<span class="number"> 117</span>            <span class="k2">{</span>
<span class="number"> 118</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 119</span>
<span class="number"> 120</span>              xpos <span class="k3">=</span> <span class="n">237</span><span class="k2">;</span>
<span class="number"> 121</span>            <span class="k2">}</span>
<span class="number"> 122</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">237</span><span class="k2">)</span>
<span class="number"> 123</span>            <span class="k2">{</span>
<span class="number"> 124</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>
<span class="number"> 126</span>              xpos <span class="k3">=</span> <span class="n">276</span><span class="k2">;</span>
<span class="number"> 127</span>            <span class="k2">}</span>
<span class="number"> 128</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">276</span><span class="k2">)</span>
<span class="number"> 129</span>            <span class="k2">{</span>
<span class="number"> 130</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>
<span class="number"> 132</span>              xpos <span class="k3">=</span> <span class="n">317</span><span class="k2">;</span>
<span class="number"> 133</span>            <span class="k2">}</span>
<span class="number"> 134</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">317</span><span class="k2">)</span>
<span class="number"> 135</span>            <span class="k2">{</span>
<span class="number"> 136</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 137</span>
<span class="number"> 138</span>              xpos <span class="k3">=</span> <span class="n">359</span><span class="k2">;</span>
<span class="number"> 139</span>            <span class="k2">}</span>
<span class="number"> 140</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">359</span><span class="k2">)</span>
<span class="number"> 141</span>            <span class="k2">{</span>
<span class="number"> 142</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>
<span class="number"> 144</span>              xpos <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 145</span>            <span class="k2">}</span>
<span class="number"> 146</span>            rightpress <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 147</span>      <span class="k2">}</span>
<span class="number"> 148</span>    <span class="k2">}</span>
<span class="number"> 149</span>    <span class="k1">else</span>
<span class="number"> 150</span>    <span class="k2">{</span>
<span class="number"> 151</span>      <span class="k1">if</span> <span class="k2">(</span>ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_RIGHT<span class="k2">)</span>
<span class="number"> 152</span>      <span class="k2">{</span>
<span class="number"> 153</span>        rightpress <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 154</span>        rightwaslast <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 155</span>      <span class="k2">}</span>
<span class="number"> 156</span>      <span class="k1">else</span>
<span class="number"> 157</span>      <span class="k2">{</span>
<span class="number"> 158</span>        
<span class="number"> 159</span>        <span class="k1">if</span> <span class="k2">(</span>ev.keyboard.keycode <span class="k3">!</span><span class="k3">=</span> ALLEGRO_KEY_UP <span class="k3">&amp;</span><span class="k3">&amp;</span> ev.keyboard.keycode <span class="k3">!</span><span class="k3">=</span> ALLEGRO_KEY_DOWN<span class="k2">)</span>
<span class="number"> 160</span>        <span class="k2">{</span>
<span class="number"> 161</span>          <span class="k1">if</span> <span class="k2">(</span>rightwaslast<span class="k2">)</span>
<span class="number"> 162</span>          <span class="k2">{</span>
<span class="number"> 163</span>      
<span class="number"> 164</span>            <span class="k1">if</span> <span class="k2">(</span>rightwaslast<span class="k2">)</span>
<span class="number"> 165</span>            <span class="k2">{</span>
<span class="number"> 166</span>              xpos <span class="k3">=</span> <span class="n">405</span><span class="k2">;</span>
<span class="number"> 167</span>            <span class="k2">}</span>
<span class="number"> 168</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>leftwaslast<span class="k2">)</span>
<span class="number"> 169</span>            <span class="k2">{</span>
<span class="number"> 170</span>              xpos <span class="k3">=</span> <span class="n">468</span><span class="k2">;</span>
<span class="number"> 171</span>            <span class="k2">}</span>
<span class="number"> 172</span>    
<span class="number"> 173</span>          <span class="k2">}</span>
<span class="number"> 174</span>        <span class="k2">}</span>
<span class="number"> 175</span>      <span class="k2">}</span>
<span class="number"> 176</span>      
<span class="number"> 177</span>      
<span class="number"> 178</span>    <span class="k2">}</span>
<span class="number"> 179</span>    <span class="k1">if</span> <span class="k2">(</span>redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 180</span>    <span class="k2">{</span>
<span class="number"> 181</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 182</span>    <span class="k2">}</span>
<span class="number"> 183</span>    
<span class="number"> 184</span>    
<span class="number"> 185</span>    
<span class="number"> 186</span>  <span class="k2">}</span>
<span class="number"> 187</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 188</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cpp_4_life)</author>
		<pubDate>Mon, 07 Feb 2011 05:11:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>put your code in &lt;code&gt;&lt;/code&gt;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Mon, 07 Feb 2011 05:16:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sorry about that, some other forums use the [code] syntax. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cpp_4_life)</author>
		<pubDate>Mon, 07 Feb 2011 05:19:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, for one thing, you are checking ev.keyboard.keycode when you don&#39;t know for sure that the ev.type was ALLEGRO_EVENT_KEY_DOWN or ALLEGRO_EVENT_KEY_UP. At best, you get lucky, and at worst, you access random garbage due to other data being in the union.</p><p>Another thing, you only need to call <span class="source-code"><a href="http://www.allegro.cc/manual/al_convert_mask_to_alpha"><span class="a">al_convert_mask_to_alpha</span></a></span> on your <i>right</i> bitmap once. Don&#39;t call it over and over again in your drawing loop.</p><p>What is the purpose of all of these blocks?
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> blah<span class="k2">)</span> <span class="k2">{</span>
   <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
   xpos <span class="k3">=</span> blah2<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Organize your code into logical sections :
</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><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number">  2</span><a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue , <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</span><span class="k1">switch</span><span class="k2">(</span>ev.type<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  4</span>   <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN <span class="k2">:</span>
<span class="number">  5</span>      <span class="k1">if</span> <span class="k2">(</span>ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_RIGHT<span class="k2">)</span> <span class="k2">{</span>rightpress <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  6</span>      <span class="k1">if</span> <span class="k2">(</span>ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_LEFT<span class="k2">)</span> <span class="k2">{</span>leftpress <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  7</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number">  8</span>   <span class="k1">case</span> ALLEGRO_EVENT_KEY_UP <span class="k2">:</span>
<span class="number">  9</span>      <span class="k1">if</span> <span class="k2">(</span>ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_RIGHT<span class="k2">)</span> <span class="k2">{</span>rightpress <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 10</span>      <span class="k1">if</span> <span class="k2">(</span>ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_LEFT<span class="k2">)</span> <span class="k2">{</span>leftpress <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 11</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 12</span>   <span class="k1">case</span> ALLEGRO_EVENT_TIMER <span class="k2">:</span>
<span class="number"> 13</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 14</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 15</span><span class="k2">}</span>
<span class="number"> 16</span>
<span class="number"> 17</span><span class="k1">if</span> <span class="k2">(</span>rightpress<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 18</span>   x <span class="k3">+</span><span class="k3">=</span> <span class="n">4</span><span class="k2">;</span>
<span class="number"> 19</span>   <span class="k1">if</span> <span class="k2">(</span>x <span class="k3">&gt;</span> blah<span class="k2">)</span> <span class="k2">{</span>x <span class="k3">=</span> blah<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">if</span> <span class="k2">(</span>leftpress<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 22</span>   x <span class="k3">-</span><span class="k3">=</span> <span class="n">4</span><span class="k2">;</span>
<span class="number"> 23</span>   <span class="k1">if</span> <span class="k2">(</span>x <span class="k3">&lt;</span> blah2<span class="k2">)</span> <span class="k2">{</span>x <span class="k3">=</span> blah2<span class="k2">;</span><span class="k2">}</span>
<span class="number"> 24</span><span class="k2">}</span>
<span class="number"> 25</span>
<span class="number"> 26</span>
<span class="number"> 27</span><span class="k1">if</span> <span class="k2">(</span>redraw<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 28</span>   draw_stuff<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 07 Feb 2011 06:55:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the post, the purpose of those blocks is to animate the sprite because it moves through each of the different sprites positions in the sprite sheet. By the way the, your pseudo code has helped my code be more organized but it has worsened the situation. It seems that my character now doesn&#39;t move smoothly anymore instead it runs in its standing position. I did some debugging and it seems that the rightpress and the leftpress from your pseudo code example keeps being false.<br /><img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cpp_4_life)</author>
		<pubDate>Mon, 07 Feb 2011 07:55:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You do not need to use explicit double buffering in Allegro 5, and on some hardware, drawing to ALLEGRO_BITMAPs (that are not a ALLEGRO_DISPLAY backbuffer) is rather slow, so in most cases you do NOT want to double buffer like that.</p><p>Especially considering you end up with 2 or more hardware buffers, which is why the <span class="source-code"><a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a></span> call is even needed.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Mon, 07 Feb 2011 08:41:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>OMG, sorry for posting that your code was faulty, but in fact after doing some indepth scan I by accident had a line of code in the xpos block that kept the rightpress false. So again sorry for wasting your precious time here is the code where I fortuitously found the little mistake that caused a hell of a problem:
</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">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number">  2</span>  <span class="n">72</span>    <span class="k2">{</span>
<span class="number">  3</span>  <span class="n">73</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  4</span>  <span class="n">74</span>
<span class="number">  5</span>  <span class="n">75</span>        <span class="k1">if</span> <span class="k2">(</span>rightpress<span class="k2">)</span>
<span class="number">  6</span>  <span class="n">76</span>        <span class="k2">{</span>
<span class="number">  7</span>  <span class="n">77</span>          x <span class="k3">+</span><span class="k3">=</span> <span class="n">4</span><span class="k2">;</span>
<span class="number">  8</span>  <span class="n">78</span>      
<span class="number">  9</span>  <span class="n">79</span>            <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">405</span><span class="k2">)</span>
<span class="number"> 10</span>  <span class="n">80</span>            <span class="k2">{</span>
<span class="number"> 11</span>  <span class="n">81</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>  <span class="n">82</span>              xpos <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 13</span>  <span class="n">83</span>          
<span class="number"> 14</span>  <span class="n">84</span>            <span class="k2">}</span>
<span class="number"> 15</span>  <span class="n">85</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 16</span>  <span class="n">86</span>            <span class="k2">{</span>
<span class="number"> 17</span>  <span class="n">87</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>  <span class="n">88</span>
<span class="number"> 19</span>  <span class="n">89</span>              xpos <span class="k3">=</span> <span class="n">37</span><span class="k2">;</span>
<span class="number"> 20</span>  <span class="n">90</span>          
<span class="number"> 21</span>  <span class="n">91</span>            <span class="k2">}</span>
<span class="number"> 22</span>  <span class="n">92</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">37</span><span class="k2">)</span>
<span class="number"> 23</span>  <span class="n">93</span>            <span class="k2">{</span>
<span class="number"> 24</span>  <span class="n">94</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>  <span class="n">95</span>
<span class="number"> 26</span>  <span class="n">96</span>              xpos <span class="k3">=</span> <span class="n">75</span><span class="k2">;</span>
<span class="number"> 27</span>  <span class="n">97</span>            <span class="k2">}</span>
<span class="number"> 28</span>  <span class="n">98</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">75</span><span class="k2">)</span>
<span class="number"> 29</span>  <span class="n">99</span>            <span class="k2">{</span>
<span class="number"> 30</span> <span class="n">100</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span> <span class="n">101</span>
<span class="number"> 32</span> <span class="n">102</span>              xpos <span class="k3">=</span> <span class="n">117</span><span class="k2">;</span>
<span class="number"> 33</span> <span class="n">103</span>            <span class="k2">}</span>
<span class="number"> 34</span> <span class="n">104</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">117</span><span class="k2">)</span>
<span class="number"> 35</span> <span class="n">105</span>            <span class="k2">{</span>
<span class="number"> 36</span> <span class="n">106</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span> <span class="n">107</span>
<span class="number"> 38</span> <span class="n">108</span>              xpos <span class="k3">=</span> <span class="n">159</span><span class="k2">;</span>
<span class="number"> 39</span> <span class="n">109</span>            <span class="k2">}</span>
<span class="number"> 40</span> <span class="n">110</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">159</span><span class="k2">)</span>
<span class="number"> 41</span> <span class="n">111</span>            <span class="k2">{</span>
<span class="number"> 42</span> <span class="n">112</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span> <span class="n">113</span>
<span class="number"> 44</span> <span class="n">114</span>              xpos <span class="k3">=</span> <span class="n">202</span><span class="k2">;</span>
<span class="number"> 45</span> <span class="n">115</span>            <span class="k2">}</span>
<span class="number"> 46</span> <span class="n">116</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">202</span><span class="k2">)</span>
<span class="number"> 47</span> <span class="n">117</span>            <span class="k2">{</span>
<span class="number"> 48</span> <span class="n">118</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span> <span class="n">119</span>
<span class="number"> 50</span> <span class="n">120</span>              xpos <span class="k3">=</span> <span class="n">237</span><span class="k2">;</span>
<span class="number"> 51</span> <span class="n">121</span>            <span class="k2">}</span>
<span class="number"> 52</span> <span class="n">122</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">237</span><span class="k2">)</span>
<span class="number"> 53</span> <span class="n">123</span>            <span class="k2">{</span>
<span class="number"> 54</span> <span class="n">124</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 55</span> <span class="n">125</span>
<span class="number"> 56</span> <span class="n">126</span>              xpos <span class="k3">=</span> <span class="n">276</span><span class="k2">;</span>
<span class="number"> 57</span> <span class="n">127</span>            <span class="k2">}</span>
<span class="number"> 58</span> <span class="n">128</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">276</span><span class="k2">)</span>
<span class="number"> 59</span> <span class="n">129</span>            <span class="k2">{</span>
<span class="number"> 60</span> <span class="n">130</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 61</span> <span class="n">131</span>
<span class="number"> 62</span> <span class="n">132</span>              xpos <span class="k3">=</span> <span class="n">317</span><span class="k2">;</span>
<span class="number"> 63</span> <span class="n">133</span>            <span class="k2">}</span>
<span class="number"> 64</span> <span class="n">134</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">317</span><span class="k2">)</span>
<span class="number"> 65</span> <span class="n">135</span>            <span class="k2">{</span>
<span class="number"> 66</span> <span class="n">136</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 67</span> <span class="n">137</span>
<span class="number"> 68</span> <span class="n">138</span>              xpos <span class="k3">=</span> <span class="n">359</span><span class="k2">;</span>
<span class="number"> 69</span> <span class="n">139</span>            <span class="k2">}</span>
<span class="number"> 70</span> <span class="n">140</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>xpos <span class="k3">=</span><span class="k3">=</span> <span class="n">359</span><span class="k2">)</span>
<span class="number"> 71</span> <span class="n">141</span>            <span class="k2">{</span>
<span class="number"> 72</span> <span class="n">142</span>              <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 73</span> <span class="n">143</span>
<span class="number"> 74</span> <span class="n">144</span>              xpos <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 75</span> <span class="n">145</span>            <span class="k2">}</span>
<span class="number"> 76</span> <span class="n">146</span>            rightpress <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span> <span class="c">// This was causing the problem I don't know how it got there</span>
<span class="number"> 77</span> <span class="n">147</span>      <span class="k2">}</span>
<span class="number"> 78</span> <span class="n">148</span>    <span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cpp_4_life)</author>
		<pubDate>Mon, 07 Feb 2011 08:55:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I didn&#39;t realize you were using xpos to set the &#39;frame&#39; of your sprite.</p><p>I would make a separate animation class, give your object a <span class="source-code">map<span class="k3">&lt;</span>state , Animation<span class="k3">*</span><span class="k3">&gt;</span></span> and then set the state when it needs to change :
</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="number">  2</span><span class="k1">class</span> Animation <span class="k2">{</span>
<span class="number">  3</span><span class="k1">protected</span> <span class="k2">:</span>
<span class="number">  4</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span><span class="k3">*</span> frames<span class="k2">;</span>
<span class="number">  5</span>
<span class="number">  6</span>   <span class="k1">double</span> duration<span class="k2">;</span>
<span class="number">  7</span>   <span class="k1">double</span> frames_per_sec<span class="k2">;</span>
<span class="number">  8</span>   <span class="k1">double</span> frametime<span class="k2">;</span>
<span class="number">  9</span>   <span class="k1">int</span> num_frames<span class="k2">;</span>
<span class="number"> 10</span>   <span class="k1">int</span> frame_num<span class="k2">;</span>
<span class="number"> 11</span><span class="k1">public</span> <span class="k2">:</span>
<span class="number"> 12</span>   Animation<span class="k2">(</span><span class="k1">int</span> nframes , <span class="k1">double</span> total_time<span class="k2">)</span> <span class="k2">:</span>
<span class="number"> 13</span>         frames<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>,
<span class="number"> 14</span>         duration<span class="k2">(</span>total_time<span class="k2">)</span>,
<span class="number"> 15</span>         frames_per_sec<span class="k2">(</span><span class="n">0</span>.<span class="n">0</span><span class="k2">)</span>,
<span class="number"> 16</span>         frametime<span class="k2">(</span><span class="n">0</span>.<span class="n">0</span><span class="k2">)</span>,
<span class="number"> 17</span>         num_frames<span class="k2">(</span>nframes<span class="k2">)</span>,
<span class="number"> 18</span>         frame_num<span class="k2">(</span><span class="n">0</span><span class="k2">)</span>
<span class="number"> 19</span>   <span class="k2">{</span>
<span class="number"> 20</span>      frames_per_sec <span class="k3">=</span> <span class="k2">(</span><span class="k1">double</span><span class="k2">)</span>num_frames<span class="k3">/</span>duration<span class="k2">;</span>
<span class="number"> 21</span>      frames <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>num_frames<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 22</span>   <span class="k2">}</span>
<span class="number"> 23</span>   <span class="k1">void</span> SetFrame<span class="k2">(</span><span class="k1">int</span> frame_number , <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> bmp<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 24</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>frame_number <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>frame_number <span class="k3">&lt;</span> num_frames<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 25</span>         frames<span class="k2">[</span>frame_number<span class="k2">]</span> <span class="k3">=</span> bmp<span class="k2">;</span>
<span class="number"> 26</span>      <span class="k2">}</span>
<span class="number"> 27</span>   <span class="k2">}</span>
<span class="number"> 28</span>   <span class="k1">void</span> SetFrameTime<span class="k2">(</span><span class="k1">double</span> new_time<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>   <span class="k1">void</span> AdvanceFrameTime<span class="k2">(</span><span class="k1">double</span> delta_time<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 31</span>
<span class="number"> 32</span><span class="k1">enum</span> ANIM_STATE <span class="k2">{</span>
<span class="number"> 33</span>   STAND_LEFT <span class="k3">=</span> <span class="n">0</span>,
<span class="number"> 34</span>   STAND_RIGHT <span class="k3">=</span> <span class="n">1</span>,
<span class="number"> 35</span>   WALK_LEFT <span class="k3">=</span> <span class="n">2</span>,
<span class="number"> 36</span>   WALK_RIGHT <span class="k3">=</span> <span class="n">3</span>,
<span class="number"> 37</span>   RUN_LEFT <span class="k3">=</span> <span class="n">4</span>,
<span class="number"> 38</span>   RUN_RIGHT <span class="k3">=</span> <span class="n">5</span>
<span class="number"> 39</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 40</span>
<span class="number"> 41</span><span class="p">#include &lt;map&gt;</span>
<span class="number"> 42</span><span class="k1">using</span> std::map<span class="k2">;</span>
<span class="number"> 43</span>
<span class="number"> 44</span><span class="k1">class</span> Object <span class="k2">{</span>
<span class="number"> 45</span><span class="k1">protected</span> <span class="k2">:</span>
<span class="number"> 46</span>   map<span class="k3">&lt;</span>ANIM_STATE , Animation<span class="k3">*</span><span class="k3">&gt;</span> anim_state_map<span class="k2">;</span>
<span class="number"> 47</span>   Animation<span class="k3">*</span> current_animation<span class="k2">;</span>
<span class="number"> 48</span>pubilc <span class="k2">:</span>
<span class="number"> 49</span>   <span class="k1">void</span> AddAnimationState<span class="k2">(</span>ANIM_STATE state , Animation<span class="k3">*</span> animation<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 50</span>      anim_state_map<span class="k2">[</span>state<span class="k2">]</span> <span class="k3">=</span> animation<span class="k2">;</span>
<span class="number"> 51</span>   <span class="k2">}</span>
<span class="number"> 52</span>   <span class="k1">void</span> SetAnimationState<span class="k2">(</span>ANIM_STATE state<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 53</span>      current_animation <span class="k3">=</span> anim_state_map<span class="k2">[</span>state<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 54</span>      current_animation-&gt;SetFrameTime<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"> 55</span>   <span class="k2">}</span>
<span class="number"> 56</span>   <span class="k1">void</span> Update<span class="k2">(</span><span class="k1">double</span> tsec<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 57</span>      current_animation-&gt;AdvanceFrameTime<span class="k2">(</span>tsec<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>   <span class="k2">}</span>
<span class="number"> 59</span><span class="k2">}</span>
</div></div><p>

</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606328/902251#target">cpp_4_life</a> said:</div><div class="quote"><p>
I did some debugging and it seems that the rightpress and the leftpress from your pseudo code example keeps being false.
</p></div></div><p>
Well, I don&#39;t see why that would be true. Add in a print statement under the ALLEGRO_KEY_DOWN case and make sure you are getting keypresses in the first place.</p><p>There is one thing wrong with what I posted though, it will process if(rightpress) and if(leftpress) once for each event. To prevent that, process the events in a loop and don&#39;t break out of the loop until your redraw flag is set.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 07 Feb 2011 08:56:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/606328/902266#target">cpp_4_life</a> said:</div><div class="quote"><p>OMG, sorry for posting that your code was faulty, but in fact after doing some indepth scan I by accident had a line of code in the xpos block that kept the rightpress false. So again sorry for wasting your precious time</p></div></div><p>Don&#39;t worry about it. Most of us aren&#39;t really all that high and mighty.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Mon, 07 Feb 2011 09:12:13 +0000</pubDate>
	</item>
</rss>
