<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Drawing instead of falling</title>
		<link>http://www.allegro.cc/forums/view/591456</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 19 May 2007 16:51:41 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello! I have this code.</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;stdlib.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include "data_file.h"</span></td></tr><tr><td class="number">4</td><td><span class="p">#pragma hdrstop</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><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="k2">)</span></td></tr><tr><td class="number">8</td><td><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>    <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    </td></tr><tr><td class="number">12</td><td>    <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    </td></tr><tr><td class="number">15</td><td>    <span class="c">// Create a buffer for smoothness</span></td></tr><tr><td class="number">16</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">640</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    </td></tr><tr><td class="number">18</td><td>    <span class="c">// Load the datafile</span></td></tr><tr><td class="number">19</td><td>    <a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>data <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    data <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_datafile" target="_blank"><span class="a">load_datafile</span></a><span class="k2">(</span><span class="s">"data.dat"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    </td></tr><tr><td class="number">22</td><td>    <span class="c">// Error?</span></td></tr><tr><td class="number">23</td><td>    <span class="k1">if</span><span class="k2">(</span>data <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span></td></tr><tr><td class="number">24</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">25</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">27</td><td>    </td></tr><tr><td class="number">28</td><td>    <span class="k1">int</span> player_x,player_y<span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> player <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>data_player<span class="k2">]</span>.dat<span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> backgr <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>data_background<span class="k2">]</span>.dat<span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_330.html" target="_blank">floor</a>  <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>data_floor<span class="k2">]</span>.dat<span class="k2">;</span></td></tr><tr><td class="number">32</td><td>    </td></tr><tr><td class="number">33</td><td>    player_x<span class="k3">=</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a><span class="k3">/</span><span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>    player_y<span class="k3">=</span><a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k3">/</span><span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>    </td></tr><tr><td class="number">36</td><td>    <span class="c">// If the user doesent press escape, do something</span></td></tr><tr><td class="number">37</td><td>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">38</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">39</td><td>        <span class="c">// The movements, player can move left and right, but cannot</span></td></tr><tr><td class="number">40</td><td>        <span class="c">// move beyond the boundaries of the scree</span></td></tr><tr><td class="number">41</td><td>        </td></tr><tr><td class="number">42</td><td>        <span class="k1">int</span> FLOOR <span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a> <span class="k3">-</span> <span class="n">20</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>        <span class="k1">if</span><span class="k2">(</span>player_y <span class="k3">!</span><span class="k3">=</span> FLOOR<span class="k2">)</span></td></tr><tr><td class="number">44</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">45</td><td>            <span class="k1">while</span><span class="k2">(</span>player_y <span class="k3">&lt;</span> FLOOR<span class="k2">)</span></td></tr><tr><td class="number">46</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">47</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">48</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">49</td><td>                    player_x <span class="k3">=</span> player_x <span class="k3">+</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">51</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">52</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">53</td><td>                    player_x <span class="k3">=</span> player_x <span class="k3">-</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">55</td><td>                player_y <span class="k3">=</span> player_y <span class="k3">+</span> <span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>                <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, player, player_x, player_y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>                <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">59</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">60</td><td>        <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">61</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">62</td><td>            <span class="k1">while</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">63</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">64</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">65</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">66</td><td>                    player_x <span class="k3">=</span> player_x <span class="k3">+</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">68</td><td>                <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">69</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">70</td><td>                    player_x <span class="k3">=</span> player_x <span class="k3">-</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">72</td><td>                player_y <span class="k3">=</span> player_y <span class="k3">-</span> <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">73</td><td>                <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, player, player_x, player_y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">74</td><td>                <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">76</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">77</td><td>        <span class="c">// BORDERS</span></td></tr><tr><td class="number">78</td><td>        <span class="k1">if</span><span class="k2">(</span>player_x <span class="k3">=</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a> <span class="k3">-</span> <span class="n">20</span><span class="k2">)</span></td></tr><tr><td class="number">79</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">80</td><td>            player_x <span class="k3">=</span> player_x <span class="k3">-</span> <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">81</td><td>            <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">82</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">83</td><td>        <span class="k1">if</span><span class="k2">(</span>player_x <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">84</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">85</td><td>            player_x <span class="k3">=</span> player_x <span class="k3">+</span> <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">86</td><td>            <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">87</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">88</td><td>        <span class="k1">if</span><span class="k2">(</span>player_y <span class="k3">=</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a> <span class="k3">-</span> <span class="n">20</span><span class="k2">)</span></td></tr><tr><td class="number">89</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">90</td><td>            player_y <span class="k3">=</span> player_y <span class="k3">-</span> <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">91</td><td>            <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">92</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">93</td><td>        <span class="k1">if</span><span class="k2">(</span>player_y <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">94</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">95</td><td>            player_y <span class="k3">=</span> player_y <span class="k3">+</span> <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">96</td><td>            <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">97</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">98</td><td>                 <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">99</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">100</td><td>            player_x <span class="k3">=</span> player_x <span class="k3">+</span> <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>            <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">102</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">103</td><td>        <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">104</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">105</td><td>            player_x <span class="k3">=</span> player_x <span class="k3">-</span> <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">106</td><td>            <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">107</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">108</td><td>        <span class="c">/*if(key[KEY_UP])</span></td></tr><tr><td class="number">109</td><td><span class="c">        {</span></td></tr><tr><td class="number">110</td><td><span class="c">            player_y = player_y -2;</span></td></tr><tr><td class="number">111</td><td><span class="c">            rest(1);</span></td></tr><tr><td class="number">112</td><td><span class="c">        }</span></td></tr><tr><td class="number">113</td><td><span class="c">        if(key[KEY_DOWN])</span></td></tr><tr><td class="number">114</td><td><span class="c">        {</span></td></tr><tr><td class="number">115</td><td><span class="c">            player_y = player_y + 2;</span></td></tr><tr><td class="number">116</td><td><span class="c">            rest(1);</span></td></tr><tr><td class="number">117</td><td><span class="c">        }*/</span></td></tr><tr><td class="number">118</td><td>        <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, player, player_x,player_y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">119</td><td>        </td></tr><tr><td class="number">120</td><td>        <span class="c">// Draw the buffer to the screen</span></td></tr><tr><td class="number">121</td><td>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">640</span>,<span class="n">480</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">122</td><td>        <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>  <span class="c">// So it doesent draw, but move :)</span></td></tr><tr><td class="number">123</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">124</td><td>    <span class="c">// Destroy bitmaps and unloads datafiles</span></td></tr><tr><td class="number">125</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">126</td><td>    <a href="http://www.allegro.cc/manual/unload_datafile" target="_blank"><span class="a">unload_datafile</span></a><span class="k2">(</span>data<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">127</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">128</td><td><span class="k2">}</span></td></tr><tr><td class="number">129</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

