<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Tile Map System Out of Whack</title>
		<link>http://www.allegro.cc/forums/view/612065</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 20 Feb 2013 22:42:57 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I threw together a simple application to test out drawing tiles to the screen. This is nothing new, but I had never drawn more than three or four different tiles at once, so I wanted to test out using sixteen different tiles (just for fun). Anyway, each tile&#39;s data is stored in a text file and uses an integer to represent a particular tile. For example, &quot;10&quot; would represent a water tile. However, I&#39;ve run into an issue with tiles with a value greater than nine. It seems to treat &quot;10&quot; as both &quot;1&quot; and &quot;0&quot;, thus scrambling the screen.</p><p><b>main.cpp</b>
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">   2</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   4</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">   6</span>
<span class="number">   7</span><span class="p">#include "map.h"</span>
<span class="number">   8</span>
<span class="number">   9</span>
<span class="number">  10</span>
<span class="number">  11</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number">  12</span>
<span class="number">  13</span>
<span class="number">  14</span>
<span class="number">  15</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  16</span>
<span class="number">  17</span>
<span class="number">  18</span>
<span class="number">  19</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span>
<span class="number">  21</span>
<span class="number">  22</span>  <span class="c">// May map object, of course</span>
<span class="number">  23</span>
<span class="number">  24</span>  Map Map<span class="k2">;</span>
<span class="number">  25</span>
<span class="number">  26</span>
<span class="number">  27</span>
<span class="number">  28</span>  <span class="k1">int</span> screenW <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span>
<span class="number">  29</span>
<span class="number">  30</span>  <span class="k1">int</span> screenH <span class="k3">=</span> <span class="n">360</span><span class="k2">;</span>
<span class="number">  31</span>
<span class="number">  32</span>  
<span class="number">  33</span>
<span class="number">  34</span>  <span class="k1">bool</span> done, redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  35</span>
<span class="number">  36</span>
<span class="number">  37</span>
<span class="number">  38</span>  <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_RESIZABLE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span>
<span class="number">  40</span>
<span class="number">  41</span>
<span class="number">  42</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>screenW, screenH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>
<span class="number">  44</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span>
<span class="number">  46</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> <span class="n">60</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</span>
<span class="number">  48</span>
<span class="number">  49</span>
<span class="number">  50</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"Just Testing"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  51</span>
<span class="number">  52</span>
<span class="number">  53</span>
<span class="number">  54</span>  <a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>
<span class="number">  56</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>
<span class="number">  58</span>
<span class="number">  59</span>
<span class="number">  60</span>  <span class="c">// Change the current working directory to the assets folder</span>
<span class="number">  61</span>
<span class="number">  62</span>  ALLEGRO_PATH <span class="k3">*</span>path <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_standard_path"><span class="a">al_get_standard_path</span></a><span class="k2">(</span>ALLEGRO_RESOURCES_PATH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>
<span class="number">  64</span>  <a href="http://www.allegro.cc/manual/al_append_path_component"><span class="a">al_append_path_component</span></a><span class="k2">(</span>path, <span class="s">"assets"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>
<span class="number">  66</span>  <a href="http://www.allegro.cc/manual/al_change_directory"><span class="a">al_change_directory</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_path_cstr"><span class="a">al_path_cstr</span></a><span class="k2">(</span>path, <span class="s">'/'</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</span>
<span class="number">  68</span>  <a href="http://www.allegro.cc/manual/al_destroy_path"><span class="a">al_destroy_path</span></a><span class="k2">(</span>path<span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>
<span class="number">  70</span>
<span class="number">  71</span>
<span class="number">  72</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>tiles <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"map.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>
<span class="number">  74</span>
<span class="number">  75</span>
<span class="number">  76</span>  <span class="c">// Validate resources</span>
<span class="number">  77</span>
<span class="number">  78</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>tiles<span class="k2">)</span> done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>Map.load<span class="k2">(</span><span class="s">"map.txt"</span><span class="k2">)</span><span class="k2">)</span> done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  81</span>
<span class="number">  82</span>
<span class="number">  83</span>
<span class="number">  84</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  85</span>
<span class="number">  86</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>
<span class="number">  88</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>
<span class="number">  90</span>
<span class="number">  91</span>
<span class="number">  92</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>
<span class="number">  94</span>
<span class="number">  95</span>
<span class="number">  96</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  97</span>
<span class="number">  98</span>
<span class="number">  99</span>
<span class="number"> 100</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number"> 101</span>
<span class="number"> 102</span>
<span class="number"> 103</span>
<span class="number"> 104</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</span>
<span class="number"> 106</span>
<span class="number"> 107</span>
<span class="number"> 108</span>    <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 109</span>
<span class="number"> 110</span>
<span class="number"> 111</span>
<span class="number"> 112</span>      <span class="c">// Update</span>
<span class="number"> 113</span>
<span class="number"> 114</span>
<span class="number"> 115</span>
<span class="number"> 116</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 117</span>
<span class="number"> 118</span>    <span class="k2">}</span>
<span class="number"> 119</span>
<span class="number"> 120</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 121</span>
<span class="number"> 122</span>
<span class="number"> 123</span>
<span class="number"> 124</span>      <span class="c">// Player quit the game</span>
<span class="number"> 125</span>
<span class="number"> 126</span>      done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 127</span>
<span class="number"> 128</span>    <span class="k2">}</span>
<span class="number"> 129</span>
<span class="number"> 130</span>
<span class="number"> 131</span>
<span class="number"> 132</span>    <span class="k1">if</span> <span class="k2">(</span>redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 133</span>
<span class="number"> 134</span>
<span class="number"> 135</span>
<span class="number"> 136</span>      <span class="c">// Draw</span>
<span class="number"> 137</span>
<span class="number"> 138</span>
<span class="number"> 139</span>
<span class="number"> 140</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 141</span>
<span class="number"> 142</span>
<span class="number"> 143</span>
<span class="number"> 144</span>      Map.draw<span class="k2">(</span>tiles<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 145</span>
<span class="number"> 146</span>      
<span class="number"> 147</span>
<span class="number"> 148</span>      <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 149</span>
<span class="number"> 150</span>      <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 151</span>
<span class="number"> 152</span>    <span class="k2">}</span>
<span class="number"> 153</span>
<span class="number"> 154</span>  <span class="k2">}</span>
<span class="number"> 155</span>
<span class="number"> 156</span>
<span class="number"> 157</span>
<span class="number"> 158</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</span>
<span class="number"> 160</span>  <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>
<span class="number"> 162</span>  <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 163</span>
<span class="number"> 164</span>  <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>tiles<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>
<span class="number"> 166</span>
<span class="number"> 167</span>
<span class="number"> 168</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 169</span>
<span class="number"> 170</span><span class="k2">}</span>
</div></div><p>

