<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>mappy and collision removal</title>
		<link>http://www.allegro.cc/forums/view/590212</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 23 Feb 2007 08:18:26 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hey, ive searched the forums and found a lot of questions and answers relating to mappy, but i couldnt find anything that solves my problem.  </p><p>i have a map made with mappy, with 3 different block types.  <br />1- land, walkable.<br />2- grass, collision, non walkable.  BUT can be removed so that it is walkable.<br />3- rock, collision, non walkable.</p><p>here is a sample map<br />333333333<br />121212121<br />333333333</p><p>the player starts off on the left side and needs to make it across to the right side.<br />and in order to do that, the player needs to remove the grass by hitting a key (SPACE for example) so that he can make his way across.</p><p>now my problem arise, how do i code it so that SPACE removes the grass and changes it to a normal block 1(land)?</p><p>thanks
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (rxtype)</author>
		<pubDate>Fri, 23 Feb 2007 03:36:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;ve got an array on intetegers, right? (I&#39;ve never used Mappy). Just change the value:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span>tile_that_is_faced_is<span class="k2">(</span><span class="n">2</span><span class="k2">)</span> <span class="c">// if you are facing the grass tile</span>
    <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span><span class="k2">)</span> <span class="c">// if you press the space key</span>
<span class="k2">{</span>
       map<span class="k2">[</span>that_tile<span class="k2">]</span> <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="c">// change it to land</span>
       update_map_graphics<span class="k2">(</span>that_tile, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// if you need run a special function to change that tile</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jeff Bernard)</author>
		<pubDate>Fri, 23 Feb 2007 05:16:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>nope, its not on an array, the map is actually loaded as a .fmp file..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (rxtype)</author>
		<pubDate>Fri, 23 Feb 2007 05:34:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I can&#39;t really help but perhaps the .fmp file format wasn&#39;t really meant to be writable. You either need to find out how to change the info in the .fmp which might require some help from whoever wrote mappy or write your own level editor which for the type of thing you&#39;re doing is dead easy :-</p><p>For example you could have a little bitmap. Choose a colour for each tile type you have. Load the bitmap. Declare a 2D array tiles[MAP_WIDTH][MAP_HEIGHT] then read the bitmap and write the array :</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="k1">enum</span> tile_types<span class="k2">{</span> LAND, GRASS, ROCKS <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td>....</td></tr><tr><td class="number">5</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> MAP_WIDTH<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>x<span class="k2">)</span></td></tr><tr><td class="number">6</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> MAP_HEIGHT<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>y<span class="k2">)</span></td></tr><tr><td class="number">7</td><td>   <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>      colour <span class="k3">=</span> <a href="http://www.allegro.cc/manual/getpixel" target="_blank"><span class="a">getpixel</span></a><span class="k2">(</span>level_bitmap, x, y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>      </td></tr><tr><td class="number">10</td><td>      tiles<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span> <span class="k3">=</span> get_tile_type<span class="k2">(</span>colour<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>   <span class="k2">}</span> </td></tr><tr><td class="number">12</td><td>....</td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="k1">int</span> get_tile_type<span class="k2">(</span>colour<span class="k2">)</span></td></tr><tr><td class="number">15</td><td><span class="k2">{</span></td></tr><tr><td class="number">16</td><td>   <span class="k1">if</span><span class="k2">(</span>colour <span class="k3">=</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span>............<span class="k2">)</span><span class="k2">)</span> <span class="c">/* colour for land */</span></td></tr><tr><td class="number">17</td><td>      <span class="k1">return</span> LAND<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>   <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>colour <span class="k3">=</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span>........<span class="k2">)</span><span class="k2">)</span>  <span class="c">/* colour for grass */</span>  </td></tr><tr><td class="number">19</td><td>      <span class="k1">return</span> GRASS<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>   <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>colour <span class="k3">=</span><span class="k3">=</span> <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span>....<span class="k2">)</span><span class="k2">)</span> <span class="c">/* colour for ROCKS */</span></td></tr><tr><td class="number">21</td><td>      <span class="k1">return</span> ROCKS<span class="k2">;</span></td></tr><tr><td class="number">22</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

then you&#39;ve got an array with the type of tile in and you can change it&#39;s<br />elements by doing what Jeff said.</p><p>Sorry if that&#39;s patronising - maybe you&#39;re keen to make use of Mappy in which case you need to learn about the .fmp format so that you can copy the map info into an array like above.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (William Labbett)</author>
		<pubDate>Fri, 23 Feb 2007 06:36:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ok! <br />i figured it out, i had to use the method MapSetBlock, but now i have another question, which method am i suppose to use to retrieve a block id??<br />because i need to know if the block is grass or rock to determine if its removeable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (rxtype)</author>
		<pubDate>Fri, 23 Feb 2007 08:18:26 +0000</pubDate>
	</item>
</rss>
