<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Dumb Newb</title>
		<link>http://www.allegro.cc/forums/view/589958</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 10 Feb 2007 04:55:31 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I started using Allegro (and...coding) a few days ago, and yesterday I was just messing around, and went to write a little snippet to make a pixel buzz around the screen at random.</p><p>It seemed real simple then, but I could never get it to work quite right.  It&#39;s been bugging me since then, and I can&#39;t figure it out.  What was meant to be a fun little nothing has turned into a headache.</p><p>It&#39;s not so much that I want this to work, as I want to know what I&#39;m messing up.  No matter what I do, it&#39;s always biased to a certain direction, and never makes any major turns.  I apologize in advance for all the weird, wrong, badly coded pieces of this source, but I&#39;m sure I&#39;m doing something fundamentally wrong when working with the random numbers.</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 &lt;time.h&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#include &lt;randomc.h&gt;</span></td></tr><tr><td class="number">5</td><td><span class="p">#include "mersenne.cpp"</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">int</span> rX, rY<span class="k2">;</span></td></tr><tr><td class="number">8</td><td><span class="k1">int</span> re <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td><span class="k1">int</span> x <span class="k3">=</span> <span class="n">400</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k1">int</span> y <span class="k3">=</span> <span class="n">300</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k1">int</span> chanceX <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td><span class="k1">int</span> chanceY <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</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></td></tr><tr><td class="number">15</td><td><span class="k2">{</span></td></tr><tr><td class="number">16</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></td></tr><tr><td class="number">17</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">18</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">800</span>, <span class="n">600</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">19</td><td>&#160;</td></tr><tr><td class="number">20</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">800</span>, <span class="n">600</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</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">23</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>      TRandomMersenne GrX<span class="k2">(</span>re<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>      TRandomMersenne GrY<span class="k2">(</span>re<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>      rX <span class="k3">=</span> GrX.IRandom<span class="k2">(</span><span class="n">1</span>,chanceX<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>      rY <span class="k3">=</span> GrY.IRandom<span class="k2">(</span><span class="n">1</span>,chanceY<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td>      <span class="k1">if</span><span class="k2">(</span> rX <span class="k3">&gt;</span> chanceX<span class="k3">/</span><span class="n">2</span> <span class="k2">)</span> <span class="k3">+</span><span class="k3">+</span>x<span class="k2">;</span></td></tr><tr><td class="number">31</td><td>      <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> rX <span class="k3">&lt;</span> chanceX <span class="k2">)</span> <span class="k3">-</span><span class="k3">-</span>x<span class="k2">;</span></td></tr><tr><td class="number">32</td><td>      <span class="k1">if</span><span class="k2">(</span> rY <span class="k3">&gt;</span> chanceY<span class="k3">/</span><span class="n">2</span> <span class="k2">)</span> <span class="k3">+</span><span class="k3">+</span>y<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>      <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span> rY <span class="k3">&lt;</span> chanceY <span class="k2">)</span> <span class="k3">-</span><span class="k3">-</span>y<span class="k2">;</span></td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td>      <span class="k1">if</span><span class="k2">(</span> x <span class="k3">&lt;</span> <span class="n">800</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> x <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">&lt;</span> <span class="n">600</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> y <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">36</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>, x, y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span><span class="k2">}</span></td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</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">10</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td>      <span class="k1">if</span><span class="k2">(</span> rY <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k1">if</span><span class="k2">(</span> rX <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> chanceX <span class="k3">=</span> chanceX <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>      <span class="k1">if</span><span class="k2">(</span> rX <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k1">if</span><span class="k2">(</span> rY <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> chanceY <span class="k3">=</span> chanceY <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>      <span class="k1">if</span><span class="k2">(</span> rY <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k1">if</span><span class="k2">(</span> rX <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> chanceX <span class="k3">=</span> chanceX <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>      <span class="k1">if</span><span class="k2">(</span> rX <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k1">if</span><span class="k2">(</span> rY <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> chanceY <span class="k3">=</span> chanceY <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td>      <span class="k3">+</span><span class="k3">+</span>re<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">return</span><span class="k2">(</span><span class="n">0</span><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><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>