<b>map.h</b>
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">  4</span>
<span class="number">  5</span><span class="p">#include &lt;string&gt;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="p">#include &lt;algorithm&gt;</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>
<span class="number"> 12</span>
<span class="number"> 13</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>
<span class="number"> 16</span>
<span class="number"> 17</span><span class="k1">class</span> Map <span class="k2">{</span>
<span class="number"> 18</span>
<span class="number"> 19</span>
<span class="number"> 20</span>
<span class="number"> 21</span>  public:
<span class="number"> 22</span>
<span class="number"> 23</span>    <span class="k1">int</span> loadCounterX, loadCounterY, sizeX, sizeY, tile<span class="k2">[</span><span class="n">100</span><span class="k2">]</span><span class="k2">[</span><span class="n">100</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 24</span>
<span class="number"> 25</span>
<span class="number"> 26</span>
<span class="number"> 27</span>    <span class="k1">bool</span> load<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> filename<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span>    <span class="k1">void</span> draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>
<span class="number"> 31</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>

<b>map.cpp</b>
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include "map.h"</span>
<span class="number">   2</span>
<span class="number">   3</span>
<span class="number">   4</span>
<span class="number">   5</span><span class="k1">bool</span> Map::load<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> filename<span class="k2">)</span> <span class="k2">{</span>
<span class="number">   6</span>
<span class="number">   7</span>
<span class="number">   8</span>
<span class="number">   9</span>  loadCounterX <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  10</span>
<span class="number">  11</span>  loadCounterY <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  12</span>
<span class="number">  13</span>
<span class="number">  14</span>  <span class="c">// Attempt to open map file</span>
<span class="number">  15</span>
<span class="number">  16</span>  std::ifstream openfile<span class="k2">(</span>filename<span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span>
<span class="number">  18</span>
<span class="number">  19</span>  <span class="c">// Validate map file</span>
<span class="number">  20</span>
<span class="number">  21</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>openfile.is_open<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  22</span>
<span class="number">  23</span>
<span class="number">  24</span>    <span class="c">// Failed to open map</span>
<span class="number">  25</span>
<span class="number">  26</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  27</span>
<span class="number">  28</span>  <span class="k2">}</span>
<span class="number">  29</span>
<span class="number">  30</span>  <span class="k1">else</span> <span class="k2">{</span>
<span class="number">  31</span>
<span class="number">  32</span>
<span class="number">  33</span>    <span class="c">// Extract data from map file and throw it into a string</span>
<span class="number">  34</span>
<span class="number">  35</span>    std::string <a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k2">;</span>
<span class="number">  36</span>
<span class="number">  37</span>    std::getline<span class="k2">(</span>openfile, <a href="http://www.allegro.cc/manual/line"><span class="a">line</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>
<span class="number">  39</span>
<span class="number">  40</span>    <span class="c">// Remove white spaces</span>
<span class="number">  41</span>
<span class="number">  42</span>    line.erase<span class="k2">(</span>std::remove<span class="k2">(</span>line.begin<span class="k2">(</span><span class="k2">)</span>, line.end<span class="k2">(</span><span class="k2">)</span>, <span class="s">' '</span><span class="k2">)</span>, line.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>
<span class="number">  44</span>
<span class="number">  45</span>    <span class="c">// Our map will be this long across</span>
<span class="number">  46</span>
<span class="number">  47</span>    sizeX <span class="k3">=</span> line.length<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>
<span class="number">  49</span>
<span class="number">  50</span>    <span class="c">// Start reading at the beginning of the file</span>
<span class="number">  51</span>
<span class="number">  52</span>    openfile.seekg<span class="k2">(</span><span class="n">0</span>, std::ios::beg<span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>
<span class="number">  54</span>
<span class="number">  55</span>
<span class="number">  56</span>    <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>openfile.eof<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  57</span>
<span class="number">  58</span>
<span class="number">  59</span>      <span class="c">// Assign tile data into array</span>
<span class="number">  60</span>
<span class="number">  61</span>      openfile <span class="k3">&gt;</span><span class="k3">&gt;</span> tile<span class="k2">[</span>loadCounterX<span class="k2">]</span><span class="k2">[</span>loadCounterY<span class="k2">]</span><span class="k2">;</span>
<span class="number">  62</span>
<span class="number">  63</span>
<span class="number">  64</span>      <span class="c">// Jump to the next tile in map file</span>
<span class="number">  65</span>
<span class="number">  66</span>      loadCounterX<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  67</span>
<span class="number">  68</span>
<span class="number">  69</span>
<span class="number">  70</span>      <span class="k1">if</span> <span class="k2">(</span>loadCounterX <span class="k3">&gt;</span><span class="k3">=</span> sizeX<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  71</span>
<span class="number">  72</span>
<span class="number">  73</span>        <span class="c">// Hit end of map across, so jump to the next line</span>
<span class="number">  74</span>
<span class="number">  75</span>        loadCounterX <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  76</span>
<span class="number">  77</span>        loadCounterY<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  78</span>
<span class="number">  79</span>      <span class="k2">}</span>
<span class="number">  80</span>
<span class="number">  81</span>    <span class="k2">}</span>
<span class="number">  82</span>
<span class="number">  83</span>
<span class="number">  84</span>    <span class="c">// Our map will be this tall up and down</span>
<span class="number">  85</span>
<span class="number">  86</span>    sizeY <span class="k3">=</span> loadCounterY<span class="k2">;</span>
<span class="number">  87</span>
<span class="number">  88</span>
<span class="number">  89</span>
<span class="number">  90</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  91</span>
<span class="number">  92</span>  <span class="k2">}</span>
<span class="number">  93</span>
<span class="number">  94</span><span class="k2">}</span>
<span class="number">  95</span>
<span class="number">  96</span>
<span class="number">  97</span>
<span class="number">  98</span><span class="k1">void</span> Map::draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bitmap<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  99</span>
<span class="number"> 100</span>
<span class="number"> 101</span>  <span class="c">// Throw everything into a buffer</span>
<span class="number"> 102</span>
<span class="number"> 103</span>  <a href="http://www.allegro.cc/manual/al_hold_bitmap_drawing"><span class="a">al_hold_bitmap_drawing</span></a><span class="k2">(</span><span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>
<span class="number"> 105</span>
<span class="number"> 106</span>
<span class="number"> 107</span>  <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> sizeX<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 108</span>
<span class="number"> 109</span>
<span class="number"> 110</span>
<span class="number"> 111</span>    <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> sizeY<span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 112</span>
<span class="number"> 113</span>
<span class="number"> 114</span>
<span class="number"> 115</span>      <span class="k1">switch</span> <span class="k2">(</span>tile<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>
<span class="number"> 116</span>
<span class="number"> 117</span>
<span class="number"> 118</span>
<span class="number"> 119</span>        <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span>
<span class="number"> 120</span>
<span class="number"> 121</span>
<span class="number"> 122</span>
<span class="number"> 123</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">0</span>, <span class="n">0</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>
<span class="number"> 125</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 126</span>
<span class="number"> 127</span>
<span class="number"> 128</span>
<span class="number"> 129</span>        <span class="k1">case</span> <span class="n">2</span><span class="k2">:</span>
<span class="number"> 130</span>
<span class="number"> 131</span>
<span class="number"> 132</span>
<span class="number"> 133</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">16</span> <span class="k3">+</span> <span class="n">1</span>, <span class="n">0</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 134</span>
<span class="number"> 135</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 136</span>
<span class="number"> 137</span>
<span class="number"> 138</span>
<span class="number"> 139</span>        <span class="k1">case</span> <span class="n">3</span><span class="k2">:</span>
<span class="number"> 140</span>
<span class="number"> 141</span>
<span class="number"> 142</span>
<span class="number"> 143</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">16</span> <span class="k3">*</span> <span class="n">2</span> <span class="k3">+</span> <span class="n">2</span>, <span class="n">0</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>
<span class="number"> 145</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 146</span>
<span class="number"> 147</span>
<span class="number"> 148</span>
<span class="number"> 149</span>        <span class="k1">case</span> <span class="n">4</span><span class="k2">:</span>
<span class="number"> 150</span>
<span class="number"> 151</span>
<span class="number"> 152</span>
<span class="number"> 153</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">16</span> <span class="k3">*</span> <span class="n">3</span> <span class="k3">+</span> <span class="n">3</span>, <span class="n">0</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 154</span>
<span class="number"> 155</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 156</span>
<span class="number"> 157</span>
<span class="number"> 158</span>
<span class="number"> 159</span>        <span class="k1">case</span> <span class="n">5</span><span class="k2">:</span>
<span class="number"> 160</span>
<span class="number"> 161</span>
<span class="number"> 162</span>
<span class="number"> 163</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">0</span>, <span class="n">16</span> <span class="k3">+</span> <span class="n">1</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 164</span>
<span class="number"> 165</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 166</span>
<span class="number"> 167</span>
<span class="number"> 168</span>
<span class="number"> 169</span>        <span class="k1">case</span> <span class="n">6</span><span class="k2">:</span>
<span class="number"> 170</span>
<span class="number"> 171</span>
<span class="number"> 172</span>
<span class="number"> 173</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">16</span> <span class="k3">+</span> <span class="n">1</span>, <span class="n">16</span> <span class="k3">+</span> <span class="n">1</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 174</span>
<span class="number"> 175</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 176</span>
<span class="number"> 177</span>
<span class="number"> 178</span>
<span class="number"> 179</span>        <span class="k1">case</span> <span class="n">7</span><span class="k2">:</span>
<span class="number"> 180</span>
<span class="number"> 181</span>
<span class="number"> 182</span>
<span class="number"> 183</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">16</span> <span class="k3">*</span> <span class="n">2</span> <span class="k3">+</span> <span class="n">2</span>, <span class="n">16</span> <span class="k3">+</span> <span class="n">1</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 184</span>
<span class="number"> 185</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 186</span>
<span class="number"> 187</span>
<span class="number"> 188</span>
<span class="number"> 189</span>        <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span>
<span class="number"> 190</span>
<span class="number"> 191</span>
<span class="number"> 192</span>
<span class="number"> 193</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">16</span> <span class="k3">*</span> <span class="n">3</span> <span class="k3">+</span> <span class="n">3</span>, <span class="n">16</span> <span class="k3">+</span> <span class="n">1</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 194</span>
<span class="number"> 195</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 196</span>
<span class="number"> 197</span>
<span class="number"> 198</span>
<span class="number"> 199</span>        <span class="k1">case</span> <span class="n">9</span><span class="k2">:</span>
<span class="number"> 200</span>
<span class="number"> 201</span>
<span class="number"> 202</span>
<span class="number"> 203</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">0</span>, <span class="n">16</span> <span class="k3">*</span> <span class="n">2</span> <span class="k3">+</span> <span class="n">2</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 204</span>
<span class="number"> 205</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 206</span>
<span class="number"> 207</span>
<span class="number"> 208</span>
<span class="number"> 209</span>        <span class="k1">case</span> <span class="n">10</span><span class="k2">:</span>
<span class="number"> 210</span>
<span class="number"> 211</span>
<span class="number"> 212</span>
<span class="number"> 213</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">16</span> <span class="k3">+</span> <span class="n">1</span>, <span class="n">16</span> <span class="k3">*</span> <span class="n">2</span> <span class="k3">+</span> <span class="n">2</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 214</span>
<span class="number"> 215</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 216</span>
<span class="number"> 217</span>
<span class="number"> 218</span>
<span class="number"> 219</span>        <span class="k1">case</span> <span class="n">11</span><span class="k2">:</span>
<span class="number"> 220</span>
<span class="number"> 221</span>
<span class="number"> 222</span>
<span class="number"> 223</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">16</span> <span class="k3">*</span> <span class="n">2</span> <span class="k3">+</span> <span class="n">2</span>, <span class="n">16</span> <span class="k3">*</span> <span class="n">2</span> <span class="k3">+</span> <span class="n">2</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 224</span>
<span class="number"> 225</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 226</span>
<span class="number"> 227</span>
<span class="number"> 228</span>
<span class="number"> 229</span>        <span class="k1">case</span> <span class="n">12</span><span class="k2">:</span>
<span class="number"> 230</span>
<span class="number"> 231</span>
<span class="number"> 232</span>
<span class="number"> 233</span>          <span class="c">//</span>
<span class="number"> 234</span>
<span class="number"> 235</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 236</span>
<span class="number"> 237</span>
<span class="number"> 238</span>
<span class="number"> 239</span>        <span class="k1">case</span> <span class="n">13</span><span class="k2">:</span>
<span class="number"> 240</span>
<span class="number"> 241</span>
<span class="number"> 242</span>
<span class="number"> 243</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">0</span>, <span class="n">16</span> <span class="k3">*</span> <span class="n">3</span> <span class="k3">+</span> <span class="n">3</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 244</span>
<span class="number"> 245</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 246</span>
<span class="number"> 247</span>
<span class="number"> 248</span>
<span class="number"> 249</span>        <span class="k1">case</span> <span class="n">14</span><span class="k2">:</span>
<span class="number"> 250</span>
<span class="number"> 251</span>
<span class="number"> 252</span>
<span class="number"> 253</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">16</span> <span class="k3">+</span> <span class="n">1</span>, <span class="n">16</span> <span class="k3">*</span> <span class="n">3</span> <span class="k3">+</span> <span class="n">3</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 254</span>
<span class="number"> 255</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 256</span>
<span class="number"> 257</span>
<span class="number"> 258</span>
<span class="number"> 259</span>        
<span class="number"> 260</span>
<span class="number"> 261</span>
<span class="number"> 262</span>
<span class="number"> 263</span>        <span class="k1">case</span> <span class="n">16</span><span class="k2">:</span>
<span class="number"> 264</span>
<span class="number"> 265</span>
<span class="number"> 266</span>
<span class="number"> 267</span>          <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>bitmap, <span class="n">16</span> <span class="k3">*</span> <span class="n">3</span> <span class="k3">+</span> <span class="n">3</span>, <span class="n">16</span> <span class="k3">*</span> <span class="n">3</span> <span class="k3">+</span> <span class="n">3</span>, <span class="n">16</span>, <span class="n">16</span>, <span class="n">16</span> <span class="k3">*</span> x, <span class="n">16</span> <span class="k3">*</span> y, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 268</span>
<span class="number"> 269</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 270</span>
<span class="number"> 271</span>      <span class="k2">}</span>
<span class="number"> 272</span>
<span class="number"> 273</span>    <span class="k2">}</span>
<span class="number"> 274</span>
<span class="number"> 275</span>  <span class="k2">}</span>
<span class="number"> 276</span>
<span class="number"> 277</span>
<span class="number"> 278</span>  <span class="c">// Release the buffer and draw to the screen</span>
<span class="number"> 279</span>
<span class="number"> 280</span>  <a href="http://www.allegro.cc/manual/al_hold_bitmap_drawing"><span class="a">al_hold_bitmap_drawing</span></a><span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 281</span>
<span class="number"> 282</span><span class="k2">}</span>
</div></div><p>

<b>map.txt</b>
</p><div class="source-code snippet"><div class="inner"><pre><span class="n">10</span> <span class="n">10</span> <span class="n">10</span> <span class="n">10</span> <span class="n">10</span> <span class="n">10</span> <span class="n">10</span>
<span class="n">10</span> <span class="n">3</span> <span class="n">5</span> <span class="n">5</span> <span class="n">5</span> <span class="n">4</span> <span class="n">10</span>

<span class="n">10</span> <span class="n">7</span> <span class="n">9</span> <span class="n">9</span> <span class="n">9</span> <span class="n">8</span> <span class="n">10</span>

<span class="n">10</span> <span class="n">7</span> <span class="n">9</span> <span class="n">9</span> <span class="n">9</span> <span class="n">8</span> <span class="n">10</span>

<span class="n">10</span> <span class="n">7</span> <span class="n">9</span> <span class="n">9</span> <span class="n">9</span> <span class="n">8</span> <span class="n">10</span>

<span class="n">10</span> <span class="n">1</span> <span class="n">6</span> <span class="n">6</span> <span class="n">6</span> <span class="n">2</span> <span class="n">10</span>
<span class="n">10</span> <span class="n">10</span> <span class="n">10</span> <span class="n">10</span> <span class="n">10</span> <span class="n">10</span> <span class="n">10</span>
</pre></div></div><p>

I&#39;ve attached an image of what it results in. Any ideas why it&#39;s screwing my map up? Should I not use any tile above nine, it works just fine... But that would limit me to 10 (0-9) tiles. <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Eric Johnson)</author>
		<pubDate>Mon, 18 Feb 2013 07:00:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What I usually do when I encounter problems like these is to use a symbol or letter to let my program know when to stop and add whatever it read up to that symbol or letter. </p><p>I quickly looked over your code, what you&#39;re basically doing is just checking each number and adding it to the array. This wont work as you&#39;ve already witnessed, the reason for this is when you&#39;re checking against 10, a double digit number. you add 1 to the array then you read again and add 0.</p><p>One possible fix would be what I described above, example:</p><div class="source-code snippet"><div class="inner"><pre>
 std::string buffer<span class="k2">;</span>
 <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>openfile.eof<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>


      <span class="c">// Assign tile data into array</span>
      buffer.clear<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
      openfile.getline<span class="k2">(</span>buffer.c_str<span class="k2">(</span><span class="k2">)</span>, <span class="n">3</span>, <span class="s">'.'</span><span class="k2">)</span><span class="k2">;</span>
      tile<span class="k2">[</span>loadCounterX<span class="k2">]</span><span class="k2">[</span>loadCounterY<span class="k2">]</span> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_54.html" target="_blank">atoi</a><span class="k2">(</span>buffer.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
      
     <span class="c">// rest of the stuff you wrote here</span>
<span class="k2">}</span>
</pre></div></div><p>

