<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Int to (float)</title>
		<link>http://www.allegro.cc/forums/view/490129</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 15 May 2005 04:56:45 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, basically my setup is a blood engine, and when a bullet hits a character, the program runs a quick for loop and throws some blood peices everywhere... the problem is it shoots out in a very formed look. like the blood peices are distributed the same every few times. I know WHY it does this, but i cannot figure out where to put the (float) peice of code in this script:</p><div class="source-code snippet"><div class="inner"><pre><span class="c">//the roll() function returns an int</span>
<span class="c">//bullet[0].velX and bullet[0].velY are both float</span>
<span class="c">//blood[0].velX and blood[0].velY are both float</span>

<span class="k1">if</span><span class="k2">(</span>bullet<span class="k3">&lt;</span>i&gt;.velX&gt;0<span class="k2">)</span>
  blood<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.velX<span class="k3">=</span><span class="k2">(</span>bullet<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.velX<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k3">+</span>roll<span class="k2">(</span><span class="n">7</span><span class="k2">)</span><span class="k3">-</span>roll<span class="k2">(</span><span class="n">4</span><span class="k2">)</span><span class="k3">+</span><span class="n">2</span><span class="k3">/</span><span class="n">33</span>.<span class="n">3</span><span class="k2">;</span>
<span class="k1">else</span>
  blood<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.velX<span class="k3">=</span><span class="k2">(</span>bullet<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.velX<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k3">-</span>roll<span class="k2">(</span><span class="n">7</span><span class="k2">)</span><span class="k3">+</span>roll<span class="k2">(</span><span class="n">4</span><span class="k2">)</span><span class="k3">-</span><span class="n">2</span><span class="k3">/</span><span class="n">33</span>.<span class="n">3</span><span class="k2">;</span>
blood<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.velY<span class="k3">=</span>bullet<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.velY-roll<span class="k2">(</span><span class="n">4</span><span class="k2">)</span><span class="k3">+</span>roll<span class="k2">(</span><span class="n">2</span><span class="k2">)</span><span class="k3">+</span><span class="n">2</span><span class="k3">/</span><span class="n">33</span>.<span class="n">3</span><span class="k2">;</span>
</pre></div></div><p>


I, later on, got it to work for a much simpler part of my code. Its for once the character&#39;s head is blown off, the jugular vein shoots blood everywhere:
</p><div class="source-code snippet"><div class="inner"><pre>blood<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.velX<span class="k3">+</span><span class="k3">=</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>roll<span class="k2">(</span><span class="n">6</span><span class="k2">)</span><span class="k3">/</span><span class="n">8</span><span class="k2">;</span>
blood<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.velX-<span class="k3">=</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>roll<span class="k2">(</span><span class="n">6</span><span class="k2">)</span><span class="k3">/</span><span class="n">8</span><span class="k2">;</span>
blood<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.velY<span class="k3">=</span><span class="k3">-</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>roll<span class="k2">(</span><span class="n">30</span><span class="k2">)</span><span class="k3">/</span><span class="n">10</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ceagon Xylas)</author>
		<pubDate>Sat, 14 May 2005 23:49:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Try casting to float the divisor: <i>bullet[0].velX / (float)2</i> instead of <i>(float)bullet[0].velX / 2</i>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sat, 14 May 2005 23:51:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>nope. still moves in whole int values...</p><p>EDIT:<br />would it have to do something with the return of the roll() function...sence it returns ints?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ceagon Xylas)</author>
		<pubDate>Sat, 14 May 2005 23:56:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>try float cast every single int value in there
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Avenger)</author>
		<pubDate>Sun, 15 May 2005 00:10:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Usually casting the divisor is enough. Which compiler you are using?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sun, 15 May 2005 00:11:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
The problem is probably that roll(7) - roll(4) can only take on a particular low number of discrete values, so your resulting velocity will be one of those. Try generating a floating-point random value instead.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sun, 15 May 2005 00:15:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How do i generate a floating-point random value??</p><p>And rey, regretably, im using MSVC++ =[
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ceagon Xylas)</author>
		<pubDate>Sun, 15 May 2005 00:17:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i have had numerous problems like these as well. What i did, i simply changed my coordinates into floats. Basicly, if you keep it an integer, you can never &#39;change&#39; your position properly. Ie:</p><p>int x=0;</p><p>x+=(float)some_function;</p><p>this will result in lets say 0.2</p><p>basicly will be rounded to 0 again. So you keep repeating ur &#39;error&#39; and thus rounding up.</p><p>I also had problems when a function did not return some floating point properly when you use ints as input. What i did to fix that was:</p><p>float resultofsomefunction(int argument)<br />{<br /> float fArg = argument;<br /> float fResult=0.0f;<br /> // do something here now with fArg and fill it into fResult</p><p> return fResult;<br />}
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Stefan Hendriks)</author>
		<pubDate>Sun, 15 May 2005 01:14:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>something like <span class="source-code"><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="k3">/</span><span class="k2">(</span>RAND_MAX<span class="k3">+</span><span class="n">1</span><span class="k2">)</span></span> possibly without the +1. That would, of course, generate a number between 0 and 1
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Sun, 15 May 2005 01:18:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>How do i generate a floating-point random value??</p></div></div><p>

