<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>need help with simple effect</title>
		<link>http://www.allegro.cc/forums/view/586333</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 07 Jul 2006 13:11:02 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i got this code from a hugi article and im trying to change it a little bit to make the snow pile up
</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 "allegro.h"   </span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="c">// data structures for snow flaxes = very simple</span></td></tr><tr><td class="number">6</td><td><span class="k1">const</span> <span class="k1">int</span> total_flakes<span class="k3">=</span><span class="n">900</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td><span class="k1">const</span> <span class="k1">int</span> total_layers<span class="k3">=</span><span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><span class="k1">struct</span> particle</td></tr><tr><td class="number">10</td><td><span class="k2">{</span></td></tr><tr><td class="number">11</td><td>    <span class="k1">int</span> x,y<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    <span class="k1">int</span> layer<span class="k2">;</span></td></tr><tr><td class="number">13</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td><span class="c">// global data - okay for a simple example like this</span></td></tr><tr><td class="number">16</td><td>particle flakes<span class="k2">[</span>total_flakes<span class="k2">]</span><span class="k2">;</span>   </td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td><span class="c">// This function initalizes the particle flakes</span></td></tr><tr><td class="number">19</td><td><span class="k1">void</span> initalize_particle_flakes<span class="k2">(</span><span class="k1">void</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>    <span class="k1">int</span> i<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>total_flakes<span class="k2">;</span>i<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>        flakes<span class="k3">&lt;</span>i&gt;.x<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">320</span><span class="k2">;</span> <span class="c">// 0-319 [x]</span></td></tr><tr><td class="number">25</td><td>        flakes<span class="k3">&lt;</span>i&gt;.y<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">200</span><span class="k2">;</span> <span class="c">// 0-199 [y]</span></td></tr><tr><td class="number">26</td><td>        flakes<span class="k3">&lt;</span>i&gt;.layer<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%total_layers<span class="k2">;</span><span class="c">// [0-2] [layer]</span></td></tr><tr><td class="number">27</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">28</td><td><span class="k2">}</span></td></tr><tr><td class="number">29</td><td> </td></tr><tr><td class="number">30</td><td><span class="c">// This function draws all the particle flakes</span></td></tr><tr><td class="number">31</td><td><span class="k1">void</span> draw_particle_flakes<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">32</td><td><span class="k2">{</span></td></tr><tr><td class="number">33</td><td>    <span class="k1">int</span> i<span class="k2">;</span></td></tr><tr><td class="number">34</td><td>    <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>total_flakes<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">35</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">36</td><td>        <span class="c">// note - we are drawing according to the color scale</span></td></tr><tr><td class="number">37</td><td>        <a href="http://www.allegro.cc/manual/_putpixel" target="_blank"><span class="a">_putpixel</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, flakes<span class="k3">&lt;</span>i&gt;.x, flakes<span class="k3">&lt;</span>i&gt;.y, </td></tr><tr><td class="number">38</td><td>                  flakes<span class="k3">&lt;</span>i&gt;.layer<span class="k3">*</span><span class="n">5</span><span class="k3">+</span><span class="n">20</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">40</td><td><span class="k2">}</span></td></tr><tr><td class="number">41</td><td> </td></tr><tr><td class="number">42</td><td><span class="c">// This updates the particle flakes</span></td></tr><tr><td class="number">43</td><td><span class="k1">void</span> update_particle_flakes<span class="k2">(</span><span class="k1">void</span><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">int</span> i<span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>total_flakes<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">47</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">48</td><td>        <span class="c">// drop the particle down - depending on layer</span></td></tr><tr><td class="number">49</td><td>        <span class="c">// [plus one - since layer zero would result </span></td></tr><tr><td class="number">50</td><td>        <span class="c">// in no motion otherwize]</span></td></tr><tr><td class="number">51</td><td>        flakes<span class="k3">&lt;</span>i&gt;.y<span class="k3">+</span><span class="k3">=</span>flakes<span class="k3">&lt;</span>i&gt;.layer<span class="k3">+</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td> </td></tr><tr><td class="number">53</td><td>        <span class="c">// check for wrap around</span></td></tr><tr><td class="number">54</td><td>        <span class="k1">if</span> <span class="k2">(</span>flakes<span class="k3">&lt;</span>i&gt;.y&gt;199<span class="k2">)</span></td></tr><tr><td class="number">55</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">56</td><td>                flakes<span class="k3">&lt;</span>i&gt;.x<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">320</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>                flakes<span class="k3">&lt;</span>i&gt;.y<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>                flakes<span class="k3">&lt;</span>i&gt;.layer<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%total_layers<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> </td></tr><tr><td class="number">61</td><td>        <span class="c">// new x position        </span></td></tr><tr><td class="number">62</td><td>        flakes<span class="k3">&lt;</span>i&gt;.x<span class="k3">=</span><span class="k2">(</span>flakes<span class="k3">&lt;</span>i&gt;.x<span class="k3">+</span><span class="k2">(</span><span class="n">2</span><span class="k3">-</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">5</span><span class="k2">)</span><span class="k2">)</span> % <span class="n">320</span><span class="k2">;</span>   </td></tr><tr><td class="number">63</td><td>&#160;</td></tr><tr><td class="number">64</td><td>    <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> </td></tr><tr><td class="number">67</td><td><span class="c">// main program</span></td></tr><tr><td class="number">68</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>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>         </td></tr><tr><td class="number">69</td><td>            <span class="k1">int</span> i<span class="k2">;</span></td></tr><tr><td class="number">70</td><td>            </td></tr><tr><td class="number">71</td><td>            <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="k2">;</span>        <span class="c">// init Allegro </span></td></tr><tr><td class="number">72</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>    <span class="c">// setup allegro keyboard</span></td></tr><tr><td class="number">73</td><td>            </td></tr><tr><td class="number">74</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">8</span><span class="k2">)</span> <span class="k2">;</span>   <span class="c">// 8 bit colour</span></td></tr><tr><td class="number">75</td><td>            <span class="k1">if</span> <span class="k2">(</span><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_FULLSCREEN, </td></tr><tr><td class="number">76</td><td>                <span class="n">320</span>, <span class="n">200</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k3">&lt;</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">77</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">78</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">79</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">"Failure to init video mode!\n%s\n"</span>, </td></tr><tr><td class="number">80</td><td>                                 <a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">81</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">82</td><td>            initalize_particle_flakes<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>      </td></tr><tr><td class="number">83</td><td>            </td></tr><tr><td class="number">84</td><td>            <span class="k1">while</span> <span class="k2">(</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="k3">&amp;</span><span class="k3">&amp;</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_SPACE<span class="k2">]</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">85</td><td>                  update_particle_flakes<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">86</td><td>          <a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// you might want to add another vsynch; </span></td></tr><tr><td class="number">87</td><td>                   <span class="c">// depending how fast</span></td></tr><tr><td class="number">88</td><td>          <a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>     <span class="c">//things are moving on your box</span></td></tr><tr><td class="number">89</td><td>          <a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">90</td><td>          </td></tr><tr><td class="number">91</td><td>          <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span>   </td></tr><tr><td class="number">92</td><td>          draw_particle_flakes<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">93</td><td>    <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">94</td><td> </td></tr><tr><td class="number">95</td><td>            <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>     </td></tr><tr><td class="number">96</td><td><span class="k2">}</span>     </td></tr><tr><td class="number">97</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>

