<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>circle - circle collision</title>
		<link>http://www.allegro.cc/forums/view/591587</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 31 May 2007 23:45:27 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi, I am making an air hockey game and I need some help with puck to the thing you use to hit the puck collision. The collision isn&#39;t the real problem, the problem is that if I move the puck hitting thing to fast it goes through the puck and sends it in the wrong direction. I need some advise???
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (chaseC)</author>
		<pubDate>Sat, 26 May 2007 06:13:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What, <a href="http://www.allegro.cc/forums/thread/591420">one account and thread</a> wasn&#39;t enough to get people to program your game for you?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sat, 26 May 2007 06:45:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Line collision. Begin the line at the puck, end it at the puck&#39;s coordinates plus it&#39;s velocity. Check to see if that line collides with any of the walls (other lines)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ceagon Xylas)</author>
		<pubDate>Sat, 26 May 2007 08:36:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What I mean is that if the paddle (I don&#39;t know if it is actually called a paddle) moves to fast when it is in the path of the puck, it changes position so many pixels at a time that it moves into the puck and sends it in the wrong direction. Also I am not zavirx, my code doen&#39;t look anything like his -&gt;
</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>&#160;</td></tr><tr><td class="number">3</td><td><span class="p">#define BALL_SPEED_MOD    12</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="k1">struct</span> comp<span class="k2">{</span></td></tr><tr><td class="number">6</td><td>       <span class="k1">float</span> x<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>       <span class="k1">float</span> y<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>       </td></tr><tr><td class="number">9</td><td>       <span class="k1">float</span> x_speed<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>       <span class="k1">float</span> y_speed<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>       </td></tr><tr><td class="number">12</td><td>       <span class="k1">int</span> h<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>       <span class="k1">int</span> w<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>       </td></tr><tr><td class="number">15</td><td>       <span class="k1">int</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td><span class="k1">struct</span> player<span class="k2">{</span></td></tr><tr><td class="number">19</td><td>       <span class="k1">float</span> x<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>       <span class="k1">float</span> y<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>       </td></tr><tr><td class="number">22</td><td>       <span class="k1">float</span> x_speed<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>       <span class="k1">float</span> y_speed<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>       </td></tr><tr><td class="number">25</td><td>       <span class="k1">int</span> h<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>       <span class="k1">int</span> w<span class="k2">;</span></td></tr><tr><td class="number">27</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>comp p2<span class="k2">;</span></td></tr><tr><td class="number">30</td><td>comp puck<span class="k2">;</span></td></tr><tr><td class="number">31</td><td>&#160;</td></tr><tr><td class="number">32</td><td>player p1<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">;</span></td></tr><tr><td class="number">35</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>Player<span class="k2">;</span></td></tr><tr><td class="number">36</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>Comp<span class="k2">;</span></td></tr><tr><td class="number">37</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>Puck<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="k1">int</span> GameSpeed<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">void</span> SpeedCounter<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">42</td><td>    GameSpeed<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td><span class="k2">}</span> <a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>SpeedCounter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td><span class="k1">void</span> SetUp<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td><span class="k1">void</span> HandlePuck<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td><span class="k1">void</span> Bounce<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td><span class="k1">void</span> Bounce2<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td><span class="k1">void</span> MovePlayer<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td><span class="k1">void</span> DrawStuff<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td><span class="k1">void</span> SetUp<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">53</td><td>     </td></tr><tr><td class="number">54</td><td>     p1.x <span class="k3">=</span> <span class="n">260</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td>     p1.y <span class="k3">=</span> <span class="n">240</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>     p1.w <span class="k3">=</span> <span class="n">28</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>     p1.h <span class="k3">=</span> <span class="n">28</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>     </td></tr><tr><td class="number">59</td><td>     p2.x <span class="k3">=</span> <span class="n">380</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>     p2.y <span class="k3">=</span> <span class="n">240</span><span class="k2">;</span></td></tr><tr><td class="number">61</td><td>     p2.w <span class="k3">=</span> <span class="n">28</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>     p2.h <span class="k3">=</span> <span class="n">28</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>     </td></tr><tr><td class="number">64</td><td>     puck.x <span class="k3">=</span> <span class="n">320</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td>     puck.y <span class="k3">=</span> <span class="n">140</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>     puck.w <span class="k3">=</span> <span class="n">23</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>     puck.h <span class="k3">=</span> <span class="n">23</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>     puck.y_speed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td>     puck.x_speed <span class="k3">=</span> <span class="k3">-</span><span class="n">1</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>&#160;</td></tr><tr><td class="number">72</td><td><span class="k1">void</span> HandlePuck<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">73</td><td>     </td></tr><tr><td class="number">74</td><td>     Bounce<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>     Bounce2<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">76</td><td>     </td></tr><tr><td class="number">77</td><td>     puck.x <span class="k3">+</span><span class="k3">=</span> puck.x_speed<span class="k2">;</span></td></tr><tr><td class="number">78</td><td>     puck.y <span class="k3">+</span><span class="k3">=</span> puck.y_speed<span class="k2">;</span></td></tr><tr><td class="number">79</td><td>     </td></tr><tr><td class="number">80</td><td>     <span class="k1">if</span><span class="k2">(</span>puck.y_speed <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck.y <span class="k3">-</span> puck.w <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">60</span> <span class="k3">|</span><span class="k3">|</span> puck.y_speed <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck.y <span class="k3">+</span> puck.w <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">420</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">81</td><td>        puck.y_speed <span class="k3">=</span> <span class="k3">-</span>puck.y_speed<span class="k2">;</span></td></tr><tr><td class="number">82</td><td>     <span class="k2">}</span><span class="k1">if</span><span class="k2">(</span>puck.x_speed <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck.x <span class="k3">-</span> puck.w <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">20</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck.y <span class="k3">&lt;</span> <span class="n">180</span> <span class="k3">|</span><span class="k3">|</span> puck.x_speed <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck.x <span class="k3">-</span> </td></tr><tr><td class="number">83</td><td>     puck.w <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">20</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck.y <span class="k3">+</span> puck.w <span class="k3">&gt;</span> <span class="n">280</span><span class="k3">|</span><span class="k3">|</span> puck.x_speed <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck.x <span class="k3">+</span> puck.w <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">619</span><span class="k3">&amp;</span><span class="k3">&amp;</span> puck.y <span class="k3">-</span> </td></tr><tr><td class="number">84</td><td>     puck.w <span class="k3">&lt;</span> <span class="n">180</span> <span class="k3">|</span><span class="k3">|</span> puck.x_speed <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck.x <span class="k3">+</span> puck.w <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">619</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck.y <span class="k3">-</span> puck.w <span class="k3">&gt;</span> <span class="n">280</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">85</td><td>        puck.x_speed <span class="k3">=</span> <span class="k3">-</span>puck.x_speed<span class="k2">;</span></td></tr><tr><td class="number">86</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">87</td><td>     puck.x_speed <span class="k3">*</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">996</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td>     puck.y_speed <span class="k3">*</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">996</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td><span class="k2">}</span></td></tr><tr><td class="number">90</td><td>&#160;</td></tr><tr><td class="number">91</td><td><span class="k1">void</span> Bounce<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">92</td><td>     </td></tr><tr><td class="number">93</td><td>     <span class="k1">static</span> <span class="k1">int</span> puck_bounce <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">94</td><td>     <span class="k1">const</span> <span class="k1">float</span> dx <span class="k3">=</span> p1.x <span class="k3">-</span> puck.x<span class="k2">;</span></td></tr><tr><td class="number">95</td><td>     <span class="k1">const</span> <span class="k1">float</span> dy <span class="k3">=</span> p1.y <span class="k3">-</span> puck.y<span class="k2">;</span></td></tr><tr><td class="number">96</td><td>     <span class="k1">const</span> <span class="k1">float</span> dist <span class="k3">=</span> p1.w <span class="k3">+</span> puck.w<span class="k2">;</span></td></tr><tr><td class="number">97</td><td>&#160;</td></tr><tr><td class="number">98</td><td>     <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>dx <span class="k3">*</span> dx<span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span>dy <span class="k3">*</span> dy<span class="k2">)</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="k2">(</span>dist <span class="k3">*</span> dist<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck_bounce <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">99</td><td>            puck.x_speed <span class="k3">=</span> <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>p1.x <span class="k3">+</span> p1.w<span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>puck.x <span class="k3">+</span> puck.w<span class="k2">)</span><span class="k2">)</span><span class="k3">/</span>BALL_SPEED_MOD<span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span>p1.x_speed<span class="k3">/</span>BALL_SPEED_MOD<span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>puck.x_speed<span class="k3">/</span>BALL_SPEED_MOD<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>            puck.y_speed <span class="k3">=</span> <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>p1.y <span class="k3">+</span> p1.w<span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>puck.y <span class="k3">+</span> puck.w<span class="k2">)</span><span class="k2">)</span><span class="k3">/</span>BALL_SPEED_MOD<span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span>p1.y_speed<span class="k3">/</span>BALL_SPEED_MOD<span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>puck.y_speed<span class="k3">/</span>BALL_SPEED_MOD<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>            puck_bounce <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">102</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">103</td><td>     <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>dx <span class="k3">*</span> dx<span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span>dy <span class="k3">*</span> dy<span class="k2">)</span><span class="k2">)</span> <span class="k3">&gt;</span> <span class="k2">(</span>dist <span class="k3">*</span> dist<span class="k2">)</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">104</td><td>            puck_bounce <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">106</td><td><span class="k2">}</span></td></tr><tr><td class="number">107</td><td>&#160;</td></tr><tr><td class="number">108</td><td><span class="k1">void</span> Bounce2<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">109</td><td>     </td></tr><tr><td class="number">110</td><td>     <span class="k1">const</span> <span class="k1">float</span> dx <span class="k3">=</span> p2.x <span class="k3">-</span> puck.x<span class="k2">;</span></td></tr><tr><td class="number">111</td><td>     <span class="k1">const</span> <span class="k1">float</span> dy <span class="k3">=</span> p2.y <span class="k3">-</span> puck.y<span class="k2">;</span></td></tr><tr><td class="number">112</td><td>     <span class="k1">const</span> <span class="k1">float</span> dist <span class="k3">=</span> p2.w <span class="k3">+</span> puck.w<span class="k2">;</span></td></tr><tr><td class="number">113</td><td>&#160;</td></tr><tr><td class="number">114</td><td>     <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>dx <span class="k3">*</span> dx<span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span>dy <span class="k3">*</span> dy<span class="k2">)</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="k2">(</span>dist <span class="k3">*</span> dist<span class="k2">)</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">115</td><td>            puck.x_speed <span class="k3">=</span> <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>p2.x <span class="k3">+</span> p2.w<span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>puck.x <span class="k3">+</span> puck.w<span class="k2">)</span><span class="k2">)</span><span class="k3">/</span>BALL_SPEED_MOD<span class="k2">)</span> <span class="k3">+</span> p2.x_speed<span class="k2">;</span></td></tr><tr><td class="number">116</td><td>            puck.y_speed <span class="k3">=</span> <span class="k3">-</span><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>p2.y <span class="k3">+</span> p2.w<span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>puck.y <span class="k3">+</span> puck.w<span class="k2">)</span><span class="k2">)</span><span class="k3">/</span>BALL_SPEED_MOD<span class="k2">)</span> <span class="k3">+</span> p2.y_speed<span class="k2">;</span></td></tr><tr><td class="number">117</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">118</td><td><span class="k2">}</span></td></tr><tr><td class="number">119</td><td>     </td></tr><tr><td class="number">120</td><td><span class="k1">void</span> MovePlayer<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">121</td><td>     </td></tr><tr><td class="number">122</td><td>     <span class="k1">int</span> mickeyx<span class="k2">;</span></td></tr><tr><td class="number">123</td><td>     <span class="k1">int</span> mickeyy<span class="k2">;</span></td></tr><tr><td class="number">124</td><td>     </td></tr><tr><td class="number">125</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">126</td><td>     </td></tr><tr><td class="number">127</td><td>     <span class="k1">if</span><span class="k2">(</span><span class="k3">!</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="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</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="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">128</td><td>                   p1.x_speed <span class="k3">=</span> mickeyx<span class="k3">/</span><span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">129</td><td>                   p1.y_speed <span class="k3">=</span> mickeyy<span class="k3">/</span><span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">130</td><td>     <span class="k2">}</span><span class="k1">else</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="k2">{</span></td></tr><tr><td class="number">131</td><td>           p1.y_speed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">132</td><td>           <span class="k1">if</span><span class="k2">(</span>mickeyx <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> mickeyx <span class="k3">&gt;</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">133</td><td>                      p1.x_speed <span class="k3">*</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">99</span><span class="k2">;</span></td></tr><tr><td class="number">134</td><td>           <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span></td></tr><tr><td class="number">135</td><td>                 p1.x_speed <span class="k3">=</span> mickeyx<span class="k3">/</span><span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">136</td><td>           <span class="k2">}</span></td></tr><tr><td class="number">137</td><td>     <span class="k2">}</span><span class="k1">else</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="k2">{</span></td></tr><tr><td class="number">138</td><td>           p1.x_speed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">139</td><td>           <span class="k1">if</span><span class="k2">(</span>mickeyy <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> mickeyy <span class="k3">&gt;</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">140</td><td>                      p1.y_speed <span class="k3">*</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">99</span><span class="k2">;</span></td></tr><tr><td class="number">141</td><td>           <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span></td></tr><tr><td class="number">142</td><td>                 p1.y_speed <span class="k3">=</span> mickeyy<span class="k3">/</span><span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">143</td><td>           <span class="k2">}</span></td></tr><tr><td class="number">144</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">145</td><td>     p1.x <span class="k3">+</span><span class="k3">=</span> p1.x_speed<span class="k2">;</span></td></tr><tr><td class="number">146</td><td>     p1.y <span class="k3">+</span><span class="k3">=</span> p1.y_speed<span class="k2">;</span></td></tr><tr><td class="number">147</td><td><span class="k2">}</span></td></tr><tr><td class="number">148</td><td>&#160;</td></tr><tr><td class="number">149</td><td><span class="k1">void</span> DrawStuff<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">150</td><td>     </td></tr><tr><td class="number">151</td><td>     <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">152</td><td>     </td></tr><tr><td class="number">153</td><td>     <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span> buffer, <span class="n">20</span>, <span class="n">60</span>, <span class="n">619</span>, <span class="n">420</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></td></tr><tr><td class="number">154</td><td>     <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span> buffer, <span class="n">0</span>, <span class="n">180</span>, <span class="n">20</span>, <span class="n">280</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">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">155</td><td>     <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span> buffer, <span class="n">619</span>, <span class="n">180</span>, <span class="n">639</span>, <span class="n">280</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">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">156</td><td>     <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">(</span> buffer, <span class="n">320</span>, <span class="n">60</span>, <span class="n">320</span>, <span class="n">420</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></td></tr><tr><td class="number">157</td><td>     <a href="http://www.allegro.cc/manual/circle" target="_blank"><span class="a">circle</span></a><span class="k2">(</span> buffer, <span class="n">320</span>, <span class="n">240</span>, <span class="n">80</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">128</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">158</td><td>     <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, Puck, puck.x <span class="k3">-</span> puck.w, puck.y <span class="k3">-</span> puck.w<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">159</td><td>     <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, Comp, p2.x <span class="k3">-</span> p2.w, p2.y <span class="k3">-</span> p2.h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">160</td><td>     <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, Player, p1.x <span class="k3">-</span> p1.w, p1.y <span class="k3">-</span> p1.h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">161</td><td>     </td></tr><tr><td class="number">162</td><td>     <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, buffer, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">163</td><td><span class="k2">}</span></td></tr><tr><td class="number">164</td><td>&#160;</td></tr><tr><td class="number">165</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">166</td><td>&#160;</td></tr><tr><td class="number">167</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">168</td><td>    <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">169</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">170</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">171</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">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">172</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">173</td><td>    </td></tr><tr><td class="number">174</td><td>    <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>speed_counter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">175</td><td>    <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>GameSpeed<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">176</td><td>    <a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a><span class="k2">(</span>SpeedCounter, BPS_TO_TIMER<span class="k2">(</span><span class="n">90</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">177</td><td>    </td></tr><tr><td class="number">178</td><td>    <a href="http://www.allegro.cc/manual/set_mouse_range" target="_blank"><span class="a">set_mouse_range</span></a><span class="k2">(</span><span class="n">20</span>, <span class="n">60</span>, <span class="n">320</span>, <span class="n">420</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">179</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">32</span>, <span class="n">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">180</td><td>    </td></tr><tr><td class="number">181</td><td>    buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span> <span class="n">640</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">182</td><td>    Player <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">"hockey_paddle.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">183</td><td>    Comp <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">"hockey_paddle2.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">184</td><td>    Puck <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">"hockey_puck.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">185</td><td>    <a href="http://www.allegro.cc/manual/set_window_title" target="_blank"><span class="a">set_window_title</span></a><span class="k2">(</span><span class="s">"Air Hockey"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">186</td><td>    </td></tr><tr><td class="number">187</td><td>    SetUp<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">188</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><span class="k2">{</span></td></tr><tr><td class="number">189</td><td>           <span class="k1">while</span><span class="k2">(</span>GameSpeed <span class="k3">&gt;</span> <span class="n">1</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">190</td><td>                           MovePlayer<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">191</td><td>                           HandlePuck<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">192</td><td>                           GameSpeed--<span class="k2">;</span></td></tr><tr><td class="number">193</td><td>           <span class="k2">}</span></td></tr><tr><td class="number">194</td><td>           DrawStuff<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">195</td><td>    <span class="k2">}</span>  </td></tr><tr><td class="number">196</td><td>    </td></tr><tr><td class="number">197</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">198</td><td>&#160;</td></tr><tr><td class="number">199</td><td><span class="k2">}</span></td></tr><tr><td class="number">200</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>Also, I actually know how to add code tags;D
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (chaseC)</author>
		<pubDate>Sun, 27 May 2007 05:57:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My suggestion will solve this. Just replace the word &#39;walls&#39; with &#39;paddles.&#39;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ceagon Xylas)</author>
		<pubDate>Sun, 27 May 2007 11:50:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are the puck and the paddle both circular? The subject of the post is &quot;circle - circle collision&quot;, but in the code you posted the puck has a width and a height which means it can be a rectangle. I&#39;ll assume you meant a circle-circle collision.</p><p>A circle is the set of points that is at an exact distance (the radius) from the circle centre point. This means that any point who&#39;se closest distance to the centre is is less than the radius is colliding with the circle. For two moving circles, you just need to find if the closest distance between the two line segments (each line segment is from the initial position of the puck to the position of the puck with the  distance traveled during the iteration (velocity * length_of_iteration)) is less than the combined radii of the two circles. Don&#39;t forget to take into account that if the puck rebounds off a wall, the line-segment is broken.</p><p>AE.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Andrei Ellman)</author>
		<pubDate>Sun, 27 May 2007 16:46:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>haha, ill be coming here when mines done because mines just square at the moment...finally, someone with a similar problem.</p><p>And yeah your code is much more confusing and i guess advance than mine but mine kinda works so i dont mind because i know what im doing just dont know how to do it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (zavirax)</author>
		<pubDate>Thu, 31 May 2007 23:45:27 +0000</pubDate>
	</item>
</rss>
