<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Animation on background</title>
		<link>http://www.allegro.cc/forums/view/586066</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 24 Jun 2006 21:19:59 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I made animation but I want to do this animation on background picture.<br />but now I have black cube and not transperent in the animation background.
</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">//  BITMAP *First_Pic = load_bitmap("C:/Dev-Cpp/Pic/Char.bmp", NULL);</span></td></tr><tr><td class="number">2</td><td> <span class="c">//   masked_blit(First_Pic, screen, 0, 0, 175, 72,First_Pic-&gt;w, First_Pic-&gt;h);</span></td></tr><tr><td class="number">3</td><td> <span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span>,frame<span class="k3">=</span><span class="n">0</span>,f<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    <a href="http://www.allegro.cc/manual/DATAFILE" target="_blank"><span class="a">DATAFILE</span></a> <span class="k3">*</span>A <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">"Anim.dat"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>    <span class="c">// Check that the datafile was created correctly</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">if</span><span class="k2">(</span>A <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span></td></tr><tr><td class="number">7</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">8</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_TEXT,<span class="n">0</span>,<span class="n">0</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">9</td><td>     <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Could not load datafile!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</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">11</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">12</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>Sec_Pic, <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">144</span>, <span class="n">44</span>,Sec_Pic-&gt;w, Sec_Pic-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</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="c">// Keep going until we hit escape.</span></td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>   <span class="k1">while</span><span class="k2">(</span>speed_counter <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="c">// Do the logic loop while the speed counter is &gt; 0.</span></td></tr><tr><td class="number">16</td><td>   <span class="k2">{</span></td></tr><tr><td class="number">17</td><td>     <span class="k1">if</span><span class="k2">(</span>x<span class="k3">=</span><span class="k3">=</span><span class="n">7</span><span class="k2">)</span></td></tr><tr><td class="number">18</td><td>      x<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>     <span class="k1">if</span><span class="k2">(</span>frame<span class="k3">=</span><span class="k3">=</span>f<span class="k3">+</span><span class="n">5</span><span class="k2">)</span></td></tr><tr><td class="number">20</td><td>     <span class="k2">{</span></td></tr><tr><td class="number">21</td><td>      f<span class="k3">=</span>f<span class="k3">+</span><span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>      x<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>     <span class="k2">}</span>    </td></tr><tr><td class="number">24</td><td>     frame<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>             </td></tr><tr><td class="number">25</td><td>     speed_counter <span class="k3">-</span><span class="k3">-</span><span class="k2">;</span> <span class="c">// Decrement the speed counter.</span></td></tr><tr><td class="number">26</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">27</td><td> <span class="k1">if</span><span class="k2">(</span>frame<span class="k3">&lt;</span>f<span class="k3">+</span><span class="n">5</span><span class="k2">)</span></td></tr><tr><td class="number">28</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, <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>A<span class="k2">[</span>x<span class="k2">]</span>.dat, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>  <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_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">175</span>, <span class="n">72</span>, buffer-&gt;w, buffer-&gt;h<span class="k2">)</span><span class="k2">;</span><span class="c">//Blit the buffer</span></td></tr><tr><td class="number">30</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 buffer</span></td></tr><tr><td class="number">31</td><td><span class="k2">}</span>   </td></tr><tr><td class="number">32</td><td>    <span class="c">//draw_sprite(screen, (BITMAP*)A[7].dat, 40, 40);</span></td></tr><tr><td class="number">33</td><td>  <span class="c">//  readkey();// Wait untill a key is pressed</span></td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</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">36</td><td>    <a href="http://www.allegro.cc/manual/unload_datafile" target="_blank"><span class="a">unload_datafile</span></a><span class="k2">(</span>A<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>  <span class="c">//destroy_bitmap(First_Pic); </span></td></tr><tr><td class="number">38</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>Sec_Pic<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>    </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>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (qqq m)</author>
		<pubDate>Sat, 24 Jun 2006 01:52:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Please, put [ code ] and [ /code ] tags around your code (without the spaces).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Indeterminatus)</author>
		<pubDate>Sat, 24 Jun 2006 01:55:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>[code] and [/code]
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sat, 24 Jun 2006 02:32:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>A few notes on your code:
</p><div class="source-code snippet"><div class="inner"><pre> <span class="k1">if</span><span class="k2">(</span>frame<span class="k3">&lt;</span>f<span class="k3">+</span><span class="n">5</span><span class="k2">)</span>
  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, <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>A<span class="k2">[</span>x<span class="k2">]</span>.dat, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_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">175</span>, <span class="n">72</span>, buffer-&gt;w, buffer-&gt;h<span class="k2">)</span><span class="k2">;</span><span class="c">//Blit the buffer</span>
  <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 buffer</span>
