<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>!= from many things (tile engine)</title>
		<link>http://www.allegro.cc/forums/view/602416</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 08 Dec 2009 00:09:21 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m working on a tile engine(with C language) and I&#39;d like to make multiple obstacles.<br />For example 1 is a terrain tile and is an obstacle,2 is a block tile ecc...<br />I don&#39;t want to write to much code because I don&#39;t like it.<br />I know I could write something like:</p><p>if(map[y][x] != 1 &amp;&amp; map[y][x] != 2 ......)etc...<br />then<br />don&#39;t move</p><p>Actually inside the [] there is a formula to obtain the tile coordinates from the real ones and so it&#39;s much longer.</p><p>Is there a way to write different from a lot of numbers in one line only?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (New_sun)</author>
		<pubDate>Mon, 07 Dec 2009 03:06:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Instead of storing your tiles as <tt>int</tt>s, you could make up a tile struct similar to this:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">typedef</span> <span class="k1">struct</span> <span class="k2">{</span>

   <span class="k1">int</span> ID<span class="k2">;</span>
   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp<span class="k2">;</span>
   <span class="k1">int</span> passable<span class="k2">;</span>

<span class="k2">}</span> Tile<span class="k2">;</span>
</pre></div></div><p>

And then have a map of tiles instead, then all you need to check is: <span class="source-code"><span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>map<span class="k2">[</span>y<span class="k2">]</span><span class="k2">[</span>x<span class="k2">]</span>.passable<span class="k2">)</span>...</span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Mon, 07 Dec 2009 03:12:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I would probably extend that to:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">typedef</span> <span class="k1">struct</span> <span class="k2">{</span>
   <span class="k1">int</span> ID<span class="k2">;</span>
   <span class="k1">int</span> passable<span class="k2">;</span>
<span class="k2">}</span> Tile<span class="k2">;</span>

<a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>tiles<span class="k2">[</span>MAX_TILES<span class="k2">]</span><span class="k2">;</span>

<span class="c">// ...</span>

<a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>tiles<span class="k2">[</span>map<span class="k2">[</span>y<span class="k2">]</span><span class="k2">[</span>x<span class="k2">]</span>.ID<span class="k2">]</span>...<span class="k2">)</span><span class="k2">;</span>

<span class="c">// ...</span>

<span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>map<span class="k2">[</span>y<span class="k2">]</span><span class="k2">[</span>x<span class="k2">]</span>.passable<span class="k2">)</span> ...
</pre></div></div><p>

could even pull out passable into a separate array too if you really wanted to. But that makes modifying passable per tile at run time inconvenient.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Mon, 07 Dec 2009 06:33:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/602416/841207#target">New_sun</a> said:</div><div class="quote"><p>I don&#39;t want to write to much code because I don&#39;t like it.</p></div></div><p><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Mon, 07 Dec 2009 07:50:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you all.</p><p>How can I initialize a matrix of structures?<br />I use the method of the third post.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (New_sun)</author>
		<pubDate>Mon, 07 Dec 2009 16:19:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>like that ?</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">typedef</span> <span class="k1">struct</span> STRUCTURE
<span class="k2">{</span>
       <span class="k1">int</span> x , y <span class="k2">;</span>
<span class="k2">}</span>STRUCTURE <span class="k2">;</span>

STRUCTURE <span class="k3">*</span>my_struct  <span class="k3">=</span> NULL <span class="k2">;</span>

my_struct <span class="k3">=</span> <span class="k2">(</span>STRUCTURE <span class="k3">*</span><span class="k2">)</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span> nb <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span> STRUCTURE <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span> <span class="c">/* where nb is the number of item you need */</span>

