<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Collision detection, Arrays and the state of the union</title>
		<link>http://www.allegro.cc/forums/view/587131</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 20 Aug 2006 20:19:12 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Good morning!</p><p>I have a couple of questions, one simple, one not so simple. Any way, I have been working with arrays to represent tile maps.
</p><div class="source-code snippet"><div class="inner"><pre> <span class="k1">int</span> map<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="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">32</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
<span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> j<span class="k3">=</span><span class="n">1</span><span class="k2">;</span>j<span class="k3">&lt;</span><span class="n">32</span><span class="k2">;</span>j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
map<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">2</span><span class="k2">;</span><span class="k2">}</span><span class="k2">}</span>
</pre></div></div><p>

Now here i can easily set all my array elements to random numbers (this reflects my next question), But How do i initialize the array with all 1024 elements set as I want them? IE: trying to plan out a tilemap that isn&#39;t random?? I have seen examples like </p><div class="source-code snippet"><div class="inner"><pre> <span class="k1">int</span> map<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="k3">=</span> <span class="k2">{</span><span class="k2">{</span><span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span><span class="k2">}</span><span class="k2">}</span>
<span class="k2">{</span><span class="k2">{</span><span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">1</span><span class="k2">}</span><span class="k2">}</span>
<span class="k2">{</span><span class="k2">{</span>.........<span class="k2">}</span><span class="k2">}</span>
</pre></div></div><p>

But that has never worked for me i always get a compile error!</p><p>The next subject i have come to is collision detection, this seems to be the hardest for me so far. LELete clarify, When I adhad aet map in my pong game, i could easily do the cocollisionetection because i always knew where the walls and paddles would be, but with a random tileset like my above example, how do i tell where the tiles are in my code?<br />What i mean is this, i have the code that makes a ball move, therefore i will always be able to check the position of the ball, but how do i detect for the placement of random collidable tiles?</p><p>Thanks for stopping by and taking a look!</p><p>Josh
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (joshua.tilson)</author>
		<pubDate>Sun, 20 Aug 2006 19:22:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
But How do i initialize the array with all 1024 elements set as I want them?
</p></div></div><p>
&#39;new&#39; them and then iterate through them.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
but with a random tileset like my above example, how do i tell where the tiles are in my code?
</p></div></div><p>
Use position variables to represent where you are colliding. Then match the position of your chracter against the tilemap.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Archon)</author>
		<pubDate>Sun, 20 Aug 2006 19:27:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
But that has never worked for me i always get a compile error!
</p></div></div><p>

Well, in the example you just gave, you missed the commas between the sets. Try compiling the following and see what happens. </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;stdio.h&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">int</span> map<span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k2">[</span><span class="n">10</span><span class="k2">]</span> <span class="k3">=</span> </td></tr><tr><td class="number">4</td><td>  <span class="k2">{</span><span class="k2">{</span><span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">2</span>, <span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">6</span>, <span class="n">3</span>, <span class="n">5</span><span class="k2">}</span>, </td></tr><tr><td class="number">5</td><td>  <span class="k2">{</span><span class="n">8</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">2</span>, <span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">6</span>, <span class="n">3</span>, <span class="n">5</span><span class="k2">}</span>,</td></tr><tr><td class="number">6</td><td>  <span class="k2">{</span><span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">2</span>, <span class="n">6</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">6</span>, <span class="n">3</span>, <span class="n">5</span><span class="k2">}</span>,</td></tr><tr><td class="number">7</td><td>  <span class="k2">{</span><span class="n">2</span>, <span class="n">2</span>, <span class="n">4</span>, <span class="n">2</span>, <span class="n">1</span>, <span class="n">4</span>, <span class="n">3</span>, <span class="n">6</span>, <span class="n">1</span>, <span class="n">5</span><span class="k2">}</span>,</td></tr><tr><td class="number">8</td><td>  <span class="k2">{</span><span class="n">1</span>, <span class="n">2</span>, <span class="n">8</span>, <span class="n">2</span>, <span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">6</span>, <span class="n">3</span>, <span class="n">5</span><span class="k2">}</span>,</td></tr><tr><td class="number">9</td><td>  <span class="k2">{</span><span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">2</span>, <span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">3</span>, <span class="n">5</span>, <span class="n">8</span><span class="k2">}</span>,</td></tr><tr><td class="number">10</td><td>  <span class="k2">{</span><span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">2</span>, <span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">6</span>, <span class="n">3</span>, <span class="n">5</span><span class="k2">}</span>,</td></tr><tr><td class="number">11</td><td>  <span class="k2">{</span><span class="n">8</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">8</span>, <span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">9</span>, <span class="n">3</span>, <span class="n">5</span><span class="k2">}</span>,</td></tr><tr><td class="number">12</td><td>  <span class="k2">{</span><span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">2</span>, <span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">6</span>, <span class="n">3</span>, <span class="n">5</span><span class="k2">}</span>,</td></tr><tr><td class="number">13</td><td>  <span class="k2">{</span><span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">2</span>, <span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span>, <span class="n">6</span>, <span class="n">3</span>, <span class="n">5</span><span class="k2">}</span><span class="k2">}</span><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> x, y<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>  </td></tr><tr><td class="number">17</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>  </td></tr><tr><td class="number">19</td><td>  <span class="k1">for</span> <span class="k2">(</span>x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> <span class="n">10</span><span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">20</td><td>    </td></tr><tr><td class="number">21</td><td>    <span class="k1">for</span> <span class="k2">(</span>y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> y <span class="k3">&lt;</span> <span class="n">10</span><span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">22</td><td>      </td></tr><tr><td class="number">23</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"%d "</span>, map<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>      </td></tr><tr><td class="number">25</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">26</td><td>    </td></tr><tr><td class="number">27</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    </td></tr><tr><td class="number">29</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">30</td><td>  </td></tr><tr><td class="number">31</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>  </td></tr><tr><td class="number">33</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

By the way, this is a valid way of assing values to arrays, but it means you have to recompile your game every time you change a map. It&#39;s better to load the values from a file.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Sun, 20 Aug 2006 20:10:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Lenny,</p><p>Perfect thank you, The previous examples i had seen had shown ; instead of ,  So that explains my problem there.</p><p>well let me show, whoever is interested, My lame attempt at collision detection, it works about 15%...</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="c">/* game design and psuedo code</span></td></tr><tr><td class="number">2</td><td><span class="c">**  initialize game</span></td></tr><tr><td class="number">3</td><td><span class="c">**   set up screen</span></td></tr><tr><td class="number">4</td><td><span class="c">**  draw paddle, ball and bricks</span></td></tr><tr><td class="number">5</td><td><span class="c">**  player launches ball</span></td></tr><tr><td class="number">6</td><td><span class="c">**   if ball is not below paddle</span></td></tr><tr><td class="number">7</td><td><span class="c">**    then move ball</span></td></tr><tr><td class="number">8</td><td><span class="c">**   else if ball collides with brick</span></td></tr><tr><td class="number">9</td><td><span class="c">**        then remove brick and add points</span></td></tr><tr><td class="number">10</td><td><span class="c">**   check to see if ball is below paddle or if all bricks are gone</span></td></tr><tr><td class="number">11</td><td><span class="c">**         then end game.</span></td></tr><tr><td class="number">12</td><td><span class="c">**</span></td></tr><tr><td class="number">13</td><td><span class="c">**</span></td></tr><tr><td class="number">14</td><td><span class="c">** drawscreen()</span></td></tr><tr><td class="number">15</td><td><span class="c">** collision()</span></td></tr><tr><td class="number">16</td><td><span class="c">** checkball pos()</span></td></tr><tr><td class="number">17</td><td><span class="c">**</span></td></tr><tr><td class="number">18</td><td><span class="c">** screen is 20x15tiles  X,Y</span></td></tr><tr><td class="number">19</td><td><span class="c">*/</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>ball<span class="k2">;</span></td></tr><tr><td class="number">24</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>paddle<span class="k2">;</span></td></tr><tr><td class="number">25</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>background<span class="k2">;</span></td></tr><tr><td class="number">26</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>brick<span class="k2">;</span></td></tr><tr><td class="number">27</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buf<span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td><span class="k1">const</span> <span class="k1">int</span> MIN_BALL_X <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td><span class="k1">const</span> <span class="k1">int</span> MAX_BALL_X <span class="k3">=</span> <span class="n">635</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td><span class="k1">const</span> <span class="k1">int</span> MIN_BALL_Y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td><span class="k1">const</span> <span class="k1">int</span> MAX_BALL_Y <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td> </td></tr><tr><td class="number">34</td><td><span class="k1">int</span> paddleX <span class="k3">=</span> <span class="n">275</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td><span class="k1">int</span> padTemp<span class="k2">;</span></td></tr><tr><td class="number">36</td><td><span class="k1">int</span> ballX, ballY<span class="k2">;</span></td></tr><tr><td class="number">37</td><td><span class="k1">int</span> dx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td><span class="k1">int</span> dy <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td><span class="k1">int</span> ballTempX, ballTempY<span class="k2">;</span></td></tr><tr><td class="number">40</td><td><span class="k1">int</span> brickMap<span class="k2">[</span><span class="n">20</span><span class="k2">]</span><span class="k2">[</span><span class="n">13</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>&#160;</td></tr><tr><td class="number">42</td><td><span class="k1">bool</span> ballOn <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>&#160;</td></tr><tr><td class="number">44</td><td><span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td><span class="k1">void</span> deinit<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> drawScreen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td><span class="k1">int</span> collide<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td><span class="k1">bool</span> movePaddle<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> moveBall<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> startBall<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td><span class="k1">void</span> updateScreen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td>&#160;</td></tr><tr><td class="number">54</td><td>&#160;</td></tr><tr><td class="number">55</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">56</td><td>  init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>    drawScreen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</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">59</td><td>  movePaddle<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>    updateScreen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">61</td><td>    moveBall<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">63</td><td>&#160;</td></tr><tr><td class="number">64</td><td>  deinit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td><span class="k2">}</span></td></tr><tr><td class="number">67</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">68</td><td>&#160;</td></tr><tr><td class="number">69</td><td>&#160;</td></tr><tr><td class="number">70</td><td>    </td></tr><tr><td class="number">71</td><td><span class="k1">void</span> drawScreen<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">72</td><td>     background <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">"background.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">73</td><td>     paddle <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">"paddle.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">74</td><td>     ball <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">"ball.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>     brick <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">"brick.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">76</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>, background, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">77</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>, paddle, <span class="n">275</span>, <span class="n">450</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">78</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>, ball, <span class="n">314</span>, <span class="n">438</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td>     </td></tr><tr><td class="number">80</td><td>    </td></tr><tr><td class="number">81</td><td>     <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">20</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">82</td><td>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span><span class="n">13</span><span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">83</td><td>         <span class="k2">{</span> <span class="k1">if</span> <span class="k2">(</span>brickMap<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> </td></tr><tr><td class="number">84</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>, brick, i <span class="k3">*</span> <span class="n">32</span>, j <span class="k3">*</span> <span class="n">32</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">85</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">86</td><td>         <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">87</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">88</td><td>     </td></tr><tr><td class="number">89</td><td><span class="k1">bool</span> movePaddle<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">90</td><td>     <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> paddleX <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">91</td><td>        <span class="k2">{</span><span class="k3">-</span><span class="k3">-</span>paddleX<span class="k2">;</span></td></tr><tr><td class="number">92</td><td>        <span class="k1">if</span><span class="k2">(</span>ballOn <span class="k3">=</span><span class="k3">=</span><span class="k1">true</span><span class="k2">)</span><span class="k2">{</span> <span class="k3">-</span><span class="k3">-</span>ballX<span class="k2">;</span><span class="k2">}</span></td></tr><tr><td class="number">93</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">94</td><td>     <span class="k1">else</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_RIGHT<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> paddleX <span class="k3">+</span> <span class="n">90</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">640</span><span class="k2">)</span></td></tr><tr><td class="number">95</td><td>          <span class="k2">{</span> <span class="k3">+</span><span class="k3">+</span>paddleX<span class="k2">;</span></td></tr><tr><td class="number">96</td><td>          <span class="k1">if</span><span class="k2">(</span>ballOn <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="k2">{</span><span class="k3">+</span><span class="k3">+</span>ballX<span class="k2">;</span><span class="k2">}</span></td></tr><tr><td class="number">97</td><td>           <span class="k2">}</span></td></tr><tr><td class="number">98</td><td>     <span class="k1">else</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="k3">&amp;</span><span class="k3">&amp;</span> ballOn <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">99</td><td>          startBall<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>          ballOn<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>          <span class="k2">}</span></td></tr><tr><td class="number">102</td><td>     <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">103</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">104</td><td>     </td></tr><tr><td class="number">105</td><td><span class="k1">void</span> startBall<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">106</td><td>     dx<span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">107</td><td>     dy<span class="k3">=</span> <span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">108</td><td>     <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">void</span> moveBall<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">111</td><td>     <span class="k1">int</span> ballCollisionX, ballCollisionY<span class="k2">;</span></td></tr><tr><td class="number">112</td><td>     ballTempX<span class="k3">=</span>ballX<span class="k2">;</span></td></tr><tr><td class="number">113</td><td>     ballTempY<span class="k3">=</span>ballY<span class="k2">;</span></td></tr><tr><td class="number">114</td><td>   </td></tr><tr><td class="number">115</td><td>   ballCollisionX <span class="k3">=</span> ballX <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">116</td><td>   ballCollisionY <span class="k3">=</span> ballY <span class="k3">/</span><span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">117</td><td>   <span class="k1">if</span> <span class="k2">(</span>brickMap<span class="k2">[</span>ballCollisionX<span class="k2">]</span><span class="k2">[</span>ballCollisionY<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">118</td><td>      <span class="k2">{</span>dy <span class="k3">=</span> <span class="k3">-</span>dy<span class="k2">;</span><span class="k2">}</span>    </td></tr><tr><td class="number">119</td><td> <span class="k1">if</span> <span class="k2">(</span>dy <span class="k3">&gt;</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> ballX <span class="k3">&gt;</span> paddleX <span class="k3">&amp;</span><span class="k3">&amp;</span> ballX <span class="k3">&lt;</span> paddleX <span class="k3">+</span> <span class="n">90</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> ballY <span class="k3">=</span><span class="k3">=</span> <span class="n">438</span><span class="k2">)</span> </td></tr><tr><td class="number">120</td><td>       <span class="k2">{</span></td></tr><tr><td class="number">121</td><td>        dy <span class="k3">=</span> <span class="k3">-</span>dy<span class="k2">;</span>  <span class="k2">}</span></td></tr><tr><td class="number">122</td><td> <span class="k1">else</span></td></tr><tr><td class="number">123</td><td>&#160;</td></tr><tr><td class="number">124</td><td>     <span class="k1">if</span> <span class="k2">(</span>dx <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">125</td><td>     <span class="k2">{</span></td></tr><tr><td class="number">126</td><td>      <span class="k1">if</span> <span class="k2">(</span>ballX <span class="k3">+</span> dx <span class="k3">&gt;</span> MIN_BALL_X<span class="k2">)</span></td></tr><tr><td class="number">127</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">128</td><td>    ballX <span class="k3">+</span><span class="k3">=</span> dx<span class="k2">;</span></td></tr><tr><td class="number">129</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">130</td><td>      <span class="k1">else</span></td></tr><tr><td class="number">131</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">132</td><td>    ballX <span class="k3">=</span> <span class="n">2</span> <span class="k3">*</span> MIN_BALL_X <span class="k3">-</span> dx <span class="k3">-</span> ballX<span class="k2">;</span></td></tr><tr><td class="number">133</td><td>    dx <span class="k3">=</span> <span class="k3">-</span>dx<span class="k2">;</span></td></tr><tr><td class="number">134</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">135</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">136</td><td>      </td></tr><tr><td class="number">137</td><td>      <span class="k1">else</span> <span class="c">// dx &gt; 0</span></td></tr><tr><td class="number">138</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">139</td><td>           <span class="k1">if</span> <span class="k2">(</span>ballX <span class="k3">+</span> dx <span class="k3">&lt;</span> MAX_BALL_X<span class="k2">)</span></td></tr><tr><td class="number">140</td><td>         <span class="k2">{</span></td></tr><tr><td class="number">141</td><td>       ballX <span class="k3">+</span><span class="k3">=</span> dx<span class="k2">;</span></td></tr><tr><td class="number">142</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">143</td><td>         <span class="k1">else</span></td></tr><tr><td class="number">144</td><td>         <span class="k2">{</span></td></tr><tr><td class="number">145</td><td>           ballX <span class="k3">=</span> <span class="n">2</span> <span class="k3">*</span> MAX_BALL_X <span class="k3">-</span> dx <span class="k3">-</span> ballX<span class="k2">;</span></td></tr><tr><td class="number">146</td><td>           dx <span class="k3">=</span> <span class="k3">-</span>dx<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>       <span class="k2">}</span> </td></tr><tr><td class="number">149</td><td>&#160;</td></tr><tr><td class="number">150</td><td>       <span class="k1">if</span> <span class="k2">(</span>dy <span class="k3">&lt;</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">151</td><td>       <span class="k2">{</span></td></tr><tr><td class="number">152</td><td>        <span class="k1">if</span> <span class="k2">(</span>ballY <span class="k3">+</span> dy <span class="k3">&gt;</span> MIN_BALL_Y <span class="k2">)</span></td></tr><tr><td class="number">153</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">154</td><td>          ballY <span class="k3">+</span><span class="k3">=</span> dy<span class="k2">;</span></td></tr><tr><td class="number">155</td><td>          <span class="k2">}</span></td></tr><tr><td class="number">156</td><td>          <span class="k1">else</span></td></tr><tr><td class="number">157</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">158</td><td>        ballY <span class="k3">=</span> <span class="n">2</span> <span class="k3">*</span> MIN_BALL_Y <span class="k3">-</span> dy <span class="k3">-</span> ballY<span class="k2">;</span></td></tr><tr><td class="number">159</td><td>        dy <span class="k3">=</span> <span class="k3">-</span>dy<span class="k2">;</span></td></tr><tr><td class="number">160</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">161</td><td>       <span class="k2">}</span></td></tr><tr><td class="number">162</td><td>       </td></tr><tr><td class="number">163</td><td>       <span class="k1">else</span> <span class="c">// dy &gt; 0</span></td></tr><tr><td class="number">164</td><td>       <span class="k2">{</span></td></tr><tr><td class="number">165</td><td>          <span class="k1">if</span> <span class="k2">(</span>ballY <span class="k3">+</span> dy <span class="k3">&lt;</span> MAX_BALL_Y<span class="k2">)</span></td></tr><tr><td class="number">166</td><td>          <span class="k2">{</span></td></tr><tr><td class="number">167</td><td>        ballY <span class="k3">+</span><span class="k3">=</span> dy<span class="k2">;</span></td></tr><tr><td class="number">168</td><td>          <span class="k2">}</span></td></tr><tr><td class="number">169</td><td>          <span class="k1">else</span></td></tr><tr><td class="number">170</td><td>          <span class="k2">{</span></td></tr><tr><td class="number">171</td><td>        ballY <span class="k3">=</span> <span class="n">2</span> <span class="k3">*</span> MAX_BALL_Y <span class="k3">-</span> dy <span class="k3">-</span> ballY<span class="k2">;</span></td></tr><tr><td class="number">172</td><td>        dy <span class="k3">=</span> <span class="k3">-</span>dy<span class="k2">;</span></td></tr><tr><td class="number">173</td><td>          <span class="k2">}</span></td></tr><tr><td class="number">174</td><td>         </td></tr><tr><td class="number">175</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">176</td><td>      </td></tr><tr><td class="number">177</td><td><span class="k2">}</span></td></tr><tr><td class="number">178</td><td>                </td></tr><tr><td class="number">179</td><td><span class="k1">void</span> updateScreen<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">180</td><td>     padTemp<span class="k3">=</span> paddleX<span class="k2">;</span></td></tr><tr><td class="number">181</td><td>     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><span class="n">90</span>,<span class="n">26</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">182</td><td>     <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buf, paddle, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">183</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>, buf, paddleX, <span class="n">450</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">184</td><td>     <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></td></tr><tr><td class="number">185</td><td>     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><span class="n">12</span>,<span class="n">12</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">186</td><td>     <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buf, ball, <span class="n">0</span>,<span class="n">0</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">187</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>, buf, ballX, ballY<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">188</td><td>     <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">189</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">190</td><td><span class="k1">void</span> init<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">191</td><td>  <span class="k1">int</span> depth, res<span class="k2">;</span></td></tr><tr><td class="number">192</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">193</td><td>  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></td></tr><tr><td class="number">194</td><td>  <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></td></tr><tr><td class="number">195</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>depth<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">196</td><td>  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, <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">197</td><td>  <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></td></tr><tr><td class="number">198</td><td>    <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></td></tr><tr><td class="number">199</td><td>    <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></td></tr><tr><td class="number">200</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">201</td><td>&#160;</td></tr><tr><td class="number">202</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">203</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">204</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">205</td><td>  </td></tr><tr><td class="number">206</td><td>  ballX<span class="k3">=</span> <span class="n">314</span><span class="k2">;</span></td></tr><tr><td class="number">207</td><td>  ballY<span class="k3">=</span> <span class="n">438</span><span class="k2">;</span></td></tr><tr><td class="number">208</td><td>    <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">20</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">209</td><td>       <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> <span class="n">13</span><span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">210</td><td>          brickMap<span class="k3">&lt;</span>i&gt;<span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">211</td><td>    <span class="c">/* add other initializations here */</span></td></tr><tr><td class="number">212</td><td><span class="k2">}</span></td></tr><tr><td class="number">213</td><td>&#160;</td></tr><tr><td class="number">214</td><td><span class="k1">void</span> deinit<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">215</td><td>  <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></td></tr><tr><td class="number">216</td><td>  <span class="c">/* add other deinitializations here */</span></td></tr><tr><td class="number">217</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

in particular it is this bit of code that does &#39;it&#39; wwhateverit is
</p><div class="source-code snippet"><div class="inner"><pre>ballCollisionX <span class="k3">=</span> ballX <span class="k3">/</span> <span class="n">32</span><span class="k2">;</span>
   ballCollisionY <span class="k3">=</span> ballY <span class="k3">/</span><span class="n">32</span><span class="k2">;</span>
   <span class="k1">if</span> <span class="k2">(</span>brickMap<span class="k2">[</span>ballCollisionX<span class="k2">]</span><span class="k2">[</span>ballCollisionY<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
      <span class="k2">{</span>dy <span class="k3">=</span> <span class="k3">-</span>dy<span class="k2">;</span><span class="k2">}</span>
</pre></div></div><p>

I take my ball&#39;s x and y and divide them by 32, in theory this gives me a whole number 1,2 etc since my tile size is 32x32. I then plug the divdividedy into the tilemap to see if it equals a collidable tile, if it does i change the direction of the ball. Obviously this is very rudimentary and imperfect...</p><p>I atatched the BMPs i am using so you can compile and check out exactly what it is doing...</p><p>thanks again!</p><p>EDIT: i guess one solution would to be ta make sure that the ballCOllisionX and Y are divisible by 1 to make sure they are whoel numbers? i can&#39;t use !/ i get a compile error /! works untill i run the program then it crashes!</p><p>EDIT 2: wait an int has to be a whol enumber doesn&#39;t it, thats why we have floating point variables.... Hmmm so then back to the drawing board on that one!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (joshua.tilson)</author>
		<pubDate>Sun, 20 Aug 2006 20:19:12 +0000</pubDate>
	</item>
</rss>