</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;stdlib.h&gt;</span>

<span class="k1">float</span> frand<span class="k2">(</span><span class="k1">float</span> max<span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">return</span> max<span class="k3">*</span><span class="k2">(</span><span class="k1">float</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="k3">/</span>RAND_MAX<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Sun, 15 May 2005 01:20:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks guys.<br />Stefan, i have my coordinates already set to floats.<br />Gnolam, how would i write that to work as this function?:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> roll<span class="k2">(</span><span class="k1">short</span> sides<span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">static</span> <span class="k1">bool</span> seeded<span class="k2">;</span>
  <span class="k1">int</span> val<span class="k2">;</span>
  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>seeded<span class="k2">)</span> <span class="k2">{</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
    seeded<span class="k3">=</span>TRUE<span class="k2">;</span>
  <span class="k2">}</span>
  val <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="k2">(</span><span class="n">100000</span><span class="k2">)</span><span class="k2">;</span>
  val <span class="k3">=</span> <span class="k2">(</span>val % sides<span class="k2">)</span><span class="k2">;</span>    
  <span class="k1">return</span> val<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ceagon Xylas)</author>
		<pubDate>Sun, 15 May 2005 01:29:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Rey you had casting the divisor &#39;2&#39; to (float)2 </p><p>should he not use 2.0f instead?</p><p>float a;</p><p>a/2 is int division<br />a/2.0f is float division
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Sun, 15 May 2005 04:18:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Both should work.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sun, 15 May 2005 04:21:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just out of curryossity: What would the compiler do? Would it encode 2.0f and (float)2 as the same? I don&#39;t know much about compilers.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Sun, 15 May 2005 04:25:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It seems (a couple of tests done) that the assembler unit does the cast before the code is compiled.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sun, 15 May 2005 04:35:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Neither seems to work for my script, though. =/
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ceagon Xylas)</author>
		<pubDate>Sun, 15 May 2005 04:37:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Can you create a simple program similar to the code you have (not even it needs to use Allegro, just a for cycle printing the values), so that we can check what you are writing, what you want to do, and why it is not working?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sun, 15 May 2005 04:39:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Ceagon Xylas said:</div><div class="quote"><p>Gnolam, how would i write that to work as this function?</p></div></div><p>

Quick copy &amp; paste job (but with comments):
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">float</span> roll<span class="k2">(</span><span class="k1">int</span> max<span class="k2">)</span> <span class="c">//There's no point in using a short here. Just use an int or a float.</span>
<span class="k2">{</span>
  <span class="c">/*</span>
<span class="c">     I suggest you just call srand(time(NULL)) at the beginning</span>
<span class="c">     of your program and be done with it - there's no use doing</span>
<span class="c">     this check every time you generate a new random number.</span>
<span class="c">  */</span>
  <span class="k1">static</span> <span class="k1">bool</span> seeded<span class="k2">;</span>
  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>seeded<span class="k2">)</span> <span class="k2">{</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
    seeded<span class="k3">=</span>TRUE<span class="k2">;</span>
  <span class="k2">}</span>

  <span class="k1">return</span> max<span class="k3">*</span><span class="k2">(</span><span class="k1">float</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="k3">/</span>RAND_MAX<span class="k2">;</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Sun, 15 May 2005 04:40:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, basically... here&#39;s what i got
</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> roll<span class="k2">(</span><span class="k1">int</span> i<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">2</td><td>  <span class="c">//some code in here..then</span></td></tr><tr><td class="number">3</td><td>  <span class="k1">return</span> i<span class="k2">;</span></td></tr><tr><td class="number">4</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">class</span> <span class="k2">{</span></td></tr><tr><td class="number">7</td><td>public:</td></tr><tr><td class="number">8</td><td>  <span class="k1">float</span> velX,velY,x,y<span class="k2">;</span></td></tr><tr><td class="number">9</td><td><span class="k2">}</span>blood,bullet<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td><span class="k1">void</span> when_bullet_hits<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>  <span class="k1">if</span><span class="k2">(</span>bullet.velX&gt;0<span class="k2">)</span></td></tr><tr><td class="number">13</td><td>    blood.velX<span class="k3">=</span>bullet.velX<span class="k3">/</span><span class="n">2</span>.<span class="n">0f</span><span class="k3">+</span>roll<span class="k2">(</span><span class="n">9</span><span class="k2">)</span><span class="k3">-</span>roll<span class="k2">(</span><span class="n">4</span><span class="k2">)</span><span class="k3">-</span><span class="n">4</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>  <span class="k1">else</span></td></tr><tr><td class="number">15</td><td>    blood.velX<span class="k3">=</span>bullet.velX<span class="k3">/</span><span class="n">2</span>.<span class="n">0f</span><span class="k3">-</span>roll<span class="k2">(</span><span class="n">9</span><span class="k2">)</span><span class="k3">+</span>roll<span class="k2">(</span><span class="n">4</span><span class="k2">)</span><span class="k3">+</span><span class="n">4</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ceagon Xylas)</author>
		<pubDate>Sun, 15 May 2005 04:56:45 +0000</pubDate>
	</item>
</rss>