map.txt would look like this:</p><div class="source-code snippet"><div class="inner"><pre><span class="n">10</span>.<span class="n">10</span>.<span class="n">10</span>.<span class="n">10</span>.<span class="n">10</span>.<span class="n">10</span>.<span class="n">10</span>
<span class="n">10</span>.<span class="n">3</span>.<span class="n">5</span>.<span class="n">5</span>.<span class="n">5</span>.<span class="n">4</span>.<span class="n">10</span>
<span class="n">10</span>.<span class="n">7</span>.<span class="n">9</span>.<span class="n">9</span>.<span class="n">9</span>.<span class="n">8</span>.<span class="n">10</span>
<span class="n">10</span>.<span class="n">7</span>.<span class="n">9</span>.<span class="n">9</span>.<span class="n">9</span>.<span class="n">8</span>.<span class="n">10</span>
<span class="n">10</span>.<span class="n">7</span>.<span class="n">9</span>.<span class="n">9</span>.<span class="n">8</span>.<span class="n">10</span>
</pre></div></div><p>

Note: I didn&#39;t try any of this code so I don&#39;t think it&#39;ll be copy and paste-able. You can try though.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gnamra)</author>
		<pubDate>Mon, 18 Feb 2013 08:30:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you for the reply. I see where you&#39;re going with that, but your code did not work. I read up on the getline function too, but haven&#39;t managed to get it working just yet. It seems to work if I use a char* instead of a string for buffer, but then I can&#39;t clear it. Here&#39;s what your suggestion returns me:</p><p>C:\Users\Eric II\Desktop\games\mld-40\new\map.cpp||In member function &#39;bool Map::load(const char*)&#39;:|<br />C:\Users\Eric II\Desktop\games\mld-40\new\map.cpp|38|error: invalid conversion from &#39;const char*&#39; to &#39;std::basic_istream&lt;char&gt;::char_type* {aka char*}&#39; [-fpermissive]|<br />c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\include\c++\istream|599|error:   initializing argument 1 of &#39;std::basic_istream&lt;_CharT, _Traits&gt;&amp; std::basic_istream&lt;_CharT, _Traits&gt;::getline(std::basic_istream&lt;_CharT, _Traits&gt;::char_type*, std::streamsize, std::basic_istream&lt;_CharT, _Traits&gt;::char_type) [with _CharT = char, _Traits = std::char_traits&lt;char&gt;, std::basic_istream&lt;_CharT, _Traits&gt;::char_type = char, std::streamsize = int]&#39; [-fpermissive]|<br />||=== Build finished: 2 errors, 0 warnings (0 minutes, 0 seconds) ===|</p><p>It looks to me as though it wants a const char* instead of a string, but like I said earlier, I wouldn&#39;t be able to clear a const char*.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Eric Johnson)</author>
		<pubDate>Mon, 18 Feb 2013 09:36:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I thought it wouldn&#39;t work, but that wasn&#39;t the point of the post. You need to figure out a way to make sure that you&#39;re always reading the correct amount of integers.</p><p>Another way to solve your problem would be to use double digits for all your tiles.<br />01, 02, 03 etc etc and read two numbers at a time. But then you&#39;d face the same problem if you ever had over 99 different tiles. This solution is a lot easier than looking for a delimiting character.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Gnamra)</author>
		<pubDate>Mon, 18 Feb 2013 22:02:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You don&#39;t need to remove the spaces. Get the integers one by one from the ifstream and it will work. Like this:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  5</span>  <span class="k1">int</span> map<span class="k2">[</span><span class="n">100</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  6</span>  <span class="k1">int</span> n, i <span class="k3">=</span> <span class="n">0</span>, j<span class="k2">;</span>
