<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>8 directions</title>
		<link>http://www.allegro.cc/forums/view/586208</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 01 Jul 2006 07:55:49 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why are there only eight directions? I am assuming it has something to do with allegro degrees and the player1_rotate. My bitmap will rotate all 255 degrees but if I press forward it will only go North, South, East, West, NE, NW, SE, or SW. Sorry for all of my noob questions but I am a noob. Do I have to do the trig in radians and the normal trig functions?
</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>&#160;</td></tr><tr><td class="number">4</td><td><span class="p">#define speed 1</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> player1_x <span class="k3">=</span> <span class="n">320</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td><span class="k1">int</span> player1_y <span class="k3">=</span> <span class="n">240</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td><span class="k1">int</span> player2_x<span class="k2">;</span></td></tr><tr><td class="number">9</td><td><span class="k1">int</span> player2_y<span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k1">int</span> player1_rotate<span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k1">int</span> player2_rotate<span class="k2">;</span></td></tr><tr><td class="number">12</td><td><span class="k1">int</span> mickeyx<span class="k2">;</span></td></tr><tr><td class="number">13</td><td><span class="k1">int</span> mickeyy<span class="k2">;</span></td></tr><tr><td class="number">14</td><td><span class="k1">int</span> player1_vy<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td><span class="k1">void</span> player1_movement<span class="k2">(</span><span class="k2">)</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">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_A<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>    player1_x <span class="k3">-</span><span class="k3">=</span> speed<span class="k2">;</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">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_D<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>    player1_x <span class="k3">+</span><span class="k3">=</span> speed<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">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_W<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">27</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">28</td><td>    player1_y <span class="k3">-</span><span class="k3">=</span> speed <span class="k3">*</span> <a href="http://www.allegro.cc/manual/fixtoi" target="_blank"><span class="a">fixtoi</span></a><span class="k2">(</span>fcos<span class="k2">(</span><a href="http://www.allegro.cc/manual/itofix" target="_blank"><span class="a">itofix</span></a><span class="k2">(</span>player1_rotate<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    player1_x <span class="k3">+</span><span class="k3">=</span> speed <span class="k3">*</span> <a href="http://www.allegro.cc/manual/fixtoi" target="_blank"><span class="a">fixtoi</span></a><span class="k2">(</span>fsin<span class="k2">(</span><a href="http://www.allegro.cc/manual/itofix" target="_blank"><span class="a">itofix</span></a><span class="k2">(</span>player1_rotate<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><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>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_S<span class="k2">]</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>    player1_y <span class="k3">+</span><span class="k3">=</span> speed<span class="k2">;</span></td></tr><tr><td class="number">34</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">35</td><td>  <a href="http://www.allegro.cc/manual/get_mouse_mickeys" target="_blank"><span class="a">get_mouse_mickeys</span></a><span class="k2">(</span><span class="k3">&amp;</span>mickeyx, <span class="k3">&amp;</span>mickeyy<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td>  player1_rotate <span class="k3">+</span><span class="k3">=</span> mickeyx <span class="k3">/</span> <span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>&#160;</td></tr><tr><td class="number">39</td><td><span class="k2">}</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</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></td></tr><tr><td class="number">42</td><td><span class="k2">{</span></td></tr><tr><td class="number">43</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">44</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">45</td><td>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>  <a href="http://www.allegro.cc/manual/set_mouse_speed" target="_blank"><span class="a">set_mouse_speed</span></a><span class="k2">(</span><span class="n">1</span>,<span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</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">16</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</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">640</span>,<span class="n">480</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">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>&#160;</td></tr><tr><td class="number">51</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">640</span>,<span class="n">480</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>player1 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"player.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>     </td></tr><tr><td class="number">55</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>player2 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"player.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>     </td></tr><tr><td class="number">57</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">58</td><td>  <span class="k2">{</span>                       </td></tr><tr><td class="number">59</td><td>    player1_movement<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>    <a href="http://www.allegro.cc/manual/rotate_sprite" target="_blank"><span class="a">rotate_sprite</span></a><span class="k2">(</span>buffer, player1, player1_x, player1_y, <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span>player1_rotate<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">61</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">640</span>,<span class="n">480</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>    <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">64</td><td>&#160;</td></tr><tr><td class="number">65</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>player1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>player2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>&#160;</td></tr><tr><td class="number">69</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">70</td><td><span class="k2">}</span></td></tr><tr><td class="number">71</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></td></tr></tbody></table></div></div><p>

Thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (neil dwyer)</author>
		<pubDate>Sat, 01 Jul 2006 05:21:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;re converting the results of sin and cos [-1, 1] into integers.</p><p>Just dump all the fixed point and use floats like normal people already. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Sat, 01 Jul 2006 05:59:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>how many radians is one allegro degree. It&#39;s like 40 something but I want to be exact.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (neil dwyer)</author>
		<pubDate>Sat, 01 Jul 2006 06:23:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There are 2PI radians in a circle, or 256 Allegro degrees. That means there would be roughly 0.025 radians in 1 Allegro degree.</p><p>I think the problem with there only being 8 directions is due to rounding. If you are using itofix, that means you are taking radians (which are float), and rounding them to ints. The loss of data would cause problems like what you had stated.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elverion)</author>
		<pubDate>Sat, 01 Jul 2006 06:54:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>yes, but does it round to the nearest 16th whole number?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (neil dwyer)</author>
		<pubDate>Sat, 01 Jul 2006 07:10:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>player1_x and player1_y should be floats, not ints. And the thing you add to them should be float, not int. </p><p><span class="source-code"> speed <span class="k3">*</span> <a href="http://www.allegro.cc/manual/fixtoi" target="_blank"><span class="a">fixtoi</span></a><span class="k2">(</span>fcos<span class="k2">(</span><a href="http://www.allegro.cc/manual/itofix" target="_blank"><span class="a">itofix</span></a><span class="k2">(</span>player1_rotate<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span></span></p><p>turns into -1, 0 or 1. So when you add that to both x and y, you get only 8 directions.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Sat, 01 Jul 2006 07:47:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ok
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (neil dwyer)</author>
		<pubDate>Sat, 01 Jul 2006 07:55:49 +0000</pubDate>
	</item>
</rss>
