<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Why can&#39;t I draw sprites to the screen?</title>
		<link>http://www.allegro.cc/forums/view/591406</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 17 May 2007 01:08:21 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I simply don&#39;t get this. Whenever I run this the game just freezes and i have to use ctrl-alt-delete to end the task. the draw_sprite line is what freezes the game. if i use the commented out draw_rectangle, then it works but isnt the sprite i want.</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="c">// p_ =&gt; player variable</span></td></tr><tr><td class="number">2</td><td><span class="k1">int</span> p_x <span class="k3">=</span> <span class="n">0</span>, <span class="c">// current x</span></td></tr><tr><td class="number">3</td><td>    p_y <span class="k3">=</span> <span class="n">0</span>, <span class="c">// current y</span></td></tr><tr><td class="number">4</td><td>    p_lx <span class="k3">=</span> <span class="n">0</span>, <span class="c">// last x</span></td></tr><tr><td class="number">5</td><td>    p_ly <span class="k3">=</span> <span class="n">0</span>, <span class="c">// last y</span></td></tr><tr><td class="number">6</td><td>    p_dir <span class="k3">=</span> <span class="n">0</span>, <span class="c">// 0 =&gt; left, 1 =&gt; right</span></td></tr><tr><td class="number">7</td><td>    tile_size <span class="k3">=</span> <span class="n">32</span>,</td></tr><tr><td class="number">8</td><td>    game_speed <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</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> NULL<span class="k2">;</span></td></tr><tr><td class="number">11</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>img_player <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"img\character.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>    init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    <span class="c">//draw();   </span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</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><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>    </td></tr><tr><td class="number">20</td><td>        handle_input<span class="k2">(</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>        <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>        <a href="http://www.allegro.cc/manual/acquire_screen" target="_blank"><span class="a">acquire_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>        <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span> buffer, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>        <span class="c">// draw player</span></td></tr><tr><td class="number">27</td><td>        <span class="c">//rectfill( buffer, (p_x*tile_size), (p_y*tile_size), ((p_x*tile_size)+tile_size), ((p_y*tile_size)+tile_size), makecol( 255, 255, 255) );</span></td></tr><tr><td class="number">28</td><td>        <span class="c">//blit(img_player, buffer, (p_x*tile_size),(p_y*tile_size),(p_x*tile_size),(p_y*tile_size),((p_x*tile_size)+tile_size),((p_y*tile_size)+tile_size));</span></td></tr><tr><td class="number">29</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, img_player, <span class="k2">(</span>p_x<span class="k3">*</span>tile_size<span class="k2">)</span>, <span class="k2">(</span>p_y<span class="k3">*</span>tile_size<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>        </td></tr><tr><td class="number">31</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><span class="c">//Draw the buffer to the screen</span></td></tr><tr><td class="number">32</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">// Clear the contents of the buffer bitmap</span></td></tr><tr><td class="number">33</td><td>        </td></tr><tr><td class="number">34</td><td>        <a href="http://www.allegro.cc/manual/release_screen" target="_blank"><span class="a">release_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>        </td></tr><tr><td class="number">36</td><td>        <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span>game_speed<span class="k2">)</span><span class="k2">;</span> <span class="c">// pause to slow down game to a playable rate</span></td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td>    <span class="k2">}</span>    </td></tr><tr><td class="number">39</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> <span class="c">// Release the bitmap data </span></td></tr><tr><td class="number">40</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span> </td></tr><tr><td class="number">41</td><td><span class="k2">}</span></td></tr><tr><td class="number">42</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>

EDIT: it should be noted that after isolating the problem, i deleted code so you guys dont need to sort through any excess..</p><p>EDIT2: just saw a similar thread suggesting i check to make sure the image is being loaded... I will do that now.</p><p>EDIT3: ok, well I&#39;ve triple-checked that all filenames are right.. I don&#39;t understand why it cant load the image... do i need to change the &quot;working directory&quot; of the program? how do i do this... its in img/character.bmp relative to the executable compiled... argh!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cameron)</author>
		<pubDate>Wed, 16 May 2007 02:01:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Is:<br /><span class="source-code"><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>img_player <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"img\character.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></span><br />In a function? Is it called? If not, it won&#39;t work.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Wed, 16 May 2007 02:03:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>yes and yes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cameron)</author>
		<pubDate>Wed, 16 May 2007 02:12:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
So, next add error checking to make sure the image is correctly loaded.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Wed, 16 May 2007 02:13:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i did. its not being correctly loaded but its in the right spot.. check my original post edits.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cameron)</author>
		<pubDate>Wed, 16 May 2007 02:14:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, expected behaviour is, that at [0;0] your image get shown. I don&#39;t see any problem with the code. As RP pointed out, try checking if the bitmap was loaded correctly. Oh even try to draw the sprite directly onto the screen (don&#39;t forget to comment out blitting buffer).</p><p>On a sidenote I think that clearing the buffer after the blitting isn&#39;t necessary, especially when you&#39;re clearing it before drawing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (OICW)</author>
		<pubDate>Wed, 16 May 2007 02:26:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If that is in a function, we&#39;re obviously not seeing the <i>real</i> code. Show us that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Wed, 16 May 2007 03:01:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>fixed. apparently i cant place images outside of the folder the executable is in...</p><p>whatever, works. thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cameron)</author>
		<pubDate>Wed, 16 May 2007 03:01:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can place them in subdirectories, but you have to use proper filenames and dividers between.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (OICW)</author>
		<pubDate>Wed, 16 May 2007 12:39:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>For future reference, when you include code, include all relevant code. I know I&#39;m bad about including code myself, but when I do I make sure everything someone needs to answer my question is there. You really should have posted your init() function. But since you solved the problem it&#39;s OK this time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Black)</author>
		<pubDate>Wed, 16 May 2007 17:46:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You want img\\character.bmp, or better yet, img/character.bmp.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Thu, 17 May 2007 01:08:21 +0000</pubDate>
	</item>
</rss>