<span class="number">  7</span>  std::ifstream openfile<span class="k2">(</span><span class="s">"map.txt"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>openfile.is_open<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  9</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"error 1: could not open map.txt"</span><span class="k2">;</span>
<span class="number"> 10</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 11</span>  <span class="k2">}</span>
<span class="number"> 12</span>  
<span class="number"> 13</span>  <span class="k1">while</span><span class="k2">(</span>openfile&gt;&gt;n<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 14</span>    map<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> n<span class="k2">;</span>
<span class="number"> 15</span>    i<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 16</span>  <span class="k2">}</span>
<span class="number"> 17</span>  
<span class="number"> 18</span>  <span class="k1">for</span><span class="k2">(</span>j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>j<span class="k3">&lt;</span>i<span class="k2">;</span>j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 19</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> map<span class="k2">[</span>j<span class="k2">]</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"\n"</span><span class="k2">;</span>
<span class="number"> 20</span>  <span class="k2">}</span>
<span class="number"> 21</span><span class="k2">}</span>
</div></div><p>

EDIT: Try compiling this code and testing it with the following input file. You&#39;ll see.</p><div class="source-code"><div class="toolbar"><span class="name">map.txt</span><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 1</span><span class="n">1</span> <span class="n">22</span> <span class="n">333</span> <span class="n">4444</span> <span class="n">55555</span>
<span class="number"> 2</span><span class="n">666666</span> <span class="n">7777777</span> <span class="n">88888888</span> <span class="n">999999999</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cassio Renan)</author>
		<pubDate>Tue, 19 Feb 2013 00:28:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the input, Cassio Renan. I am using a two-dimensional array for my x and y tiles. How would I incorporate your suggestion into a 2D array?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Eric Johnson)</author>
		<pubDate>Tue, 19 Feb 2013 00:54:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>knowing the number of columns, it&#39;s easy:</p><div class="source-code snippet"><div class="inner"><pre>
