<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Array colision detection</title>
		<link>http://www.allegro.cc/forums/view/591263</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 04 May 2007 17:47:00 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi, I&#39;m making a breakout clone but I&#39;ve run into a problem with the collision detection. I&#39;m using an array to store the positions of all the bricks but I don&#39;t know how to check to see if the ball has hot them. </p><p>Can someone help please?:(
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (chaseC)</author>
		<pubDate>Fri, 04 May 2007 07:22:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>First answer: attach yer bloody code <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>You could use simple bounding box collisions.</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="k1">struct</span> sball</td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>  <span class="k1">int</span> x, y<span class="k2">;</span> <span class="c">//ball's position</span></td></tr><tr><td class="number">5</td><td>  <span class="k1">int</span> r<span class="k2">;</span> <span class="c">//ball's radius</span></td></tr><tr><td class="number">6</td><td><span class="k2">}</span> sball<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="k1">struct</span> sbrick</td></tr><tr><td class="number">9</td><td><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>  <span class="k1">int</span> x, y<span class="k2">;</span> <span class="c">//brick's position</span></td></tr><tr><td class="number">11</td><td>  <span class="k1">int</span> w, h<span class="k2">;</span> <span class="c">//brick's size</span></td></tr><tr><td class="number">12</td><td><span class="k2">}</span> sbrick<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>sball ball<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>sbrick brick<span class="k2">[</span><span class="n">32</span><span class="k2">]</span><span class="k2">[</span><span class="n">32</span><span class="k2">]</span><span class="k2">;</span> <span class="c">//assuming it's a 32x32 2D array, change as needed</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><span class="c">//...</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> y<span class="k3">&lt;</span><span class="n">32</span><span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">20</td><td><span class="k2">{</span></td></tr><tr><td class="number">21</td><td><span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> x<span class="k3">&lt;</span><span class="n">32</span><span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">22</td><td><span class="k2">{</span></td></tr><tr><td class="number">23</td><td>  <span class="k1">if</span> <span class="k2">(</span>ball.y-ball.r<span class="k3">&lt;</span><span class="k3">=</span>brick<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.y<span class="k3">+</span>brick<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.h <span class="k3">&amp;</span><span class="k3">&amp;</span> ball.x<span class="k3">+</span>ball.r&gt;brick<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.x <span class="k3">&amp;</span> ball.x<span class="k3">+</span>ball.r<span class="k3">&lt;</span>brick<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.x<span class="k3">+</span>brick<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.w<span class="k2">)</span> <span class="c">//check the top bound of the ball versus the bottom bound of the brick</span></td></tr><tr><td class="number">24</td><td>  <span class="k2">{</span> <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Hit!"</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">25</td><td>  <span class="k1">if</span> <span class="k2">(</span>ball.x-ball.r<span class="k3">&lt;</span><span class="k3">=</span>brick<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.x<span class="k3">+</span>brick<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.w <span class="k3">&amp;</span><span class="k3">&amp;</span> ball.y-ball.r&gt;brick<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.y <span class="k3">&amp;</span><span class="k3">&amp;</span> ball.y<span class="k3">+</span>ball.r<span class="k3">&lt;</span>brick<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span>.y<span class="k2">)</span> <span class="c">//check the left bound of the ball versus the right bound of the brick</span></td></tr><tr><td class="number">26</td><td>  <span class="k2">{</span> <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Hit!"</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">27</td><td>  </td></tr><tr><td class="number">28</td><td>  <span class="c">//... and so on ...</span></td></tr><tr><td class="number">29</td><td>  </td></tr><tr><td class="number">30</td><td><span class="k2">}</span></td></tr><tr><td class="number">31</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

It&#39;s not tested, so it may contain mistakes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CursedTyrant)</author>
		<pubDate>Fri, 04 May 2007 17:47:00 +0000</pubDate>
	</item>
</rss>