the only thing i have thought of is maybe something like this but i tryed it and it just made some dynamic snow on the bottom    <br />        </p><div class="source-code snippet"><div class="inner"><pre>        <span class="k1">int</span> pixx,xs,xpile,ypile
        pixx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
        pixx <span class="k3">=</span> <a href="http://www.allegro.cc/manual/_getpixel" target="_blank"><span class="a">_getpixel</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, xs<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%xpile, ypile<span class="k2">)</span><span class="k2">;</span>
        <span class="k1">if</span> <span class="k2">(</span>pixx <span class="k3">&lt;</span> <span class="n">1</span><span class="k2">)</span>
       <a href="http://www.allegro.cc/manual/_putpixel" target="_blank"><span class="a">_putpixel</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, xs, ypile, layers<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">3</span><span class="k3">*</span><span class="n">5</span><span class="k3">+</span><span class="n">20</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

i am a newbie coder and a newbie to allegro but any advice would be great!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (matt reynolds)</author>
		<pubDate>Fri, 07 Jul 2006 12:30:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What do you want to do? particles(like fireworks?)? </p><p>[edit] if so, this thread may help you.<br /><a href="http://www.allegro.cc/forums/thread/415131">http://www.allegro.cc/forums/thread/415131</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (anto80)</author>
		<pubDate>Fri, 07 Jul 2006 12:54:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><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 "allegro.h"   </span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="c">// data structures for snow flaxes = very simple</span></td></tr><tr><td class="number">6</td><td><span class="k1">const</span> <span class="k1">int</span> total_flakes<span class="k3">=</span><span class="n">900</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td><span class="k1">const</span> <span class="k1">int</span> total_layers<span class="k3">=</span><span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><span class="k1">struct</span> particle</td></tr><tr><td class="number">10</td><td><span class="k2">{</span></td></tr><tr><td class="number">11</td><td>    <span class="k1">float</span> x,y<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    <span class="k1">int</span> layer<span class="k2">;</span></td></tr><tr><td class="number">13</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</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="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><span class="k1">volatile</span> <span class="k1">int</span> Counter<span class="k2">;</span></td></tr><tr><td class="number">18</td><td><span class="k1">void</span> IncreaseCounter<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span> Counter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td><span class="c">// global data - okay for a simple example like this</span></td></tr><tr><td class="number">21</td><td>particle flakes<span class="k2">[</span>total_flakes<span class="k2">]</span><span class="k2">;</span>   </td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td><span class="c">// This function initalizes the particle flakes</span></td></tr><tr><td class="number">24</td><td><span class="k1">void</span> initalize_particle_flakes<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">25</td><td><span class="k2">{</span></td></tr><tr><td class="number">26</td><td>    <span class="k1">int</span> i<span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>total_flakes<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">28</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">29</td><td>        flakes<span class="k3">&lt;</span>i&gt;.x<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">320</span><span class="k2">;</span> <span class="c">// 0-319 [x]</span></td></tr><tr><td class="number">30</td><td>        flakes<span class="k3">&lt;</span>i&gt;.y<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">200</span><span class="k2">;</span> <span class="c">// 0-199 [y]</span></td></tr><tr><td class="number">31</td><td>        flakes<span class="k3">&lt;</span>i&gt;.layer<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%total_layers<span class="k2">;</span><span class="c">// [0-2] [layer]</span></td></tr><tr><td class="number">32</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">33</td><td><span class="k2">}</span></td></tr><tr><td class="number">34</td><td> </td></tr><tr><td class="number">35</td><td><span class="c">// This function draws all the particle flakes</span></td></tr><tr><td class="number">36</td><td><span class="k1">void</span> draw_particle_flakes<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">37</td><td><span class="k2">{</span></td></tr><tr><td class="number">38</td><td>    <span class="k1">int</span> i<span class="k2">;</span></td></tr><tr><td class="number">39</td><td>    <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>total_flakes<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">40</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">41</td><td>        <span class="c">// note - we are drawing according to the color scale</span></td></tr><tr><td class="number">42</td><td>        <a href="http://www.allegro.cc/manual/_putpixel" target="_blank"><span class="a">_putpixel</span></a><span class="k2">(</span>buffer, <span class="k1">int</span><span class="k2">(</span>flakes<span class="k3">&lt;</span>i&gt;.x<span class="k2">)</span>, <span class="k1">int</span><span class="k2">(</span>flakes<span class="k3">&lt;</span>i&gt;.y<span class="k2">)</span>, </td></tr><tr><td class="number">43</td><td>                  flakes<span class="k3">&lt;</span>i&gt;.layer<span class="k3">*</span><span class="n">5</span><span class="k3">+</span><span class="n">20</span><span class="k2">)</span><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="k2">}</span></td></tr><tr><td class="number">46</td><td> </td></tr><tr><td class="number">47</td><td><span class="c">// This updates the particle flakes</span></td></tr><tr><td class="number">48</td><td><span class="k1">void</span> update_particle_flakes<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">49</td><td><span class="k2">{</span></td></tr><tr><td class="number">50</td><td>    <span class="k1">int</span> i<span class="k2">;</span></td></tr><tr><td class="number">51</td><td>    <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>total_flakes<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</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>        <span class="c">// check for wrap around</span></td></tr><tr><td class="number">54</td><td>        <span class="k1">if</span> <span class="k2">(</span>flakes<span class="k3">&lt;</span>i&gt;.y<span class="k3">&lt;</span>SCREEN_H-2 <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/_getpixel" target="_blank"><span class="a">_getpixel</span></a><span class="k2">(</span>buffer, <span class="k1">int</span><span class="k2">(</span>flakes<span class="k3">&lt;</span>i&gt;.x<span class="k2">)</span>, <span class="k1">int</span><span class="k2">(</span>flakes<span class="k3">&lt;</span>i&gt;.y<span class="k3">+</span><span class="n">1</span><span class="k2">)</span><span class="k2">)</span><span class="k3">!</span><span class="k3">=</span>flakes<span class="k3">&lt;</span>i&gt;.layer<span class="k3">*</span><span class="n">5</span><span class="k3">+</span><span class="n">20</span><span class="k2">)</span></td></tr><tr><td class="number">55</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">56</td><td>  <span class="k1">if</span> <span class="k2">(</span>flakes<span class="k3">&lt;</span>i&gt;.y&gt;199<span class="k2">)</span></td></tr><tr><td class="number">57</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">58</td><td>            flakes<span class="k3">&lt;</span>i&gt;.x<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">320</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>            flakes<span class="k3">&lt;</span>i&gt;.y<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>            flakes<span class="k3">&lt;</span>i&gt;.layer<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%total_layers<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>  flakes<span class="k3">&lt;</span>i&gt;.x<span class="k3">=</span><span class="k2">(</span><span class="k1">int</span><span class="k2">(</span>flakes<span class="k3">&lt;</span>i&gt;.x<span class="k2">)</span><span class="k3">+</span><span class="k2">(</span><span class="n">2</span><span class="k3">-</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">5</span><span class="k2">)</span><span class="k2">)</span> % <span class="n">320</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>  flakes<span class="k3">&lt;</span>i&gt;.y<span class="k3">+</span><span class="k3">=</span>flakes<span class="k3">&lt;</span>i&gt;.layer<span class="k3">*</span><span class="n">0</span>.<span class="n">1</span><span class="k3">+</span><span class="n">0</span>.<span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">65</td><td>&#160;</td></tr><tr><td class="number">66</td><td>    <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>&#160;</td></tr><tr><td class="number">69</td><td><span class="c">// main program</span></td></tr><tr><td class="number">70</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>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>         </td></tr><tr><td class="number">71</td><td>            <span class="k1">int</span> i<span class="k2">;</span></td></tr><tr><td class="number">72</td><td>            </td></tr><tr><td class="number">73</td><td>            <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="k2">;</span>        <span class="c">// init Allegro </span></td></tr><tr><td class="number">74</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>    <span class="c">// setup allegro keyboard</span></td></tr><tr><td class="number">75</td><td>            <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">76</td><td>            </td></tr><tr><td class="number">77</td><td>      <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>Counter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">78</td><td>      <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>IncreaseCounter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td>      <a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a><span class="k2">(</span>IncreaseCounter, BPS_TO_TIMER<span class="k2">(</span><span class="n">60</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td>            </td></tr><tr><td class="number">81</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">8</span><span class="k2">)</span> <span class="k2">;</span>   <span class="c">// 8 bit colour</span></td></tr><tr><td class="number">82</td><td>            <span class="k1">if</span> <span class="k2">(</span><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_WINDOWED, </td></tr><tr><td class="number">83</td><td>                <span class="n">320</span>, <span class="n">200</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k3">&lt;</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>                <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">86</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">"Failure to init video mode!\n%s\n"</span>, </td></tr><tr><td class="number">87</td><td>                                 <a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">89</td><td>            initalize_particle_flakes<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>      </td></tr><tr><td class="number">90</td><td>            </td></tr><tr><td class="number">91</td><td>      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><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">92</td><td>      clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">93</td><td>            </td></tr><tr><td class="number">94</td><td>            <span class="k1">while</span> <span class="k2">(</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="k3">&amp;</span><span class="k3">&amp;</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_SPACE<span class="k2">]</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">95</td><td>      <span class="k1">while</span> <span class="k2">(</span>Counter&gt;0<span class="k2">)</span></td></tr><tr><td class="number">96</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">97</td><td>    update_particle_flakes<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">98</td><td>    Counter--<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>            clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>            draw_particle_flakes<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">102</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>, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">103</td><td>    <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">104</td><td> </td></tr><tr><td class="number">105</td><td>            <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>     </td></tr><tr><td class="number">106</td><td><span class="k2">}</span>     </td></tr><tr><td class="number">107</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>
That should do it. The particles pile up and lie on the bottom of the screen.</p><p>- Use <b>timers</b> and <b>floats</b> instead of vsync<br />- Use that double buffer, don&#39;t draw directly to the screen, makes things flicker
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CursedTyrant)</author>
		<pubDate>Fri, 07 Jul 2006 13:03:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>thanks for the help...<br />wow you cleaned that code up nicley its so much more understandable like that<br />there is a few new functions and etc you introduced in there i will have to lookup but <br />for the most part i understand it
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (matt reynolds)</author>
		<pubDate>Fri, 07 Jul 2006 13:11:02 +0000</pubDate>
	</item>
</rss>