<span class="k1">for</span><span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>num_tiles<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
   x <span class="k3">=</span> i%columns<span class="k2">;</span>
   y <span class="k3">=</span> i<span class="k3">/</span>columns<span class="k2">;</span>

   map<span class="k2">[</span>x<span class="k2">]</span><span class="k2">[</span>y<span class="k2">]</span> <span class="k3">=</span> tile<span class="k2">[</span>i<span class="k2">]</span><span class="k2">;</span>

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

You may want to make the two first integers of your map file to be the map size. That way you can make it easier for you to get the entire map later.</p><p>On a side note: This is only an example. You should get the integers directly into your matrix, instead of passing them to an array first, witch is a not very smart redundancy. But I guess you know that <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cassio Renan)</author>
		<pubDate>Tue, 19 Feb 2013 01:04:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That would make sense I suppose, but my previous setup allowed me to dynamically get the rows and columns. I think it&#39;d be better to implement Gnamra&#39;s suggestion about separating each value on the map with a dot or something, then to remove the dot and compare them. I&#39;ve been reading up on getline and whatnot, but haven&#39;t had any luck yet being able to get his suggestion working. What do you think?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Eric Johnson)</author>
		<pubDate>Tue, 19 Feb 2013 01:27:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I see. Dumping them directly from the ifstream will ignore any spaces and newlines, so it&#39;s not a nice sollution. Instead, get the lines using getline(the global one, not istream&#39;s), and then dump them using a stringstream, just like if you used the ifstream. I&#39;ll code an example right now(and this one&#39;s more complicated <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />), so give me a minute.</p><p>EDIT: Finally done
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="p">#include &lt;istream&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="p">#include &lt;string&gt;</span>
<span class="number">  7</span><span class="p">#include &lt;sstream&gt;</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 10</span>  std::string buffer<span class="k2">;</span>
<span class="number"> 11</span>  <span class="k1">int</span> map<span class="k2">[</span><span class="n">100</span><span class="k2">]</span><span class="k2">[</span><span class="n">100</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 12</span>  <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span>, j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 13</span>  <span class="k1">int</span> w, h<span class="k2">;</span>
<span class="number"> 14</span>  std::ifstream openfile<span class="k2">(</span><span class="s">"map1.txt"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>openfile.is_open<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 16</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"error 1: could not open map1.txt"</span><span class="k2">;</span>
<span class="number"> 17</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 18</span>  <span class="k2">}</span>
<span class="number"> 19</span>  
<span class="number"> 20</span>  <span class="k1">while</span><span class="k2">(</span><span class="k1">true</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 21</span>    std::getline<span class="k2">(</span>openfile, buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>    std::istringstream streambuffer<span class="k2">;</span>
<span class="number"> 23</span>    streambuffer.clear<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>    streambuffer.str<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>    <span class="k1">while</span><span class="k2">(</span>streambuffer <span class="k3">&gt;</span><span class="k3">&gt;</span> map<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 26</span>      j<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 27</span>    <span class="k2">}</span>
<span class="number"> 28</span>    i<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 29</span>    <span class="k1">if</span><span class="k2">(</span>openfile.eof<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 30</span>    j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 31</span>  <span class="k2">}</span>
<span class="number"> 32</span>  <span class="c">// i and j now hold the map's w and h.</span>
<span class="number"> 33</span>  w <span class="k3">=</span> i<span class="k2">;</span>
<span class="number"> 34</span>  h <span class="k3">=</span> j<span class="k2">;</span>
<span class="number"> 35</span>  <span class="k1">for</span><span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>w<span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 36</span>    <span class="k1">for</span><span class="k2">(</span>j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>j<span class="k3">&lt;</span>h<span class="k2">;</span>j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 37</span>      std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> map<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" "</span><span class="k2">;</span>
<span class="number"> 38</span>    <span class="k2">}</span>
<span class="number"> 39</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 40</span>  <span class="k2">}</span>
<span class="number"> 41</span><span class="k2">}</span>
</div></div><p>

Spaces delimit columns, newlines delimit rows.<br />Note that there&#39;s a LOT of room for improvement here. For instance, it will get the number of columns from the last row, i.e.: It doesn&#39;t check for any(incorrect) larger or smaller rows. Said that, that map1.txt file I posted will fail(since the first line has 4 ints, and the second has 5). Use this one instead:</p><div class="source-code"><div class="toolbar"><span class="name">map1.txt</span><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 1</span><span class="n">1</span> <span class="n">22</span> <span class="n">333</span> <span class="n">4444</span> 
<span class="number"> 2</span><span class="n">55555</span> <span class="n">666666</span> <span class="n">7777777</span> <span class="n">88888888</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cassio Renan)</author>
		<pubDate>Tue, 19 Feb 2013 01:50:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I appreciate your willingness to help me out here. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p><b>Edit</b><br />So here&#39;s what I understand from your example. Correct me if I am wrong...
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;istream&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;string&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;sstream&gt;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 10</span>
<span class="number"> 11</span>  std::string buffer<span class="k2">;</span>
<span class="number"> 12</span>  <span class="k1">int</span> map<span class="k2">[</span><span class="n">100</span><span class="k2">]</span><span class="k2">[</span><span class="n">100</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 13</span>  <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span>, j <span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 14</span>  <span class="k1">int</span> w, h<span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>  <span class="c">// Open map file</span>
<span class="number"> 17</span>  std::ifstream openfile<span class="k2">(</span><span class="s">"assets/map.txt"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>openfile.is_open<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 20</span>
<span class="number"> 21</span>    <span class="c">// Failed to open map file</span>
<span class="number"> 22</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Erorr 1: could not open map.txt."</span><span class="k2">;</span>
<span class="number"> 23</span>
<span class="number"> 24</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 25</span>  <span class="k2">}</span>
<span class="number"> 26</span>
<span class="number"> 27</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 28</span>
<span class="number"> 29</span>    <span class="c">// Send map file's data into the buffer string</span>
<span class="number"> 30</span>    std::getline<span class="k2">(</span>openfile, buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>
<span class="number"> 32</span>    std::istringstream streambuffer<span class="k2">;</span>
<span class="number"> 33</span>
<span class="number"> 34</span>    <span class="c">// Pretty self-explanatory here</span>
<span class="number"> 35</span>    streambuffer.clear<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>
<span class="number"> 37</span>    <span class="c">// Send contents of buffer into streambuffer</span>
<span class="number"> 38</span>    streambuffer.str<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>
<span class="number"> 40</span>    <span class="c">// Throw streambuffer contents into map array</span>
<span class="number"> 41</span>    <span class="k1">while</span> <span class="k2">(</span>streambuffer <span class="k3">&gt;</span><span class="k3">&gt;</span> map<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 42</span>
<span class="number"> 43</span>      <span class="c">// Increase maps height</span>
<span class="number"> 44</span>      j<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 45</span>    <span class="k2">}</span>
<span class="number"> 46</span>
<span class="number"> 47</span>    <span class="c">// Increase map's width</span>
<span class="number"> 48</span>    i<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 49</span>
<span class="number"> 50</span>    <span class="c">// Stop the while loop upon hitting end of file</span>
<span class="number"> 51</span>    <span class="k1">if</span> <span class="k2">(</span>openfile.eof<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 52</span>
<span class="number"> 53</span>    <span class="c">// Height reset</span>
<span class="number"> 54</span>    j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 55</span>  <span class="k2">}</span>
<span class="number"> 56</span>
<span class="number"> 57</span>  <span class="c">// Map's width and height</span>
<span class="number"> 58</span>  w <span class="k3">=</span> i<span class="k2">;</span>
<span class="number"> 59</span>  h <span class="k3">=</span> j<span class="k2">;</span>
<span class="number"> 60</span>
<span class="number"> 61</span>  <span class="c">// Cycle through the width</span>
<span class="number"> 62</span>  <span class="k1">for</span> <span class="k2">(</span>i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> w<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 63</span>
<span class="number"> 64</span>    <span class="c">// Cycle through the height</span>
<span class="number"> 65</span>    <span class="k1">for</span> <span class="k2">(</span>j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> h<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 66</span>
<span class="number"> 67</span>      <span class="c">// Output tiles</span>
<span class="number"> 68</span>      std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> map<span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" "</span><span class="k2">;</span>
<span class="number"> 69</span>    <span class="k2">}</span>
<span class="number"> 70</span>
<span class="number"> 71</span>    <span class="c">// New line break</span>
<span class="number"> 72</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 73</span>  <span class="k2">}</span>
<span class="number"> 74</span><span class="k2">}</span>
</div></div><p>

I am fairly new to C++.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Eric Johnson)</author>
		<pubDate>Tue, 19 Feb 2013 02:09:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>yup, that&#39;s it.<br />Try to look at the reference for <a href="http://www.cplusplus.com/reference/istream/istream/">istream</a> to get a better understanding on input streams(ifstream and istringstream inherit from them). I know that reading trough the reference may be a bit overkill for a beginner, but you should get an idea of what is what by looking at the info there.</p><p>EDIT: looking again:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 29</span><span class="c">// Send map file's data into the buffer string</span>