Oh, and it&#39;d be awesome if someone could post the source of something like a pixel moving around the screen, making more...graceful (but still random) turns.  It&#39;s not exactly what I wanna do with this, but I&#39;ve been wondering about the best way to do that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cerpin Taxt)</author>
		<pubDate>Thu, 08 Feb 2007 04:47:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m not familiar with the functions you&#39;re using to generate random numbers, but I noticed this:
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span><span class="k2">(</span> rY <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k1">if</span><span class="k2">(</span> rX <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> chanceX <span class="k3">=</span> chanceX <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="k1">if</span><span class="k2">(</span> rX <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k1">if</span><span class="k2">(</span> rY <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> chanceY <span class="k3">=</span> chanceY <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="k1">if</span><span class="k2">(</span> rY <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k1">if</span><span class="k2">(</span> rX <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> chanceX <span class="k3">=</span> chanceX <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span>
<span class="k1">if</span><span class="k2">(</span> rX <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k1">if</span><span class="k2">(</span> rY <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> chanceY <span class="k3">=</span> chanceY <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span>
</pre></div></div><p>
</p></div></div><p>

This is identical to:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span><span class="k2">(</span><span class="k2">(</span> rY <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span> rX <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span><span class="k2">)</span> chanceX <span class="k3">=</span> chanceX <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="k1">if</span><span class="k2">(</span><span class="k2">(</span> rX <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span> rY <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span><span class="k2">)</span> chanceY <span class="k3">=</span> chanceY <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="k1">if</span><span class="k2">(</span><span class="k2">(</span> rY <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span> rX <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span><span class="k2">)</span> chanceX <span class="k3">=</span> chanceX <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span>
<span class="k1">if</span><span class="k2">(</span><span class="k2">(</span> rX <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span> rY <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span><span class="k2">)</span> chanceY <span class="k3">=</span> chanceY <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span>
</pre></div></div><p>

The first and fourth conditions are identical, as are the second and third, so this is the same as:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span><span class="k2">(</span><span class="k2">(</span> rY <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span> rX <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
    chanceX <span class="k3">+</span><span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
    chanceY <span class="k3">-</span><span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="k2">}</span>
<span class="k1">if</span><span class="k2">(</span><span class="k2">(</span> rX <span class="k3">!</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span> rY <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
    chanceY <span class="k3">+</span><span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
    chanceX <span class="k3">-</span><span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Which is a lot more readable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Thu, 08 Feb 2007 05:29:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you.</p><p>I know that the number generator and all that are just fine, and the problem is with the way I&#39;m handling the output.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cerpin Taxt)</author>
		<pubDate>Thu, 08 Feb 2007 05:42:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You are restarting a new number generator every 10ms, seeding it with 1, then 2, then 3, etc. -&gt; Every time you run the game, it will give the same series of results.</p><p>If that&#39;s not what you want, start the RNG once at the beginning of your program,  seeding it with the system time.<br />Seed the second RNG with a number taken from the first.</p><p>edit:<br />chanceX and chanceY start at 3, then you randomly apply +1 or -1 or +10 or -10, multiple times.<br />When they become negative, you&#39;ll have a hard time getting random numbers &gt;= 1 &amp;&amp; &lt;= -7</p><p>I think you should printf() the series of numbers you get, to check where the results are going.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Thu, 08 Feb 2007 05:43:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That was the first way I tried it, and for some reason, it would change random values veeeery slowly.  (maybe three times a second) The values it&#39;s generating are random enough for me (I tested them with scattering some random pixels before setting up the rest of the stuff).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cerpin Taxt)</author>
		<pubDate>Thu, 08 Feb 2007 05:51:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your avatar looks strangely familiar.</p><p>Anyway, try adding a random number between -x and x to the x and y values. Right now, it looks like you are just either moving by 10 1 or 0, which isn&#39;t very random.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Thu, 08 Feb 2007 05:59:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What I&#39;m working on fixing right now is the direction of movment.  I want the coordinates to be changed by 1 (or zero) because what I&#39;m trying to randomize is the direction of movement, not the length or distance of the movement.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cerpin Taxt)</author>
		<pubDate>Thu, 08 Feb 2007 06:01:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>one way to do it is like this:
</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="k1">int</span> x <span class="k3">=</span> <span class="n">400</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td><span class="k1">int</span> y <span class="k3">=</span> <span class="n">300</span><span class="k2">;</span></td></tr><tr><td class="number">3</td><td><span class="k1">int</span> dx <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="c">// horizontal direction</span></td></tr><tr><td class="number">4</td><td><span class="k1">int</span> dy <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// vertical direction</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">int</span> freq <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</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></td></tr><tr><td class="number">9</td><td><span class="k2">{</span></td></tr><tr><td class="number">10</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></td></tr><tr><td class="number">11</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">12</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">800</span>, <span class="n">600</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">13</td><td>&#160;</td></tr><tr><td class="number">14</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">15</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>     <span class="k1">if</span><span class="k2">(</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>%freq<span class="k3">=</span><span class="k3">=</span><span class="n">5</span><span class="k2">)</span> <span class="c">// probably a better way to do this part</span></td></tr><tr><td class="number">17</td><td>     <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>      <span class="k1">switch</span><span class="k2">(</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">4</span><span class="k2">)</span> <span class="c">// choose a random direction</span></td></tr><tr><td class="number">19</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">20</td><td>      <span class="k1">case</span> <span class="n">0</span><span class="k2">:</span></td></tr><tr><td class="number">21</td><td>       dx <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> dy <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span> <span class="c">// right</span></td></tr><tr><td class="number">22</td><td>      <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span></td></tr><tr><td class="number">23</td><td>       dx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> dy <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span> <span class="c">// down</span></td></tr><tr><td class="number">24</td><td>      <span class="k1">case</span> <span class="n">2</span><span class="k2">:</span></td></tr><tr><td class="number">25</td><td>       dx <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> dy <span class="k3">=</span><span class="n">0</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span> <span class="c">// left</span></td></tr><tr><td class="number">26</td><td>      <span class="k1">case</span> <span class="n">3</span><span class="k2">:</span></td></tr><tr><td class="number">27</td><td>       dx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> dy <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span> <span class="c">// up</span></td></tr><tr><td class="number">28</td><td>      default: <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">30</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">31</td><td>     x<span class="k3">+</span><span class="k3">=</span>dx<span class="k2">;</span></td></tr><tr><td class="number">32</td><td>     y<span class="k3">+</span><span class="k3">=</span>dy<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>     clear<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> <span class="c">// needs double buffering</span></td></tr><tr><td class="number">34</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>, x, y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</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">10</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">37</td><td>    <span class="k1">return</span><span class="k2">(</span><span class="n">0</span><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><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 (CosmicR)</author>
		<pubDate>Thu, 08 Feb 2007 06:43:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you very much.  That&#39;s pretty much what I had in mind.</p><p>That being said, for some reason, the movement from my original program looked more...organic(?), I think.  I was looking more for this type of movement than the very precise, very square movements.  I tried to find a way to influence the next movement by the previous one, so that there would be as little sharp, awkward movements as possible (doubt it worked).  If anyone could help me out with this, it would be greatly appreciated.</p><p>[EDIT]</p><p>I modified it a bit and and got pretty much what I wanted. Thank you very much!</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 &lt;time.h&gt;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="k1">int</span> x <span class="k3">=</span> <span class="n">400</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td><span class="k1">int</span> y <span class="k3">=</span> <span class="n">300</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td><span class="k1">int</span> dx <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="c">// horizontal direction</span></td></tr><tr><td class="number">8</td><td><span class="k1">int</span> dy <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// vertical direction</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td><span class="k1">int</span> freq <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</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></td></tr><tr><td class="number">13</td><td><span class="k2">{</span></td></tr><tr><td class="number">14</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></td></tr><tr><td class="number">15</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">16</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">800</span>, <span class="n">600</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">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></td></tr><tr><td class="number">19</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">20</td><td>     <span class="k1">if</span><span class="k2">(</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>%freq <span class="k3">&lt;</span> freq<span class="k2">)</span> <span class="c">// just tested it like this (easier than removing all of the loop)</span></td></tr><tr><td class="number">21</td><td>     <span class="k2">{</span></td></tr><tr><td class="number">22</td><td>      <span class="k1">switch</span><span class="k2">(</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">7</span><span class="k2">)</span> <span class="c">// choose a random direction</span></td></tr><tr><td class="number">23</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>      <span class="k1">case</span> <span class="n">0</span><span class="k2">:</span></td></tr><tr><td class="number">25</td><td>       dx <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> dy <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span> <span class="c">// right</span></td></tr><tr><td class="number">26</td><td>      <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span></td></tr><tr><td class="number">27</td><td>       dx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> dy <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span> <span class="c">// down</span></td></tr><tr><td class="number">28</td><td>      <span class="k1">case</span> <span class="n">2</span><span class="k2">:</span></td></tr><tr><td class="number">29</td><td>       dx <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> dy <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span> <span class="c">// left</span></td></tr><tr><td class="number">30</td><td>      <span class="k1">case</span> <span class="n">3</span><span class="k2">:</span></td></tr><tr><td class="number">31</td><td>       dx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> dy <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span> <span class="c">// up</span></td></tr><tr><td class="number">32</td><td>      <span class="k1">case</span> <span class="n">4</span><span class="k2">:</span></td></tr><tr><td class="number">33</td><td>       dx <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> dy <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>      <span class="k1">case</span> <span class="n">5</span><span class="k2">:</span></td></tr><tr><td class="number">35</td><td>       dx <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> dy <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>      <span class="k1">case</span> <span class="n">6</span><span class="k2">:</span></td></tr><tr><td class="number">37</td><td>       dx <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> dy <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>      default: <span class="k1">return</span><span class="k2">(</span><span class="n">0</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>     x<span class="k3">+</span><span class="k3">=</span>dx<span class="k2">;</span></td></tr><tr><td class="number">42</td><td>     y<span class="k3">+</span><span class="k3">=</span>dy<span class="k2">;</span></td></tr><tr><td class="number">43</td><td><span class="c">//   clear(screen); // needs double buffering</span></td></tr><tr><td class="number">44</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>, x, y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</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">10</span><span class="k2">)</span><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">return</span><span class="k2">(</span><span class="n">0</span><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><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]
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cerpin Taxt)</author>
		<pubDate>Thu, 08 Feb 2007 07:02:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Then use floats for coordinates, for dx and for dy.(fixed are fine, but usually not popular)<br />And instead of replacing dx and dy, add or substract a small number to it.
</p><div class="source-code snippet"><div class="inner"><pre>     <span class="k1">case</span> <span class="n">3</span><span class="k2">:</span>
       dx <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span> dy <span class="k3">+</span><span class="k3">=</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span> <span class="c">// up</span>
      <span class="k1">case</span> <span class="n">4</span><span class="k2">:</span>
       dx <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">35</span><span class="k2">;</span> dy <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">35</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span>
</pre></div></div><p>

Better put some limits to stop it from becoming too fast:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span>dx <span class="k3">&gt;</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span>
   dx <span class="k3">=</span> <span class="n">2</span>.<span class="n">0</span><span class="k2">;</span>
<span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>dx <span class="k3">&lt;</span> <span class="k3">-</span><span class="n">2</span>.<span class="n">0</span><span class="k2">)</span>
   dx <span class="k3">=</span> <span class="k3">-</span><span class="n">2</span>.<span class="n">0</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Thu, 08 Feb 2007 07:53:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just to put in my two cents (and didn&#39;t read the whole thread), from what I can tell the above methods are for just random movement.  Rarely ever is this sort of movement implemented on some kind of object.  Take for example if you applied the above on a NPC in like an RPG type game, the character would appear to be having a ceasure (sp?).  A more practical method is to determine a &quot;step&quot; value when you randomly decide the direction.  For each movement, you decrease the &quot;step&quot; value.  However, you do not allow a new direction until the &quot;step&quot; is less than 0.  Now, it appears the object is moving towards a path, when in fact, it is still just as random.  </p><p>Once again, my two cents.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Your avatar looks strangely familiar.
</p></div></div><p>
It&#39;s almost identical to Kibizor&#39;s (sp?)!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Onewing)</author>
		<pubDate>Thu, 08 Feb 2007 23:06:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
It&#39;s almost identical to Kibizor&#39;s (sp?)!
</p></div></div><p>
 <br />Indeed...</p><p>Kibiz0r&#39;s: <img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/8/4/84b3cd89a9e89c48622bf43f383c09da.png" alt="6203.png" width="80" height="80" /></p><p>Cerpin Taxt&#39;s: <img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/a/e/aed3917f6f50d1a4f932404e55abf214.gif" alt="8304.gif" width="80" height="80" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Thu, 08 Feb 2007 23:14:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>They probably can keep their avatars, since they are crawling at the same direction and never will collide and wipe out each other.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Thu, 08 Feb 2007 23:55:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What is that avatar inspired by?</p><p>Kibiz0r, is it you?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Fri, 09 Feb 2007 09:32:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I hope I&#39;m not divulging some massive secret here, but it&#39;s a &#39;glider&#39; from Conway&#39;s Game of Life.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cerpin Taxt)</author>
		<pubDate>Sat, 10 Feb 2007 04:35:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s also considered the Hacker Emblem by some. Not in the &quot;break into a computer&quot; sense of the word, but rather the &quot;very skilled with computers&quot; sense.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jakub Wasilewski)</author>
		<pubDate>Sat, 10 Feb 2007 04:55:31 +0000</pubDate>
	</item>
</rss>