</pre></div></div><p>

It looks like you want some brackets for that if statement, depending on the speed that speed_counter is incremented it looks like the picture should flicker a lot or even not appear at all.  Heres the code with some brackets.
</p><div class="source-code snippet"><div class="inner"><pre> <span class="k1">if</span><span class="k2">(</span>frame<span class="k3">&lt;</span>f<span class="k3">+</span><span class="n">5</span><span class="k2">)</span> <span class="k2">{</span>
  
  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, <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>A<span class="k2">[</span>x<span class="k2">]</span>.dat, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_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">175</span>, <span class="n">72</span>, buffer-&gt;w, buffer-&gt;h<span class="k2">)</span><span class="k2">;</span><span class="c">//Blit the buffer</span>
  <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 buffer</span>
 <span class="k2">}</span>
</pre></div></div><p>

You probably want to call the &#39;blit&#39; function instead of the &#39;masked_blit&#39; function.  Unless you&#39;re doing some crazy effect with your buffer, you can make your game run make faster and respond more smoothly by replacing it with a blit.  Heres how I would write the chunk of code you wrote:
</p><div class="source-code snippet"><div class="inner"><pre> <span class="k1">if</span><span class="k2">(</span>frame<span class="k3">&lt;</span>f<span class="k3">+</span><span class="n">5</span><span class="k2">)</span> <span class="k2">{</span>
  
  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, <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>A<span class="k2">[</span>x<span class="k2">]</span>.dat, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
  <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">175</span>, <span class="n">72</span>, buffer-&gt;w, buffer-&gt;h<span class="k2">)</span><span class="k2">;</span><span class="c">//Blit the buffer</span>
  <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 buffer</span>
 <span class="k2">}</span>
</pre></div></div><p>

You also probably want to blit the buffer to the screen at 0,0.  Heres the final code:
</p><div class="source-code snippet"><div class="inner"><pre> <span class="k1">if</span><span class="k2">(</span>frame<span class="k3">&lt;</span>f<span class="k3">+</span><span class="n">5</span><span class="k2">)</span> <span class="k2">{</span>
  
  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, <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>A<span class="k2">[</span>x<span class="k2">]</span>.dat, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
  <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>, buffer-&gt;w, buffer-&gt;h<span class="k2">)</span><span class="k2">;</span><span class="c">//Blit the buffer</span>
  <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 buffer</span>
 <span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Sat, 24 Jun 2006 09:17:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ty for fixed my program but you still didnt answer my question<br />how can I do the animation without disturbing the background ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (qqq m)</author>
		<pubDate>Sat, 24 Jun 2006 17:58:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
ty for fixed my program but you still didnt answer my question
</p></div></div><p>

Nobody answered your question because you didn&#39;t ask a question.</p><p>Neither your original comments, nor your code snippet make it clear what you are really trying to do, or what the problem is.  If you want help, you need to help others by clearly describing the problem, and what you are trying to achieve.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Sat, 24 Jun 2006 20:57:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can&#39;t. You have to reblit the background to the buffer each loop, before you draw the appropriate frame of the animation.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sat, 24 Jun 2006 21:19:59 +0000</pubDate>
	</item>
</rss>