<span class="number"> 30</span>std::getline<span class="k2">(</span>openfile, buffer<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

you should rephrase that to:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 29</span><span class="c">// Send current line's data from openfile into the buffer string</span>
<span class="number"> 30</span>std::getline<span class="k2">(</span>openfile, buffer<span class="k2">)</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cassio Renan)</author>
		<pubDate>Tue, 19 Feb 2013 02:46:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ll be sure to read it over.</p><p>Quick question: why do you reset j? If I remove the reset, it displays the file&#39;s contents, but if the reset is present, it does not display the file&#39;s contents.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Eric Johnson)</author>
		<pubDate>Tue, 19 Feb 2013 02:55:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>if j is not reset, it will contain the number equivalent to width*height. Your map file probably has a newline at the end of it(another problem that the code doesn&#39;t check for), and that is making j reset just before reaching the EOF.</p><p>In case you&#39;re still stuck, a sollution for that is to check if the streamed line is empty. That&#39;s easy: It will be empty if j == 0. Add these lines, right after the second while loop:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span><span class="k2">(</span>j<span class="k2">)</span>
   h <span class="k3">=</span> j<span class="k2">;</span>
<span class="k1">else</span>
   <span class="k1">break</span><span class="k2">;</span>
</pre></div></div><p>

and remove the line:
</p><div class="source-code snippet"><div class="inner"><pre>h <span class="k3">=</span> j<span class="k2">;</span>
</pre></div></div><p>
down bellow. Note that this fix will make any empty line simbolize &quot;stop reading&quot;. That means, anything after an empty line will be ignored.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cassio Renan)</author>
		<pubDate>Tue, 19 Feb 2013 02:59:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh I see. Also, why use a string AND istringstream? Wouldn&#39;t a string alone be sufficient?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Eric Johnson)</author>
		<pubDate>Tue, 19 Feb 2013 03:16:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Actually, you could use a string, no prob. Using a stream just makes your job easier(You&#39;re not doubling the memory usage, <i>per se</i>: istringstream just holds a pointer to the string, instead of copying the data). One way of getting data directly from the string(altough really old) is to use g&#39; old C&#39;s sscanf. It will also ignore spaces.</p><p>EDIT: The reason to use an istringstream is to be able to use the overloaded extracion operator(&quot;&lt;&lt;&quot;) to get the data from the string.</p><p>EDIT2: Correcting myself, sscanf will <b>not</b> ignore spaces, unless told to do so. A working example:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;cstdio&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;cstring&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;string&gt;</span>
<span class="number">  4</span>
<span class="number">  5</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  6</span>  std::string example <span class="k3">=</span> <span class="s">"1 22 333 4444"</span><span class="k2">;</span>
<span class="number">  7</span>  <span class="k1">int</span> numbers<span class="k2">[</span><span class="n">4</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  8</span>  <span class="k1">char</span> buffer<span class="k2">[</span><span class="n">1000</span><span class="k2">]</span><span class="k2">;</span> <span class="c">// You should really use dynamic allocation instead of a fixed size for best results :)</span>
<span class="number">  9</span>  
<span class="number"> 10</span>  <span class="c">// Get c++ string into a c string buffer.</span>
<span class="number"> 11</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_756.html" target="_blank">strcpy</a><span class="k2">(</span>buffer, example.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>  
<span class="number"> 13</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">4</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 14</span>    <span class="c">// Get int from string, and remove it from buffer. It will read the buffer until a newline or null terminator is found.</span>
<span class="number"> 15</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_741.html" target="_blank">sscanf</a><span class="k2">(</span>buffer, <span class="s">"%d%[^\n]s"</span>, numbers <span class="k3">+</span> i, buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>    
<span class="number"> 17</span>    <span class="c">// check if it worked</span>
<span class="number"> 18</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">"%d "</span>, numbers<span class="k2">[</span>i<span class="k2">]</span>, buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>  <span class="k2">}</span>
<span class="number"> 20</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cassio Renan)</author>
		<pubDate>Tue, 19 Feb 2013 03:28:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>WTF are you guys doing?</p><p>Just use an ifstream and be done with it. Stop dicking around with stringstreams and buffers already. You can read directly into an integer from an ifstream. Read the width and height, create your map, and then read the values. ifstream &gt;&gt; int&amp; skips leading whitespace, so you can keep using spaces in your text file. And as many as you need to maintain nice rows and columns. I do not know what number the stream extractor will return if a number has leading zeroes though. You could also write your own extractor function and call it directly.</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> store_next_int<span class="k2">(</span>ifstream input , <span class="k1">int</span><span class="k3">&amp;</span> store<span class="k2">)</span> <span class="k2">{</span>
<span class="c">//...</span>
<span class="k2">}</span>
</pre></div></div><p>

</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;fstream&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;vector&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;cstdlib&gt;</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="k1">void</span> abort_retry_fail<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  9</span>  <span class="c">// Mwuah hahahahaha haaaaa</span>
<span class="number"> 10</span>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Abort, Retry, or Fail?"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 11</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_37.html" target="_blank">abort</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span><span class="k2">}</span>
<span class="number"> 13</span>
<span class="number"> 14</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc , <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span> argv<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 15</span>  
<span class="number"> 16</span>  <span class="k1">if</span> <span class="k2">(</span>argc <span class="k3">&lt;</span> <span class="n">2</span><span class="k2">)</span> <span class="k2">{</span>abort_retry_fail<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 17</span>  
<span class="number"> 18</span>  ifstream file_reader<span class="k2">(</span>argv<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>file_reader<span class="k2">)</span> <span class="k2">{</span>abort_retry_fail<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 20</span>
<span class="number"> 21</span>  vector<span class="k3">&lt;</span> vector<span class="k3">&lt;</span>int&gt; <span class="k3">&gt;</span> map<span class="k2">;</span>
<span class="number"> 22</span>  
<span class="number"> 23</span>  <span class="k1">int</span> tiles_wide<span class="k2">;</span>
<span class="number"> 24</span>  <span class="k1">int</span> tiles_tall<span class="k2">;</span>
<span class="number"> 25</span>
<span class="number"> 26</span>  <span class="c">/// TODO : ERROR CHECKING, sorry do this yourself</span>
<span class="number"> 27</span>
<span class="number"> 28</span>  <span class="c">// first two values are width and height of map</span>
<span class="number"> 29</span>  file_reader <span class="k3">&gt;</span><span class="k3">&gt;</span> tiles_wide<span class="k2">;</span>
<span class="number"> 30</span>  file_reader <span class="k3">&gt;</span><span class="k3">&gt;</span> tiles_tall<span class="k2">;</span>
<span class="number"> 31</span>
<span class="number"> 32</span>  <span class="c">// make map</span>
<span class="number"> 33</span>  map.resize<span class="k2">(</span>tiles_tall , vector<span class="k3">&lt;</span>int&gt;<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</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="k2">(</span><span class="k1">int</span><span class="k2">)</span>map.size<span class="k2">(</span><span class="k2">)</span> <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 35</span>    map<span class="k2">[</span>i<span class="k2">]</span>.resize<span class="k2">(</span>tiles_wide , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>  <span class="k2">}</span>
<span class="number"> 37</span>
<span class="number"> 38</span>        <span class="c">// read map</span>
<span class="number"> 39</span>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> tile_y <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> tile_y <span class="k3">&lt;</span> tiles_tall <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>tile_y<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 40</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> tile_x <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> tile_x <span class="k3">&lt;</span> tiles_wide <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>tile_x<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 41</span>      file_reader <span class="k3">&gt;</span><span class="k3">&gt;</span> map<span class="k2">[</span>tile_y<span class="k2">]</span><span class="k2">[</span>tile_x<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 42</span>    <span class="k2">}</span>
<span class="number"> 43</span>  <span class="k2">}</span>
<span class="number"> 44</span>
<span class="number"> 45</span>  <span class="c">// Now output what we just read.</span>
<span class="number"> 46</span>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> tile_y <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> tile_y <span class="k3">&lt;</span> tiles_tall <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>tile_y<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 47</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> tile_x <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> tile_x <span class="k3">&lt;</span> tiles_wide <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>tile_x<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 48</span>      cout <span class="k3">&lt;</span><span class="k3">&lt;</span> map<span class="k2">[</span>tile_y<span class="k2">]</span><span class="k2">[</span>tile_x<span class="k2">]</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" "</span><span class="k2">;</span>
<span class="number"> 49</span>    <span class="k2">}</span>
<span class="number"> 50</span>    cout <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 51</span>  <span class="k2">}</span>
<span class="number"> 52</span>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 53</span>
<span class="number"> 54</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 55</span><span class="k2">}</span>
</div></div><p>

