<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Rotating sprite in allegro</title>
		<link>http://www.allegro.cc/forums/view/603985</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 07 May 2010 20:40:07 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello,<br />I try to make that my sprite will rotate to mouse position, but it doesnt move.<br />(I use old allegro)</p><p>[code]<br />player.angle = atan2(player.x-player.y, mouse_x-mouse_y);<br />rotate_sprite(buf,ppistol, player.x , player.y , ftofix( (player.angle*256)/360.0 ) );<br />[/code]</p><p>---</p><p>I found similar thread on this forum, and was trying to make like there, but I still got problem, because it rotates well, but mouse is behind player.</p><p>const double rad_to_deg = 180.0/M_PI;<br />const double deg_to_adeg = 32.0/45.0;<br />const double rad_to_adeg = 128.0/M_PI;</p><p>player.angle = -atan2( mouse_x - player.x, mouse_y-player.y);<br />                                   <br />rotate_sprite( buf , ppistol , player.x, player.y , ftofix( player.angle*rad_to_adeg ) ); //(player.angle*256)/360.0) );
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neomex)</author>
		<pubDate>Thu, 06 May 2010 13:59:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You should really read your post at least once after posted, at least unless you learn how to use the forum&#39;s formatting.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/603985/864186#target">Neomex</a> said:</div><div class="quote"><p>
I found similar thread on this forum, and was trying to make like there, but I still got problem, because it rotates well, but mouse is behind player.
</p></div></div><p>

So put it above the &quot;player&quot;? o0<br />Use a custom mouse perhaps? (blit some image on mouse coordinates)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (type568)</author>
		<pubDate>Thu, 06 May 2010 16:55:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That&#39;s not what I mean, but I just rotated texture at 180 degrees and now works perfectly, but I don&#39;t know how to move player to mouse direction.</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">const</span> <span class="k1">double</span> rad_to_deg <span class="k3">=</span> <span class="n">180</span>.<span class="n">0</span><span class="k3">/</span>M_PI<span class="k2">;</span><span class="c">// 360.0/(2.0*M_PI);</span>