If you compile it, you will se that you can move LEFT/RIGHT and jump. BUT when you jump and fall then there is a line drawn. Instead of a new cube each frame, the previous is still visible. Compile it and youll see what I mean. </p><p>What do to? I tried clear_bitmap(player); / clear_bitmap(screen); . I dont know what to do. And yeah, the background and the floor arent visible either! <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> I have included source and .data file!</p><p>Thanks in advance for the help! Im new in this, just trying out the basics! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vanneto)</author>
		<pubDate>Sat, 19 May 2007 15:52:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Doesn&#39;t compile:
</p><div class="source-code snippet"><div class="inner"><pre>move_char.cpp:3:23: error: data_file.h: No such file <span class="k1">or</span> directory
move_char.cpp: In function ‘<span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span>, <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span><span class="k3">*</span><span class="k2">)</span>’<span class="k2">:</span>
move_char.cpp:29: error: ‘data_player’ was <span class="k1">not</span> declared in <span class="k1">this</span> scope
move_char.cpp:30: error: ‘data_background’ was <span class="k1">not</span> declared in <span class="k1">this</span> scope
move_char.cpp:31: error: ‘data_floor’ was <span class="k1">not</span> declared in <span class="k1">this</span> scope
</pre></div></div><p>
Btw, very original way to use the rest function. Did you figure this out yourself or did someone tell you? Because it&#39;s wrong. You need to use timers instead.</p><p>As for your problem, you should read about double buffering again. Because you&#39;re not doing it right. You should draw the scene to the backbuffer and then blit that to the screen.</p><p>Also you should separate logic from drawing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Sat, 19 May 2007 16:51:41 +0000</pubDate>
	</item>
</rss>