Here&#39;s Map.txt :
</p><pre>



3 4
0 1 2
3 4 5
6 7 8
9 10 11

</pre><p>

Here&#39;s the output :
</p><pre>
c:\ctwoplus\progcode\allegro5\test&gt;MapReader Map.txt
0 1 2
3 4 5
6 7 8
9 10 11

</pre><p>



Everything you need to look at is here on <a href="http://cplusplus.com">http://cplusplus.com</a>.<br /><a href="http://cplusplus.com/reference/fstream/ifstream/">http://cplusplus.com/reference/fstream/ifstream/</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 20 Feb 2013 01:16:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I know that.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/612065/976975#target">Cassio Renan</a> said:</div><div class="quote"><p>
You may want to make the two first integers of your map file to be the map size. That way you can make it easier for you to get the entire map later.
</p></div></div><p>

</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/612065/976978#target">Sheegoth</a> said:</div><div class="quote"><p>
That would make sense I suppose, but my previous setup allowed me to dynamically get the rows and columns
</p></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cassio Renan)</author>
		<pubDate>Wed, 20 Feb 2013 01:28:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The sscanf() function works fine for me.</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;stdio.h&gt;</span>

<span class="k1">char</span> manynums<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="s">"1 2 3 9999"</span><span class="k2">;</span>