<span class="number">  2</span><span class="k1">const</span> <span class="k1">double</span> deg_to_adeg <span class="k3">=</span> <span class="n">32</span>.<span class="n">0</span><span class="k3">/</span><span class="n">45</span>.<span class="n">0</span><span class="k2">;</span><span class="c">// 256.0/360.0;</span>
<span class="number">  3</span><span class="k1">const</span> <span class="k1">double</span> rad_to_adeg <span class="k3">=</span> <span class="n">128</span>.<span class="n">0</span><span class="k3">/</span>M_PI<span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span><span class="k1">double</span> tab_sin<span class="k2">[</span><span class="n">360</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  6</span><span class="k1">double</span> tab_cos<span class="k2">[</span><span class="n">360</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  7</span> 
<span class="number">  8</span><span class="k1">void</span> laduj_sin_cos<span class="k2">(</span><span class="k2">)</span>
<span class="number">  9</span><span class="k2">{</span>
<span class="number"> 10</span>     <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">360</span><span class="k2">;</span> i <span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 11</span>     <span class="k2">{</span>
<span class="number"> 12</span>        tab_sin<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span><span class="k2">(</span>M_PI<span class="k3">*</span><span class="k2">(</span>i<span class="k2">)</span><span class="k2">)</span><span class="k3">/</span><span class="n">180</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>        tab_cos<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span><span class="k2">(</span>M_PI<span class="k3">*</span><span class="k2">(</span>i<span class="k2">)</span><span class="k2">)</span><span class="k3">/</span><span class="n">180</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>     <span class="k2">}</span>  
<span class="number"> 15</span><span class="k2">}</span>
<span class="number"> 16</span>
<span class="number"> 17</span>
<span class="number"> 18</span>...
<span class="number"> 19</span>
<span class="number"> 20</span>
<span class="number"> 21</span><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>
<span class="number"> 22</span>               <span class="k2">{</span>
<span class="number"> 23</span>                   <span class="c">//player.x += cos(player.angle) * 5;</span>
<span class="number"> 24</span>                   <span class="c">//player.y += sin(player.angle) * 5; </span>
<span class="number"> 25</span>                   player.angle <span class="k3">=</span>  player.angle <span class="k3">*</span> rad_to_adeg<span class="k2">;</span>
<span class="number"> 26</span>                   player.x <span class="k3">-</span><span class="k3">=</span> <span class="n">2</span><span class="k3">*</span>tab_cos<span class="k2">[</span> <span class="k1">int</span><span class="k2">(</span> player.angle <span class="k2">)</span> <span class="k2">]</span><span class="k2">;</span>
<span class="number"> 27</span>                   player.y <span class="k3">-</span><span class="k3">=</span> <span class="n">2</span><span class="k3">*</span>tab_sin<span class="k2">[</span> <span class="k1">int</span><span class="k2">(</span> player.angle <span class="k2">)</span> <span class="k2">]</span><span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span>               <span class="k2">}</span>
</div></div><p>

It moves in strange ways <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neomex)</author>
		<pubDate>Thu, 06 May 2010 17:03:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What do you want to do exactly ?</p><p>According to my crystal ball (which is not really working fine ya know):</p><p>1) You have a point that represent the player with x and y<br />2) You use the mouse pointer and accordingly rotate the player&#39;s sprite for it to follow the angle between the mouse coordinate and the player&#39;s coordinate<br />3) You want to press W for making the player move in direction of the mouse
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Thu, 06 May 2010 17:23:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Main.cpp
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include "main.h"</span>
<span class="number">   2</span><span class="p">#include "bmp.h"</span>
<span class="number">   3</span><span class="p">#include "timer.h"</span>
<span class="number">   4</span>
<span class="number">   5</span><span class="p">#include "player.h"</span>
<span class="number">   6</span>
<span class="number">   7</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">   8</span><span class="k2">{</span>
<span class="number">   9</span><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="number">  10</span>depth <span class="k3">=</span> <a href="http://www.allegro.cc/manual/desktop_color_depth" target="_blank"><span class="a">desktop_color_depth</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  11</span><span class="k1">if</span> <span class="k2">(</span>depth <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> depth <span class="k3">=</span> <span class="n">32</span><span class="k2">;</span>
<span class="number">  12</span>   <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span>depth<span class="k2">)</span><span class="k2">;</span>
<span class="number">  13</span>   
<span class="number">  14</span>res <span class="k3">=</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, WINDOW_X, WINDOW_Y, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  15</span>  <span class="k1">if</span> <span class="k2">(</span>res <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  16</span>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><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>
<span class="number">  17</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span>  <span class="k2">}</span>
<span class="number">  19</span>
<span class="number">  20</span><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>
<span class="number">  21</span><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="number">  22</span><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>
<span class="number">  23</span><a href="http://www.allegro.cc/manual/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span>DIGI_AUTODETECT,MIDI_AUTODETECT,<span class="s">""</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span><a href="http://www.allegro.cc/manual/set_volume" target="_blank"><span class="a">set_volume</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>
<span class="number">  26</span><span class="c">//select_mouse_cursor(1);</span>
<span class="number">  27</span><a href="http://www.allegro.cc/manual/show_mouse" target="_blank"><span class="a">show_mouse</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> 
<span class="number">  28</span><a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>speed_counter<span class="k2">)</span><span class="k2">;</span> <span class="c">//Used to set the timer - which regulates the game's</span>
<span class="number">  29</span><a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>increment_speed_counter<span class="k2">)</span><span class="k2">;</span><span class="c">//speed.</span>
<span class="number">  30</span>
<span class="number">  31</span><a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a><span class="k2">(</span>increment_speed_counter, BPS_TO_TIMER<span class="k2">(</span><span class="n">60</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span><span class="c">//Set our BPS</span>
<span class="number">  32</span>
<span class="number">  33</span><span class="c">//inits</span>
<span class="number">  34</span>Cplayer player<span class="k2">;</span>
<span class="number">  35</span>
<span class="number">  36</span>buf <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>WINDOW_X, WINDOW_Y<span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>grass <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">"grass.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>
<span class="number">  39</span>hud <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">"hud.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>ppistol <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">"ppistol.bmp"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>
<span class="number">  42</span>laduj_sin_cos<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>
<span class="number">  44</span><span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> 
<span class="number">  45</span><span class="k2">{</span>
<span class="number">  46</span>    <span class="c">/* put your code here */</span>
<span class="number">  47</span>    clear<span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>grass, buf, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, grass-&gt;w, grass-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  49</span>    <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>hud, buf, <span class="n">0</span>, <span class="n">0</span>, <span class="n">800</span>, <span class="n">0</span>, hud-&gt;w, hud-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number">  50</span>    
<span class="number">  51</span>    <span class="k1">while</span><span class="k2">(</span>speed_counter <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  52</span>        <span class="k2">{</span>
<span class="number">  53</span>               <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>
<span class="number">  54</span>               <span class="k2">{</span>
<span class="number">  55</span>                   player.x <span class="k3">+</span><span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>player.angle<span class="k2">)</span> <span class="k3">*</span> <span class="n">5</span><span class="k2">;</span>
<span class="number">  56</span>                   player.y <span class="k3">+</span><span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span>player.angle<span class="k2">)</span> <span class="k3">*</span> <span class="n">5</span><span class="k2">;</span> 
<span class="number">  57</span>                   <span class="c">//player.angle =  player.angle * rad_to_adeg;</span>
<span class="number">  58</span>                   <span class="c">//player.x -= 2*tab_cos[ int( player.angle ) ];</span>
<span class="number">  59</span>                   <span class="c">//player.y -= 2*tab_sin[ int( player.angle ) ];</span>
<span class="number">  60</span>
<span class="number">  61</span>               <span class="k2">}</span>             
<span class="number">  62</span>                            
<span class="number">  63</span>              <span class="c">//player.angle = atan2(player.x-player.y, mouse_x-mouse_y);</span>
<span class="number">  64</span>              player.angle <span class="k3">=</span> <span class="k3">-</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_50.html" target="_blank">atan2</a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">-</span> <span class="k2">(</span> player.x <span class="k3">+</span> <span class="n">25</span> <span class="k2">)</span>, <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">-</span> <span class="k2">(</span> player.y <span class="k3">+</span> <span class="n">25</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>              <span class="c">//player.angle = atan2( mouse_y - player.y, mouse_x-player.x);</span>
<span class="number">  66</span>                            
<span class="number">  67</span>              player.hlong<span class="k3">+</span><span class="k3">=</span><span class="n">0</span>.<span class="n">02</span><span class="k2">;</span>
<span class="number">  68</span>              
<span class="number">  69</span>              speed_counter <span class="k3">-</span><span class="k3">-</span><span class="k2">;</span>
<span class="number">  70</span>        <span class="k2">}</span>
<span class="number">  71</span>        
<span class="number">  72</span>        <span class="c">//textprintf(buf, font, 0, 0, makecol(255, 0, 0), "Red Text");</span>
<span class="number">  73</span>        
<span class="number">  74</span>        <span class="c">//SCORES ON HUD</span>
<span class="number">  75</span>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">880</span>, <span class="n">125</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span>, <span class="s">"%i"</span> , player.life<span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">880</span>, <span class="n">185</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span>, <span class="s">"%i"</span> , player.score<span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">880</span>, <span class="n">250</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span>, <span class="s">"%i"</span> , player.wastedammo<span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">880</span>, <span class="n">320</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span>, <span class="s">"%i"</span> , player.ammo<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">880</span>, <span class="n">380</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span>, <span class="s">"%i"</span> , player.score<span class="k2">)</span><span class="k2">;</span>
<span class="number">  80</span>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">820</span>, <span class="n">510</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span>, <span class="s">"%f"</span> , player.hlong<span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>        <span class="c">//TILDE VARIABLES</span>
<span class="number">  82</span>        <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_TILDE<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> console <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span> <span class="k2">)</span>
<span class="number">  83</span>        <span class="k2">{</span>
<span class="number">  84</span>            console <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  85</span>        <span class="k2">}</span><span class="k1">else</span>
<span class="number">  86</span>        <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_TILDE<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> console <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> <span class="k2">)</span>
<span class="number">  87</span>        <span class="k2">{</span>
<span class="number">  88</span>            console <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  89</span>        <span class="k2">}</span>
<span class="number">  90</span>        <span class="k1">if</span><span class="k2">(</span> console <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> <span class="k2">)</span>
<span class="number">  91</span>        <span class="k2">{</span>
<span class="number">  92</span>            <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, <span class="n">10</span>, <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">0</span>, <span class="n">0</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span>, <span class="s">"Player Angle: %f"</span> , player.angle<span class="k3">*</span>rad_to_adeg<span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>            <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, <span class="n">20</span>, <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">0</span>, <span class="n">0</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span>, <span class="s">"Player X: %f"</span> , player.x<span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>            <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buf, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, <span class="n">30</span>, <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">0</span>, <span class="n">0</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span>, <span class="s">"Player Y: %f"</span> , player.y<span class="k2">)</span><span class="k2">;</span>
<span class="number">  95</span>        <span class="k2">}</span>
<span class="number">  96</span>        
<span class="number">  97</span>        <a href="http://www.allegro.cc/manual/rotate_sprite" target="_blank"><span class="a">rotate_sprite</span></a><span class="k2">(</span> buf , ppistol , player.x, player.y , <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> player.angle<span class="k3">*</span>rad_to_adeg <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span> <span class="c">//(player.angle*256)/360.0) );</span>
<span class="number">  98</span>      <span class="c">//masked_blit(ppistol, buf, 0, 0, player.x, player.y, ppistol-&gt;w, ppistol-&gt;h);</span>
<span class="number">  99</span>      
<span class="number"> 100</span>        <a href="http://www.allegro.cc/manual/masked_blit" target="_blank"><span class="a">masked_blit</span></a><span class="k2">(</span>buf, <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>, buf-&gt;w, buf-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span><span class="k2">}</span>
<span class="number"> 102</span>
<span class="number"> 103</span><a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span><a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>grass<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</span><a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>ppistol<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 106</span><a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>hud<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 107</span>
<span class="number"> 108</span><a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span><span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 110</span><span class="k2">}</span>
<span class="number"> 111</span><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>
</div></div><p>
main.h
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;allegro.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">  3</span> 
<span class="number">  4</span><span class="p">#define WINDOW_X 1000</span>
<span class="number">  5</span><span class="p">#define WINDOW_Y 600</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="k1">int</span> depth, res<span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="p">#define DEGREES(x) int((x)/360.0*0xFFFFFF)</span>
<span class="number"> 10</span><span class="p">#define RADIANS(x) int((x)/2/M_PI*0xFFFFFF) </span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="k1">const</span> <span class="k1">double</span> rad_to_deg <span class="k3">=</span> <span class="n">180</span>.<span class="n">0</span><span class="k3">/</span>M_PI<span class="k2">;</span><span class="c">// 360.0/(2.0*M_PI);</span>
<span class="number"> 13</span><span class="k1">const</span> <span class="k1">double</span> deg_to_adeg <span class="k3">=</span> <span class="n">32</span>.<span class="n">0</span><span class="k3">/</span><span class="n">45</span>.<span class="n">0</span><span class="k2">;</span><span class="c">// 256.0/360.0;</span>
<span class="number"> 14</span><span class="k1">const</span> <span class="k1">double</span> rad_to_adeg <span class="k3">=</span> <span class="n">128</span>.<span class="n">0</span><span class="k3">/</span>M_PI<span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span><span class="k1">bool</span> console <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span><span class="k1">double</span> tab_sin<span class="k2">[</span><span class="n">360</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 19</span><span class="k1">double</span> tab_cos<span class="k2">[</span><span class="n">360</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 20</span> 
<span class="number"> 21</span><span class="k1">void</span> laduj_sin_cos<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 22</span><span class="k2">{</span>
<span class="number"> 23</span>     <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">360</span><span class="k2">;</span> i <span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 24</span>     <span class="k2">{</span>
<span class="number"> 25</span>        tab_sin<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span><span class="k2">(</span>M_PI<span class="k3">*</span><span class="k2">(</span>i<span class="k2">)</span><span class="k2">)</span><span class="k3">/</span><span class="n">180</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>        tab_cos<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span><span class="k2">(</span>M_PI<span class="k3">*</span><span class="k2">(</span>i<span class="k2">)</span><span class="k2">)</span><span class="k3">/</span><span class="n">180</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>     <span class="k2">}</span>  
<span class="number"> 28</span><span class="k2">}</span>
</div></div><p>
player files
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include "player.h"</span>
<span class="number">  2</span>
<span class="number">  3</span>Cplayer::Cplayer<span class="k2">(</span><span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span>     x <span class="k3">=</span> <span class="n">400</span><span class="k2">;</span>
<span class="number">  6</span>     y <span class="k3">=</span> <span class="n">300</span><span class="k2">;</span>
<span class="number">  7</span>     w <span class="k3">=</span> <span class="n">50</span><span class="k2">;</span>
<span class="number">  8</span>     h <span class="k3">=</span> <span class="n">50</span><span class="k2">;</span>
<span class="number">  9</span>     speed <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span>
<span class="number"> 10</span>     angle <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 11</span>     
<span class="number"> 12</span>     life <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number"> 13</span>     score <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 14</span>     wastedammo <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 15</span>     ammo <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 16</span>     killed_zombies <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span>     hlong <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 19</span><span class="k2">}</span>
<span class="number"> 20</span>
<span class="number"> 21</span><span class="k3">-</span><span class="k3">-</span><span class="k3">-</span>
<span class="number"> 22</span>
<span class="number"> 23</span><span class="k1">class</span> Cplayer
<span class="number"> 24</span><span class="k2">{</span>
<span class="number"> 25</span>      public:
<span class="number"> 26</span>             
<span class="number"> 27</span>             <span class="k1">float</span> x , y , w , h<span class="k2">;</span>
<span class="number"> 28</span>             
<span class="number"> 29</span>             <span class="k1">float</span> angle<span class="k2">;</span>
<span class="number"> 30</span>             <span class="k1">float</span> speed<span class="k2">;</span>
<span class="number"> 31</span>             
<span class="number"> 32</span>             <span class="k1">int</span> life<span class="k2">;</span>
<span class="number"> 33</span>             <span class="k1">int</span> score<span class="k2">;</span>
<span class="number"> 34</span>             <span class="k1">int</span> wastedammo<span class="k2">;</span>
<span class="number"> 35</span>             <span class="k1">int</span> ammo<span class="k2">;</span>
<span class="number"> 36</span>             <span class="k1">int</span> killed_zombies<span class="k2">;</span>
<span class="number"> 37</span>             
<span class="number"> 38</span>             <span class="k1">float</span> hlong<span class="k2">;</span>
<span class="number"> 39</span>             
<span class="number"> 40</span>             Cplayer<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>

I want to move player to mouse direction, after pressing W key.<br />--<br />Btw, your crystal ball works fine, that&#39;s what I&#39;m trying to do. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neomex)</author>
		<pubDate>Thu, 06 May 2010 17:27:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t know how to correct your code. I was lazy and I found it better to give you a working example. </p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;allegro.h&gt;</span>
<span class="number">  3</span>
<span class="number">  4</span>
<span class="number">  5</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>scrbuf <span class="k3">=</span> NULL <span class="k2">;</span>
<span class="number">  6</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite <span class="k3">=</span> NULL <span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">typedef</span> <span class="k1">struct</span> PLAYER
<span class="number"> 10</span><span class="k2">{</span>
<span class="number"> 11</span>  <span class="k1">double</span>  x ,
<span class="number"> 12</span>      y <span class="k2">;</span>
<span class="number"> 13</span>  <a href="http://www.allegro.cc/manual/fixed" target="_blank"><span class="a">fixed</span></a>  angle <span class="k2">;</span>
<span class="number"> 14</span><span class="k2">}</span> PLAYER <span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>PLAYER player<span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span>
<span class="number"> 19</span><span class="k1">double</span> angle <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span>
<span class="number"> 20</span>
<span class="number"> 21</span>
<span class="number"> 22</span><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="number"> 23</span><span class="k2">{</span>
<span class="number"> 24</span>  <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="number"> 25</span>  <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="number"> 26</span>  <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>
<span class="number"> 27</span>  <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>
<span class="number"> 28</span>  <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">32</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</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 , <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>
<span class="number"> 30</span>  
<span class="number"> 31</span>  scrbuf <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>
<span class="number"> 32</span>  
<span class="number"> 33</span>  sprite <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">64</span> , <span class="n">256</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>  <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span> sprite , <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">0</span> , <span class="n">255</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span>  <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span> sprite , <span class="n">10</span> , <span class="n">10</span> , <span class="n">54</span> , <span class="n">246</span> , <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">0</span> , <span class="n">0</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>  <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">(</span> sprite , <span class="n">10</span> , <span class="n">10</span> , <span class="n">32</span> , <span class="n">0</span> ,  <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">0</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>  <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">(</span> sprite , <span class="n">32</span> , <span class="n">0</span> , <span class="n">54</span> , <span class="n">10</span> ,  <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">0</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>  
<span class="number"> 39</span>  player . x <span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a> <span class="k3">/</span> <span class="n">2</span> <span class="k2">;</span>
<span class="number"> 40</span>  player . y <span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a> <span class="k3">/</span> <span class="n">2</span> <span class="k2">;</span>
<span class="number"> 41</span>  player . angle <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span>
<span class="number"> 42</span>  
<span class="number"> 43</span>  
<span class="number"> 44</span>  <span class="k1">while</span><span class="k2">(</span> <span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span> KEY_ESC <span class="k2">]</span> <span class="k2">)</span>
<span class="number"> 45</span>  <span class="k2">{</span>
<span class="number"> 46</span>    player . angle <span class="k3">=</span> <span class="k3">-</span><a href="http://www.allegro.cc/manual/fixatan2" target="_blank"><span class="a">fixatan2</span></a><span class="k2">(</span>  <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> player . x <span class="k3">-</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k2">)</span> , <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> player . y <span class="k3">-</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>    
<span class="number"> 48</span>    <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_SPACE <span class="k2">]</span> <span class="k2">)</span>
<span class="number"> 49</span>    <span class="k2">{</span>
<span class="number"> 50</span>      <span class="k1">int</span> vx , vy <span class="k2">;</span>
<span class="number"> 51</span>      <span class="k1">double</span> size , cx , cy <span class="k2">;</span>
<span class="number"> 52</span>        
<span class="number"> 53</span>        
<span class="number"> 54</span>      vx <span class="k3">=</span> player . x <span class="k3">-</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k2">;</span>
<span class="number"> 55</span>      vy <span class="k3">=</span> player . y <span class="k3">-</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k2">;</span>
<span class="number"> 56</span>      
<span class="number"> 57</span>      <span class="k1">if</span><span class="k2">(</span> vx <span class="k3">|</span><span class="k3">|</span> vy <span class="k2">)</span>
<span class="number"> 58</span>      <span class="k2">{</span>
<span class="number"> 59</span>        size <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_738.html" target="_blank">sqrt</a><span class="k2">(</span> vx<span class="k3">*</span>vx <span class="k3">+</span> vy<span class="k3">*</span>vy <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>      
<span class="number"> 61</span>        cx <span class="k3">=</span> vx<span class="k3">/</span>size <span class="k2">;</span>
<span class="number"> 62</span>        cy <span class="k3">=</span> vy<span class="k3">/</span>size <span class="k2">;</span>
<span class="number"> 63</span>        cx <span class="k3">=</span> <span class="n">2</span> <span class="k3">*</span> cx <span class="k2">;</span>
<span class="number"> 64</span>        cy <span class="k3">=</span> <span class="n">2</span> <span class="k3">*</span> cy <span class="k2">;</span>
<span class="number"> 65</span>      
<span class="number"> 66</span>        player . x <span class="k3">=</span> player . x <span class="k3">-</span> cx <span class="k2">;</span>
<span class="number"> 67</span>        player . y <span class="k3">=</span> player . y <span class="k3">-</span> cy <span class="k2">;</span>
<span class="number"> 68</span>        
<span class="number"> 69</span>      <span class="k2">}</span>
<span class="number"> 70</span>    <span class="k2">}</span>
<span class="number"> 71</span>    
<span class="number"> 72</span>    
<span class="number"> 73</span>    clear<span class="k2">(</span> scrbuf <span class="k2">)</span> <span class="k2">;</span>
<span class="number"> 74</span>    
<span class="number"> 75</span>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span> scrbuf , <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a> , <span class="n">10</span> , <span class="n">10</span> , <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">100</span> , <span class="n">200</span> <span class="k2">)</span> , <span class="k3">-</span><span class="n">1</span> , <span class="s">"Angle: %0.0f"</span> , <a href="http://www.allegro.cc/manual/fixtof" target="_blank"><span class="a">fixtof</span></a><span class="k2">(</span> player.angle <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>    
<span class="number"> 76</span>    
<span class="number"> 77</span>    <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">(</span> scrbuf , <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">-</span> <span class="n">5</span> , <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> , <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">+</span> <span class="n">5</span> , <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> , <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="number"> 78</span>    <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">(</span> scrbuf , <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> , <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">-</span> <span class="n">5</span> , <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> , <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k3">+</span> <span class="n">5</span> , <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="number"> 79</span>    
<span class="number"> 80</span>    
<span class="number"> 81</span>    <a href="http://www.allegro.cc/manual/rotate_sprite" target="_blank"><span class="a">rotate_sprite</span></a><span class="k2">(</span> scrbuf , sprite , player . x <span class="k3">-</span> sprite <span class="k3">-</span><span class="k3">&gt;</span> w <span class="k3">/</span> <span class="n">2</span> , player . y <span class="k3">-</span> sprite <span class="k3">-</span><span class="k3">&gt;</span> h <span class="k3">/</span> <span class="n">2</span> , player . angle <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 82</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span> scrbuf , <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>
<span class="number"> 83</span>    
<span class="number"> 84</span>  <span class="k2">}</span>
<span class="number"> 85</span>  
<span class="number"> 86</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span> scrbuf <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 87</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span> sprite <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 88</span>  
<span class="number"> 89</span>  <a href="http://www.allegro.cc/manual/allegro_exit" target="_blank"><span class="a">allegro_exit</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 90</span>  
<span class="number"> 91</span><span class="k2">}</span><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>
</div></div><p>

I attached source and (alleg4.4) binary.</p><p>The sprite is rotating accordingly to the mouse position, and go in direction of the mouse when pressing SPACE.</p><p>You were in need of rotation forumulae for the rotating part, but the move is only a vector story.</p><p>I just calculated the normalised vector between mouse / player and used it at each frame.</p><p><a href="http://www.allegro.cc/files/attachment/601264">Here is your file. Clicky, isn&#39;t it ?</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Thu, 06 May 2010 19:39:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Works perfectly! Thanks a lot! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>I think I understand (mostly) how does it work.<br />Oh, what about it?</p><p>if( vx || vy )</p><p>It means:<br />if vx or vy is different than 0 then... ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neomex)</author>
		<pubDate>Thu, 06 May 2010 20:16:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>nvrmnd
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Thu, 06 May 2010 20:21:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am not sure if it covers all the cases, but that <span class="source-code"><span class="k1">if</span><span class="k2">(</span> vx <span class="k3">|</span><span class="k3">|</span>vy <span class="k2">)</span></span> is there to ensure that you&#39;ll never have a zero size (length) and thus not dividing by 0 in the next steps.</p><p>Literately it means vx != 0 or vy != 0
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Fri, 07 May 2010 01:08:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>One more question<br />How to change this code, if I want to move to the left or right?</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><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_SPACE <span class="k2">]</span> <span class="k2">)</span>
<span class="number">  2</span>    <span class="k2">{</span>
<span class="number">  3</span>      <span class="k1">int</span> vx , vy <span class="k2">;</span>
<span class="number">  4</span>      <span class="k1">double</span> size , cx , cy <span class="k2">;</span>
<span class="number">  5</span>        
<span class="number">  6</span>        
<span class="number">  7</span>      vx <span class="k3">=</span> player . x <span class="k3">-</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k2">;</span>
<span class="number">  8</span>      vy <span class="k3">=</span> player . y <span class="k3">-</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k2">;</span>
<span class="number">  9</span>      
<span class="number"> 10</span>      <span class="k1">if</span><span class="k2">(</span> vx <span class="k3">|</span><span class="k3">|</span> vy <span class="k2">)</span>
<span class="number"> 11</span>      <span class="k2">{</span>
<span class="number"> 12</span>        size <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_738.html" target="_blank">sqrt</a><span class="k2">(</span> vx<span class="k3">*</span>vx <span class="k3">+</span> vy<span class="k3">*</span>vy <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>      
<span class="number"> 14</span>        cx <span class="k3">=</span> vx<span class="k3">/</span>size <span class="k2">;</span>
<span class="number"> 15</span>        cy <span class="k3">=</span> vy<span class="k3">/</span>size <span class="k2">;</span>
<span class="number"> 16</span>        cx <span class="k3">=</span> <span class="n">2</span> <span class="k3">*</span> cx <span class="k2">;</span>
<span class="number"> 17</span>        cy <span class="k3">=</span> <span class="n">2</span> <span class="k3">*</span> cy <span class="k2">;</span>
<span class="number"> 18</span>      
<span class="number"> 19</span>        player . x <span class="k3">=</span> player . x <span class="k3">-</span> cx <span class="k2">;</span>
<span class="number"> 20</span>        player . y <span class="k3">=</span> player . y <span class="k3">-</span> cy <span class="k2">;</span>
<span class="number"> 21</span>        
<span class="number"> 22</span>      <span class="k2">}</span>
</div></div><p>

<span class="remote-thumbnail"><span class="json">{"name":"infof.jpg","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/1\/4162db84b71cdf01c513ad41d140d0d9.jpg","w":324,"h":326,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/1\/4162db84b71cdf01c513ad41d140d0d9"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/4/1/4162db84b71cdf01c513ad41d140d0d9-240.jpg" alt="infof.jpg" width="240" height="241" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neomex)</author>
		<pubDate>Fri, 07 May 2010 03:18:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You have to do a little bit of vector math.</p><div class="quote_container"><div class="title">http://stackoverflow.com/questions/1243614/how-do-i-calculate-the-normal-vector-of-a-line-segment said:</div><div class="quote"><p>
The matrix representation of the general 2D transformation looks like this:</p><p>x&#39; = x cos(t) - y sin(t)<br />y&#39; = x sin(t) + y cos(t)<br />where (x,y) are the components of the original vector and (x&#39;, y&#39;) are the transformed components.</p><p>If t = 90 degrees, then cos(90) = 0 and sin(90) = 1. Substituting and multiplying it out gives:</p><p>x&#39; = -y<br />y&#39; = +x
</p></div></div><p>

So, basically you&#39;ll have to modify it that way:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">if</span><span class="k2">(</span> <a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a><span class="k3">&amp;</span><span class="n">1</span> <span class="k3">|</span><span class="k3">|</span> <a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a><span class="k3">&amp;</span><span class="n">2</span> <span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  <span class="k1">int</span> vx , vy <span class="k2">;</span>
<span class="number">  4</span>  <span class="k1">double</span> size , cx , cy <span class="k2">;</span>
<span class="number">  5</span>    
<span class="number">  6</span>    
<span class="number">  7</span>  vx <span class="k3">=</span> player . x <span class="k3">-</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k2">;</span>
<span class="number">  8</span>  vy <span class="k3">=</span> player . y <span class="k3">-</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a> <span class="k2">;</span>
<span class="number">  9</span>  
<span class="number"> 10</span>  <span class="k1">if</span><span class="k2">(</span> vx <span class="k3">|</span><span class="k3">|</span> vy <span class="k2">)</span>
<span class="number"> 11</span>  <span class="k2">{</span>
<span class="number"> 12</span>    size <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_738.html" target="_blank">sqrt</a><span class="k2">(</span> vx<span class="k3">*</span>vx <span class="k3">+</span> vy<span class="k3">*</span>vy <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>  
<span class="number"> 14</span>    cx <span class="k3">=</span> vx<span class="k3">/</span>size <span class="k2">;</span>
<span class="number"> 15</span>    cy <span class="k3">=</span> vy<span class="k3">/</span>size <span class="k2">;</span>
<span class="number"> 16</span>    cx <span class="k3">=</span> <span class="n">2</span> <span class="k3">*</span> cx <span class="k2">;</span>
<span class="number"> 17</span>    cy <span class="k3">=</span> <span class="n">2</span> <span class="k3">*</span> cy <span class="k2">;</span>
<span class="number"> 18</span>  
<span class="number"> 19</span>  <span class="k2">}</span>
<span class="number"> 20</span>
<span class="number"> 21</span>  <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_SPACE <span class="k2">]</span> <span class="k2">)</span>
<span class="number"> 22</span>  <span class="k2">{</span>
<span class="number"> 23</span>    player . x <span class="k3">=</span> player . x <span class="k3">-</span> cx <span class="k2">;</span>
<span class="number"> 24</span>    player . y <span class="k3">=</span> player . y <span class="k3">-</span> cy <span class="k2">;</span>
<span class="number"> 25</span>  <span class="k2">}</span>
<span class="number"> 26</span>  <span class="k1">else</span>      
<span class="number"> 27</span>  <span class="k2">{</span>
<span class="number"> 28</span>    <span class="k1">if</span><span class="k2">(</span> <a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a><span class="k3">&amp;</span><span class="n">1</span> <span class="k2">)</span>
<span class="number"> 29</span>    <span class="k2">{</span>
<span class="number"> 30</span>      player . x <span class="k3">=</span> player . x <span class="k3">-</span> cy <span class="k2">;</span>
<span class="number"> 31</span>      player . y <span class="k3">=</span> player . y <span class="k3">+</span> cx <span class="k2">;</span>
<span class="number"> 32</span>    <span class="k2">}</span>
<span class="number"> 33</span>    <span class="k1">else</span>
<span class="number"> 34</span>    <span class="k2">{</span>
<span class="number"> 35</span>      <span class="k1">if</span><span class="k2">(</span> <a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a><span class="k3">&amp;</span><span class="n">2</span> <span class="k2">)</span>
<span class="number"> 36</span>      <span class="k2">{</span>
<span class="number"> 37</span>        player . x <span class="k3">=</span> player . x <span class="k3">+</span> cy <span class="k2">;</span>
<span class="number"> 38</span>        player . y <span class="k3">=</span> player . y <span class="k3">-</span> cx <span class="k2">;</span>
<span class="number"> 39</span>      <span class="k2">}</span>
<span class="number"> 40</span>    <span class="k2">}</span>
<span class="number"> 41</span>  <span class="k2">}</span>
<span class="number"> 42</span><span class="k2">}</span>
</div></div><p>

In that modification, I first test if there was a key pressed or a mouse button. We don&#39;t need to compute anything if there was no action.</p><p>If I have an action, I first start to compute the vector going from object (sprite) to mouse pointer. When I have it, I apply it differently if it&#39;s SPACE, mouse button 1 or 2, accordingly to the explanation from stackoverflow.</p><p><a href="http://www.allegro.cc/files/attachment/601269">I attached you the whole thing again.</a> Use SPACE to move to the mouse_pointer, and mouse button left/right for a perpendicular move against it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Fri, 07 May 2010 13:17:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That&#39;s all that I wanted to know!<br />Thanks a lot!<br /><img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neomex)</author>
		<pubDate>Fri, 07 May 2010 20:40:07 +0000</pubDate>
	</item>
</rss>