<span class="k1">if</span><span class="k2">(</span> <span class="k3">!</span>my_struct <span class="k2">)</span>
<span class="k2">{</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span> stderr , <span class="s">"There was a problem when allocating the struct\n"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Mon, 07 Dec 2009 18:28:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>But after the allocation I should initiliaze every element of the matrix by hand...<br />my_struct[0][0].x = 1;<br />my_struct[0][0].y = 0;</p><p>I read that with C you can initialize in this way:</p><p>STRUCTURE map[3][3]=<br />{<br />  {1,1},{1,1},{1,1},<br />  {2,0},{2,0},{2,0},<br />  {1,1},{1,1},{1,1}<br />};</p><p>y = 0 is passable,y = 1 is not passable.<br />x = 1 is a block,x = 2 is the terrain.</p><p>I&#39;d like something more visual.<br />I know it can be done because I&#39;ve searched on google,but my compiler doesn&#39;t accept that syntax.</p><p>I&#39;m thinking to create a function that say if a number is passable or not so I can continue to store the map of ints.<br />boolean isPassable(int x)<br />{<br />  if(x== 1 || x == 2 || x == 3)<br />    return TRUE;<br />  else<br />    return FALSE;<br />}</p><p>This should work also <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (New_sun)</author>
		<pubDate>Mon, 07 Dec 2009 19:05:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What you want is:</p><div class="source-code snippet"><div class="inner"><pre>STRUCTURE map<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k3">=</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="k2">}</span>,<span class="k2">{</span><span class="n">1</span>,<span class="n">1</span><span class="k2">}</span>,<span class="k2">{</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">2</span>,<span class="n">0</span><span class="k2">}</span>,<span class="k2">{</span><span class="n">2</span>,<span class="n">0</span><span class="k2">}</span>,<span class="k2">{</span><span class="n">2</span>,<span class="n">0</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="k2">}</span>,<span class="k2">{</span><span class="n">1</span>,<span class="n">1</span><span class="k2">}</span>,<span class="k2">{</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>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Mon, 07 Dec 2009 19:16:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And for a huge structure it&#39;ll be a pain in the <span class="cuss"><span>ass</span></span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Mon, 07 Dec 2009 19:45:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/602416/841320#target">GullRaDriel</a> said:</div><div class="quote"><p>And for a huge structure it&#39;ll be a pain in the <span class="cuss"><span>ass</span></span>.</p></div></div><p>

Indeed. That&#39;s when you want to start storing the data in a file and write a function to load it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Mon, 07 Dec 2009 19:53:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Haaa, long time since my first datafile ^^
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Mon, 07 Dec 2009 20:30:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you want to do it <b>really</b> simply, just let all of your tiles <span class="source-code"><span class="n">0</span></span>..<span class="source-code"><span class="n">127</span></span> (or <span class="source-code"><span class="n">0x00</span></span>..<span class="source-code"><span class="n">0x7F</span></span> hex) be &quot;non-obstacles&quot; and tiles <span class="source-code"><span class="n">128</span></span>..<span class="source-code"><span class="n">255</span></span> (or <span class="source-code"><span class="n">0x80</span></span>..<span class="source-code"><span class="n">0xFF</span></span> hex) be &quot;obstacles&quot;.</p><p><b>EDIT</b>: Whether you use <span class="source-code">tile<span class="k2">[</span><span class="n">0</span><span class="k2">]</span></span> or <span class="source-code">tile<span class="k2">[</span><span class="n">128</span><span class="k2">]</span></span>, you&#39;ll draw the same tiles.  It just determines whether or not you can walk onto that tile.</p><p>Then, simply check its MSB.</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span>tile <span class="k3">&amp;</span> <span class="n">0x80</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="c">// not an obstacle</span>
<span class="k2">{</span>
  ...
<span class="k2">}</span>
<span class="k1">else</span> <span class="c">// implies that (tile &amp; 0x80 == 1), and that it IS an obstacle</span>
<span class="k2">{</span>
  ...
<span class="k2">}</span>
</pre></div></div><p>

Not as nice as all of ^ their suggestions, but it&#39;s a hack, nonetheless.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (OnlineCop)</author>
		<pubDate>Tue, 08 Dec 2009 00:09:21 +0000</pubDate>
	</item>
</rss>