<span class="k1">int</span> nums<span class="k2">[</span><span class="n">4</span><span class="k2">]</span><span class="k2">;</span>

<span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="k2">{</span>
  <a href="http://www.delorie.com/djgpp/doc/libc/libc_741.html" target="_blank">sscanf</a><span class="k2">(</span>manynums,<span class="s">"%d %d %d %d"</span>,<span class="k3">&amp;</span>nums<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>,<span class="k3">&amp;</span>nums<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>,<span class="k3">&amp;</span>nums<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>,<span class="k3">&amp;</span>nums<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"%d %d %d %d\n"</span>,nums<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>,nums<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>,nums<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>,nums<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Wed, 20 Feb 2013 09:07:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi again. I appreciate the replies guys, truly.</p><p>I went out and learned all about vectors and whatnot, and threw together another tile system, which worked much better than my last one... Then I came back here and saw Edgar Reynaldo&#39;s post; you knocked it out of the park man. Your approach is so much smaller and easier than I had going. Ha. I appreciate it! That&#39;s pretty damn nice. <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p>I come from a PHP background, so I&#39;m still adjusting to C++... Vectors are so nice guys.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Eric Johnson)</author>
		<pubDate>Wed, 20 Feb 2013 09:14:39 +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/612065/977078#target">Sheegoth</a> said:</div><div class="quote"><p> I come from a PHP background, so I&#39;m still adjusting to C++... Vectors are so nice guys.</p></div></div><p>PHP&#39;s got vectors (essentially). Well, arrays have all the functionality of vectors... and a bunch of other data types.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jeff Bernard)</author>
		<pubDate>Wed, 20 Feb 2013 12:16:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, technically I suppose they do (array lists are essentially vectors), but they are somewhat different than C++&#39;s; that&#39;s what I meant.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Eric Johnson)</author>
		<pubDate>Wed, 20 Feb 2013 22:42:57 +0000</pubDate>
	</item>
</rss>
