<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Hopefully my last map-related question.</title>
		<link>http://www.allegro.cc/forums/view/593575</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 10 Oct 2007 14:19:18 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Whenever I load my txt, it doesn&#39;t seem to be drawing tiles in the proper locations.  For example (in my case) tile 4 is where tile 2 should be and vice versa.  What am I doing wrong?</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// The map loading function</span>

<span class="k1">void</span> LoadMap<span class="k2">(</span><span class="k1">const</span> string<span class="k3">&amp;</span> filename<span class="k2">)</span> 
<span class="k2">{</span>    
  ifstream file<span class="k2">;</span> 
  file.open<span class="k2">(</span><span class="k2">(</span><span class="s">"data/"</span><span class="k3">+</span>filename<span class="k3">+</span><span class="s">".txt"</span><span class="k2">)</span>.c_str<span class="k2">(</span><span class="k2">)</span>, ios::in<span class="k2">)</span><span class="k2">;</span> 
  <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_W<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> 
    <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_H<span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
      file <span class="k3">&gt;</span><span class="k3">&gt;</span> mMapArray<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k2">;</span>
  file.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// Drawing the map</span>

  <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_W<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> 
    <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_H<span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
      mTile<span class="k2">[</span>mMapArray<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span>...<span class="k2">)</span>
</pre></div></div><p>

This is how my txt looks.</p><div class="source-code snippet"><div class="inner"><pre><span class="n">6</span> <span class="n">2</span> <span class="n">2</span> <span class="n">2</span> <span class="n">2</span> <span class="n">2</span> <span class="n">2</span> <span class="n">2</span> <span class="n">2</span> <span class="n">7</span> 
<span class="n">4</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">5</span> 
<span class="n">4</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">5</span> 
<span class="n">4</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">5</span> 
<span class="n">4</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">5</span> 
<span class="n">4</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">5</span> 
<span class="n">4</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">5</span> 
<span class="n">4</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">5</span> 
<span class="n">4</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">5</span> 
<span class="n">8</span> <span class="n">3</span> <span class="n">3</span> <span class="n">3</span> <span class="n">3</span> <span class="n">3</span> <span class="n">3</span> <span class="n">3</span> <span class="n">3</span> <span class="n">9</span>
</pre></div></div><p>

And this is how it&#39;s displaying it.</p><div class="source-code snippet"><div class="inner"><pre><span class="n">6</span> <span class="n">4</span> <span class="n">4</span> <span class="n">4</span> <span class="n">4</span> <span class="n">4</span> <span class="n">4</span> <span class="n">4</span> <span class="n">4</span> <span class="n">8</span>
<span class="n">2</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">2</span> 
<span class="n">2</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">2</span> 
<span class="n">2</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">2</span> 
<span class="n">2</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">2</span> 
<span class="n">2</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">2</span> 
<span class="n">2</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">2</span> 
<span class="n">2</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">2</span> 
<span class="n">2</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">2</span> 
<span class="n">7</span> <span class="n">5</span> <span class="n">5</span> <span class="n">5</span> <span class="n">5</span> <span class="n">5</span> <span class="n">5</span> <span class="n">5</span> <span class="n">5</span> <span class="n">9</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (valentino)</author>
		<pubDate>Wed, 10 Oct 2007 09:38:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That&#39;s because you are reading it in the wrong order. Since you have for(x) outer and for(y) inner, it reads the data column-wise instead of row-wise. Just switch the for&#39;s and you&#39;ll be fine.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Wed, 10 Oct 2007 09:46:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Also it&#39;s generally better to store maps in (y,x) since you&#39;ll naturally want to access them rows at a time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Wed, 10 Oct 2007 09:49:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh.. I always thought it goes x then y.  Thanks!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (valentino)</author>
		<pubDate>Wed, 10 Oct 2007 09:50:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>One thing I notice is :
</p><div class="source-code snippet"><div class="inner"><pre>  <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_W<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> 
    <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_H<span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
      mTile<span class="k2">[</span>mMapArray<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span>...<span class="k2">)</span>
</pre></div></div><p>
Probably a typo , but mMapArray probably isn&#39;t a pointer and the data not pointed to by it doesn&#39;t have a member named Draw does it? (Missing square bracket)<br />Shouldn&#39;t it be :<br />(mTile[ mMapArray[x][y] ])-&gt;Draw(...)</p><p>Global variables can screw things up when you go to modify your program.  I try to make all my functions autonomous by passing them all the information they need or making them capable of getting it themselves.</p><p>In LoadMap the line :<br />file &gt;&gt; mMapArray[x][y];</p><p>What data type is mMapArray? Is it integer?</p><p>The extraction operator &#39;&gt;&gt;&#39; can be a little tricky. Check out &#39;manipulators&#39; at this page on <a href="http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E.html">operator&gt;&gt;</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 10 Oct 2007 10:04:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>(Edited)</p><p>Oops, I forgot to put the other ].  mTile is a &quot;BITMAP&quot; pointer and mMapArray is an int.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (valentino)</author>
		<pubDate>Wed, 10 Oct 2007 10:09:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Did Jonatan and Matthew&#39;s advice fix all your problems?</p><p>Is this line psuedo-code? BITMAP objects don&#39;t have any methods named Draw.<br />mTile[mMapArray[x][y]]-&gt;Draw(...)</p><p>Is mTile a pointer to a bitmap pointer? (BITMAP**)<br />What is your drawing code?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 10 Oct 2007 10:58:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yup all fixed up.  And yes it is, it&#39;s not a BITMAP, just sorta like one.  I was wondering how I can handle layers without having to make a bunch of different arrays.  This is the code I&#39;m currently using for my map, found recently.  If it can be altered to accommodate layers that would be great, because I want to keep using it.</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">#ifndef ARRAY2D_H</span></td></tr><tr><td class="number">2</td><td><span class="p">#define ARRAY2D_H</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">template</span><span class="k3">&lt;</span><span class="k1">class</span> dataType&gt;</td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="k1">class</span> Array2D</td></tr><tr><td class="number">9</td><td><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>  size_t mCol<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>  std::vector<span class="k3">&lt;</span>dataType&gt; mData<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td>  public:</td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>  Array2D<span class="k2">(</span>size_t rows, size_t cols<span class="k2">)</span> <span class="k2">:</span> mData<span class="k2">(</span>rows<span class="k3">*</span>cols<span class="k2">)</span>, mCol<span class="k2">(</span>cols<span class="k2">)</span> <span class="k2">{</span> <span class="k2">}</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>  dataType<span class="k3">&amp;</span> <span class="k1">operator</span><span class="k2">(</span><span class="k2">)</span><span class="k2">(</span>size_t row, size_t col<span class="k2">)</span></td></tr><tr><td class="number">18</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">19</td><td>    <span class="k1">return</span> mData<span class="k2">[</span>row<span class="k3">*</span>mCol <span class="k3">+</span> col<span class="k2">]</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>&#160;</td></tr><tr><td class="number">22</td><td>  <span class="k1">const</span> dataType<span class="k3">&amp;</span> <span class="k1">operator</span><span class="k2">(</span><span class="k2">)</span><span class="k2">(</span>size_t row, size_t col<span class="k2">)</span> <span class="k1">const</span></td></tr><tr><td class="number">23</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>    <span class="k1">return</span> mData<span class="k2">[</span>row<span class="k3">*</span>mCol <span class="k3">+</span> col<span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">26</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>&#160;</td></tr><tr><td class="number">28</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (valentino)</author>
		<pubDate>Wed, 10 Oct 2007 11:04:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You could change your class into 3D instead of 2D , just add a variable for layer or depth or height and resize everything. You would have to rewrite your operators() then but that wouldn&#39;t be too hard.</p><p>After that , just load one layer from one text map at a time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 10 Oct 2007 11:52:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
After that , just load one layer from one text map at a time.
</p></div></div><p>

Could you give me an example of how that would be done or how that would look in the txt?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (valentino)</author>
		<pubDate>Wed, 10 Oct 2007 12:03:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">bool</span> LoadMapLevel<span class="k2">(</span><span class="k1">const</span> string<span class="k3">&amp;</span> filename , <span class="k1">int</span> maplevel<span class="k2">)</span> <span class="k2">{</span>
  <span class="c">// maplevel from 0 to number of levels - 1 , with 0 being ground level or lowest</span>
  ifstream file<span class="k2">;</span>
  file.open<span class="k2">(</span><span class="k2">(</span><span class="s">"data/"</span><span class="k3">+</span>filename<span class="k3">+</span><span class="s">".txt"</span><span class="k2">)</span>.c_str<span class="k2">(</span><span class="k2">)</span> , ios::in<span class="k2">)</span><span class="k2">;</span>
  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>file.good<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span><span class="k2">}</span>
  <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> Row <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> Row <span class="k3">&lt;</span> MAP_H <span class="k2">;</span> Row<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> Col <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> Col <span class="k3">&lt;</span> MAP_W <span class="k2">;</span> Col<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
      file <span class="k3">&gt;</span><span class="k3">&gt;</span> mMapArray<span class="k2">[</span><span class="k2">(</span> <span class="k2">(</span>maplevel<span class="k3">*</span><span class="k2">(</span>MaxNumRow<span class="k3">*</span>MaxNumCol<span class="k2">)</span> <span class="k3">+</span> Row<span class="k3">*</span>MaxNumCol <span class="k3">+</span> Col<span class="k2">)</span><span class="k2">]</span><span class="k2">;</span>
      <span class="k1">if</span> <span class="k2">(</span>file.eof<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span><span class="k2">}</span>
    <span class="k2">}</span>
  <span class="k2">}</span>
  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

I would make LoadMapLevel a member of a wrapper class for Array3D and I would make Array3D know all of its bounds , not just the number of columns.</p><p>Store each layer of the map in a different text file.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 10 Oct 2007 13:40:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Store each layer of the map in a different text file.
</p></div></div><p>

Is there any way I can avoid that?  I want to try and keep the layers for the same map in same txt.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (valentino)</author>
		<pubDate>Wed, 10 Oct 2007 14:03:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Put the layers one after each other, and put the loading inside a for(l = 0; l &lt; LAYERS_NUMBER; l++) { /* loading here */ } ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Wed, 10 Oct 2007 14:14:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Oh.. I always thought it goes x then y. Thanks!
</p></div></div><p>
Think about it and it should make sense. Just follow the loop in your head.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Wed, 10 Oct 2007 14:19:18 +0000</pubDate>
	</item>
</rss>
