<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Bounding box collision problems.</title>
		<link>http://www.allegro.cc/forums/view/614319</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 01 Jun 2014 20:58:05 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi there,</p><p>Im having some trouble with the bounding box collision using allegro 5. Standing on top of the platform works. But when colide to the left side of the platform i go in the platform  (but does stop in centre of it) also when i jump against the platform i either go through completly or stop in the middle of the platform.</p><p>I hope i explained it good enough. if yuo have questions or need to see code just ask.</p><p>note: hdir 1 right, 2 left, 0 none. vdir 1 up, 2 down 0 none</p><p>also the number 1 is the platform.</p><p>Here is the collision code i wrote.</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 "Collision.h"</span>
<span class="number">   2</span>
<span class="number">   3</span>
<span class="number">   4</span>Collision::Collision<span class="k2">(</span><span class="k2">)</span>
<span class="number">   5</span><span class="k2">{</span>
<span class="number">   6</span><span class="k2">}</span>
<span class="number">   7</span>
<span class="number">   8</span>
<span class="number">   9</span>Collision::~Collision<span class="k2">(</span><span class="k2">)</span>
<span class="number">  10</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">void</span> Collision::Init<span class="k2">(</span><span class="k2">)</span>
<span class="number">  14</span><span class="k2">{</span>
<span class="number">  15</span>  loadCounterX <span class="k3">=</span> loadCounterY <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  16</span>  Collision::LoadCollisionMap<span class="k2">(</span><span class="s">"ColMap1.txt"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span>  Collision::LoadCollisionMap<span class="k2">(</span><span class="s">"ColMap2.txt"</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span>  Collision::LoadCollisionMap<span class="k2">(</span><span class="s">"ColMap3.txt"</span>, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span><span class="k2">}</span>
<span class="number">  20</span>
<span class="number">  21</span><span class="k1">void</span> Collision::Update<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display, Player <span class="k3">&amp;</span>player, Map <span class="k3">&amp;</span>map<span class="k2">)</span>
<span class="number">  22</span><span class="k2">{</span>
<span class="number">  23</span>  Collision::PlatformCollision<span class="k2">(</span>display, player, map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span>  Collision::LevelReset<span class="k2">(</span>player, map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>  Collision::DirReverse<span class="k2">(</span>player, map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>  Collision::LevelEnd<span class="k2">(</span>player, map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span><span class="k2">}</span>
<span class="number">  28</span>
<span class="number">  29</span><span class="k1">void</span> Collision::Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">)</span>
<span class="number">  30</span><span class="k2">{</span>
<span class="number">  31</span>
<span class="number">  32</span><span class="k2">}</span>
<span class="number">  33</span>
<span class="number">  34</span><span class="k1">void</span> Collision::LoadCollisionMap<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>filename, <span class="k1">int</span> level<span class="k2">)</span>
<span class="number">  35</span><span class="k2">{</span>
<span class="number">  36</span>  ifstream openfile<span class="k2">(</span>filename<span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>  <span class="k1">if</span><span class="k2">(</span>openfile.is_open<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  38</span>  <span class="k2">{</span>
<span class="number">  39</span>    openfile <span class="k3">&gt;</span><span class="k3">&gt;</span> mapSizeX <span class="k3">&gt;</span><span class="k3">&gt;</span> mapSizeY<span class="k2">;</span>
<span class="number">  40</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="number">  41</span>    <span class="k2">{</span>
<span class="number">  42</span>      openfile <span class="k3">&gt;</span><span class="k3">&gt;</span> ColMapFile<span class="k2">[</span>level<span class="k2">]</span><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">  43</span>      loadCounterX <span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  44</span>      <span class="k1">if</span> <span class="k2">(</span>loadCounterX <span class="k3">&gt;</span><span class="k3">=</span> mapSizeX<span class="k2">)</span>
<span class="number">  45</span>      <span class="k2">{</span>
<span class="number">  46</span>        loadCounterX <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  47</span>        loadCounterY <span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  48</span>      <span class="k2">}</span>
<span class="number">  49</span>    <span class="k2">}</span>
<span class="number">  50</span>    loadCounterX <span class="k3">=</span> loadCounterY <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  51</span>  <span class="k2">}</span>
<span class="number">  52</span>  <span class="k1">else</span>
<span class="number">  53</span>  <span class="k2">{</span>
<span class="number">  54</span>    <span class="k2">{</span>  <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>NULL, <span class="s">"Error"</span>, <span class="s">"Error"</span>,
<span class="number">  55</span>    <span class="s">"Cannot find collision map file"</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>  <span class="k2">}</span>
<span class="number">  57</span>     
<span class="number">  58</span>  <span class="k2">}</span>
<span class="number">  59</span><span class="k2">}</span>
<span class="number">  60</span>
<span class="number">  61</span><span class="k1">void</span> Collision::PlatformCollision<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display, Player <span class="k3">&amp;</span>player, Map <span class="k3">&amp;</span>map<span class="k2">)</span>
<span class="number">  62</span><span class="k2">{</span>
<span class="number">  63</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> mapSizeX<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  64</span>  <span class="k2">{</span>
<span class="number">  65</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> mapSizeY<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  66</span>    <span class="k2">{</span>
<span class="number">  67</span>      <span class="k1">if</span><span class="k2">(</span>ColMapFile<span class="k2">[</span>map.getLevel<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number">  68</span>      <span class="k2">{</span>
<span class="number">  69</span>        <span class="k1">if</span><span class="k2">(</span>player.x <span class="k3">&gt;</span> i <span class="k3">*</span> blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.y <span class="k3">&gt;</span> j<span class="k3">*</span>blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.x2 <span class="k3">&lt;</span> i<span class="k3">*</span>blockSize <span class="k3">|</span><span class="k3">|</span> player.y2 <span class="k3">&lt;</span> j<span class="k3">*</span>blockSize<span class="k2">)</span>
<span class="number">  70</span>        <span class="k2">{</span>
<span class="number">  71</span>          <span class="c">//no collision</span>
<span class="number">  72</span>          player.platform <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  73</span>        <span class="k2">}</span>
<span class="number">  74</span>
<span class="number">  75</span>        <span class="k1">else</span>
<span class="number">  76</span>        <span class="k2">{</span>
<span class="number">  77</span>          <span class="k1">if</span> <span class="k2">(</span>player.vDir <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number">  78</span>          <span class="k2">{</span>
<span class="number">  79</span>            player.y <span class="k3">+</span><span class="k3">=</span> player.speed <span class="k3">*</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  80</span>            player.y2 <span class="k3">=</span> player.y <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  81</span>            player.vely <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  82</span>            player.platform <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  83</span>            player.jump <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  84</span>          <span class="k2">}</span>
<span class="number">  85</span>          
<span class="number">  86</span>          <span class="k1">if</span><span class="k2">(</span>player.vDir <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.y <span class="k3">-</span> player.vely <span class="k3">&lt;</span><span class="k3">=</span> j<span class="k3">*</span>blockSize<span class="k2">)</span>
<span class="number">  87</span>          <span class="k2">{</span>
<span class="number">  88</span>            player.y <span class="k3">=</span> j<span class="k3">*</span>blockSize <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  89</span>            player.y2 <span class="k3">=</span> player.y <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  90</span>            player.platform <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  91</span>            player.jump <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  92</span>            player.vely <span class="k3">=</span> <span class="n">0</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="k1">if</span> <span class="k2">(</span>player.hDir <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.platform <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span>
<span class="number">  98</span>          <span class="k2">{</span>
<span class="number">  99</span>            player.x <span class="k3">-</span><span class="k3">=</span> player.speed<span class="k2">;</span>
<span class="number"> 100</span>            player.x2 <span class="k3">=</span> player.x <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 101</span>          <span class="k2">}</span>
<span class="number"> 102</span>
<span class="number"> 103</span>          <span class="k1">if</span> <span class="k2">(</span>player.hDir <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.platform <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span>
<span class="number"> 104</span>          <span class="k2">{</span>
<span class="number"> 105</span>            player.x <span class="k3">+</span><span class="k3">=</span> player.speed<span class="k2">;</span>
<span class="number"> 106</span>            player.x2 <span class="k3">=</span> player.x <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 107</span>          <span class="k2">}</span>
<span class="number"> 108</span>        <span class="k2">}</span>
<span class="number"> 109</span>      <span class="k2">}</span>
<span class="number"> 110</span>    <span class="k2">}</span>
<span class="number"> 111</span>  <span class="k2">}</span>
<span class="number"> 112</span>
<span class="number"> 113</span><span class="k2">}</span>
<span class="number"> 114</span>
<span class="number"> 115</span><span class="k1">void</span> Collision::LevelReset<span class="k2">(</span>Player <span class="k3">&amp;</span>player, Map <span class="k3">&amp;</span>map<span class="k2">)</span>
<span class="number"> 116</span><span class="k2">{</span>
<span class="number"> 117</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> mapSizeX<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 118</span>  <span class="k2">{</span>
<span class="number"> 119</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> mapSizeY<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 120</span>    <span class="k2">{</span>
<span class="number"> 121</span>      <span class="k1">if</span><span class="k2">(</span>ColMapFile<span class="k2">[</span>map.getLevel<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span>
<span class="number"> 122</span>      <span class="k2">{</span>
<span class="number"> 123</span>        <span class="k1">if</span><span class="k2">(</span>player.x <span class="k3">&gt;</span> i <span class="k3">*</span> blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.y <span class="k3">&gt;</span> j<span class="k3">*</span>blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.x2 <span class="k3">&lt;</span> i<span class="k3">*</span>blockSize <span class="k3">|</span><span class="k3">|</span> player.y2 <span class="k3">&lt;</span> j<span class="k3">*</span>blockSize<span class="k2">)</span>
<span class="number"> 124</span>        <span class="k2">{</span>
<span class="number"> 125</span>          <span class="c">//no collision</span>
<span class="number"> 126</span>        <span class="k2">}</span>
<span class="number"> 127</span>
<span class="number"> 128</span>        <span class="k1">else</span>
<span class="number"> 129</span>        <span class="k2">{</span>
<span class="number"> 130</span>          player.x <span class="k3">=</span> player.origX<span class="k2">;</span>
<span class="number"> 131</span>          player.y <span class="k3">=</span> player.origY<span class="k2">;</span>
<span class="number"> 132</span>
<span class="number"> 133</span>          map.setLevel<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 134</span>
<span class="number"> 135</span>          player.velx <span class="k3">=</span> player.speed<span class="k2">;</span>
<span class="number"> 136</span>          player.hDir <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 137</span>        <span class="k2">}</span>
<span class="number"> 138</span>      <span class="k2">}</span>
<span class="number"> 139</span>    <span class="k2">}</span>
<span class="number"> 140</span>  <span class="k2">}</span>
<span class="number"> 141</span>
<span class="number"> 142</span><span class="k2">}</span>
<span class="number"> 143</span>
<span class="number"> 144</span><span class="k1">void</span> Collision::LevelEnd<span class="k2">(</span>Player <span class="k3">&amp;</span>player, Map <span class="k3">&amp;</span>map<span class="k2">)</span>
<span class="number"> 145</span><span class="k2">{</span>
<span class="number"> 146</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> mapSizeX<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 147</span>  <span class="k2">{</span>
<span class="number"> 148</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> mapSizeY<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 149</span>    <span class="k2">{</span>
<span class="number"> 150</span>      <span class="k1">if</span><span class="k2">(</span>ColMapFile<span class="k2">[</span>map.getLevel<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">3</span><span class="k2">)</span>
<span class="number"> 151</span>      <span class="k2">{</span>
<span class="number"> 152</span>        <span class="k1">if</span><span class="k2">(</span>player.x <span class="k3">&gt;</span> i <span class="k3">*</span> blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.y <span class="k3">&gt;</span> j<span class="k3">*</span>blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.x2 <span class="k3">&lt;</span> i<span class="k3">*</span>blockSize <span class="k3">|</span><span class="k3">|</span> player.y2 <span class="k3">&lt;</span> j<span class="k3">*</span>blockSize<span class="k2">)</span>
<span class="number"> 153</span>        <span class="k2">{</span>
<span class="number"> 154</span>          <span class="c">//no collision</span>
<span class="number"> 155</span>        <span class="k2">}</span>
<span class="number"> 156</span>
<span class="number"> 157</span>        <span class="k1">else</span>
<span class="number"> 158</span>        <span class="k2">{</span>
<span class="number"> 159</span>          <span class="k1">int</span> level <span class="k3">=</span> map.getLevel<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 160</span>          level <span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 161</span>          map.setLevel<span class="k2">(</span>level<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>          <span class="k1">if</span><span class="k2">(</span>level <span class="k3">&gt;</span> <span class="n">2</span><span class="k2">)</span>
<span class="number"> 163</span>          <span class="k2">{</span>
<span class="number"> 164</span>            map.setLevel<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>            player.velx <span class="k3">=</span> player.speed<span class="k2">;</span>
<span class="number"> 166</span>            player.hDir <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 167</span>          <span class="k2">}</span>
<span class="number"> 168</span>          player.x <span class="k3">=</span> player.origX<span class="k2">;</span>
<span class="number"> 169</span>          player.y <span class="k3">=</span> player.origY<span class="k2">;</span>
<span class="number"> 170</span>
<span class="number"> 171</span>          <span class="c">//Wait 1 second (loading new map)</span>
<span class="number"> 172</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">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 173</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"> 174</span>          <span class="c">//al_rest(1);</span>
<span class="number"> 175</span>        <span class="k2">}</span>
<span class="number"> 176</span>      <span class="k2">}</span>
<span class="number"> 177</span>    <span class="k2">}</span>
<span class="number"> 178</span>  <span class="k2">}</span>
<span class="number"> 179</span>
<span class="number"> 180</span><span class="k2">}</span>
<span class="number"> 181</span>
<span class="number"> 182</span><span class="k1">void</span> Collision::DirReverse<span class="k2">(</span>Player <span class="k3">&amp;</span>player, Map <span class="k3">&amp;</span>map<span class="k2">)</span>
<span class="number"> 183</span><span class="k2">{</span>
<span class="number"> 184</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> mapSizeX<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 185</span>  <span class="k2">{</span>
<span class="number"> 186</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> mapSizeY<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 187</span>    <span class="k2">{</span>
<span class="number"> 188</span>      <span class="k1">if</span><span class="k2">(</span>ColMapFile<span class="k2">[</span>map.getLevel<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span>
<span class="number"> 189</span>      <span class="k2">{</span>
<span class="number"> 190</span>        <span class="k1">if</span><span class="k2">(</span>player.x <span class="k3">&gt;</span> i <span class="k3">*</span> blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.y <span class="k3">&gt;</span> j<span class="k3">*</span>blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.x2 <span class="k3">&lt;</span> i<span class="k3">*</span>blockSize <span class="k3">|</span><span class="k3">|</span> player.y2 <span class="k3">&lt;</span> j<span class="k3">*</span>blockSize<span class="k2">)</span>
<span class="number"> 191</span>        <span class="k2">{</span>
<span class="number"> 192</span>          <span class="c">//no collision</span>
<span class="number"> 193</span>        <span class="k2">}</span>
<span class="number"> 194</span>
<span class="number"> 195</span>        <span class="k1">else</span>
<span class="number"> 196</span>        <span class="k2">{</span>
<span class="number"> 197</span>          
<span class="number"> 198</span>          player.velx <span class="k3">=</span> <span class="k3">-</span>player.speed<span class="k2">;</span>
<span class="number"> 199</span>          player.hDir <span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 200</span>        <span class="k2">}</span>
<span class="number"> 201</span>      <span class="k2">}</span>
<span class="number"> 202</span>    <span class="k2">}</span>
<span class="number"> 203</span>  <span class="k2">}</span>
<span class="number"> 204</span>
<span class="number"> 205</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (PamperBoy)</author>
		<pubDate>Fri, 30 May 2014 14:34:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your if/else&#39;s look a bit screwed up....at one point you say:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span><span class="k2">(</span>x <span class="k3">&gt;</span> etc etc etc<span class="k2">)</span>
<span class="k2">{</span>
    <span class="c">//no collision</span>
<span class="k2">}</span>
<span class="k1">else</span>
<span class="k2">{</span>
    <span class="c">//move x/y etc etc</span>
<span class="k2">}</span>
</pre></div></div><p>

...so you&#39;re saying &quot;if there is a collision then move the player&quot;...makes no sense!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Fri, 30 May 2014 15:23:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Then what should i do? because the player moves at a constant speed of 5 to the right. Sorry still a beginner hehe</p><p><b>edit</b></p><p>Also ive been trying to change the code for ages. But what ever i do the result is the same. aka nothing new happens. Also ive been looking at a tutorial, the code that was written in there is practically the same. The only difference is that it works in the tutorial...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (PamperBoy)</author>
		<pubDate>Fri, 30 May 2014 15:49:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So, explain to me exactly what happens, in as much detail as possible, and I&#39;ll help you out.</p><p>[edit]</p><p>Also, show me the code where you draw the player, and map/tiles.</p><p>[edit2]</p><p>Also, show me how big your player sprite is, and how big your blocks are! <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Sat, 31 May 2014 01:31:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ill explain what happens: i go to the right at a constant speed of 5. When i encouter a tile i will collide with it but it goes within the tile. and then stops in the middle. Same goes for jumping. When i jump i go either through the whole tile or stop in the middle. </p><p><b>Here is the player class:</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 "Player.h"</span>
<span class="number">   2</span>
<span class="number">   3</span>
<span class="number">   4</span>
<span class="number">   5</span>
<span class="number">   6</span>Player::Player<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">   7</span><span class="k2">{</span>
<span class="number">   8</span><span class="k2">}</span>
<span class="number">   9</span>
<span class="number">  10</span>
<span class="number">  11</span>Player::~Player<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  12</span><span class="k2">{</span>
<span class="number">  13</span><span class="k2">}</span>
<span class="number">  14</span>
<span class="number">  15</span><span class="k1">void</span> Player::Init<span class="k2">(</span><span class="k2">)</span>
<span class="number">  16</span><span class="k2">{</span>
<span class="number">  17</span>  movementPressed <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  18</span>  width <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  19</span>  height <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  20</span>  x <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number">  21</span>  y <span class="k3">=</span> <span class="n">450</span><span class="k2">;</span>
<span class="number">  22</span>  origX <span class="k3">=</span> x<span class="k2">;</span>
<span class="number">  23</span>  origY <span class="k3">=</span> y<span class="k2">;</span>
<span class="number">  24</span>  x2 <span class="k3">=</span> x <span class="k3">+</span> width<span class="k2">;</span>
<span class="number">  25</span>  y2 <span class="k3">=</span> y <span class="k3">+</span> height<span class="k2">;</span>
<span class="number">  26</span>  speed <span class="k3">=</span> <span class="n">5</span><span class="k2">;</span>
<span class="number">  27</span>  jumpspeed <span class="k3">=</span> <span class="k3">-</span> <span class="k2">(</span><span class="n">10</span> <span class="k3">+</span> <span class="k2">(</span>blockSize <span class="k3">/</span> <span class="k2">(</span>blockSize <span class="k3">/</span> <span class="n">3</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>  gravity <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  29</span>  velx <span class="k3">=</span> vely <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  30</span>  jump <span class="k3">=</span> platform <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  31</span>  hDir <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  32</span>  vDir <span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  33</span>  
<span class="number">  34</span>  
<span class="number">  35</span><span class="k2">}</span>
<span class="number">  36</span>
<span class="number">  37</span><span class="k1">void</span> Player::Update<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev, InputManager <span class="k3">&amp;</span>input<span class="k2">)</span>
<span class="number">  38</span><span class="k2">{</span>
<span class="number">  39</span>  Player::Controls<span class="k2">(</span>ev, input<span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>
<span class="number">  41</span><span class="k2">}</span>
<span class="number">  42</span>
<span class="number">  43</span><span class="k1">void</span> Player::Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">)</span>
<span class="number">  44</span><span class="k2">{</span>
<span class="number">  45</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span>x , y , x2, y2, <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">200</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</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">  47</span>    
<span class="number">  48</span><span class="k2">}</span>
<span class="number">  49</span>
<span class="number">  50</span><span class="k1">void</span> Player::Controls<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev, InputManager <span class="k3">&amp;</span>input<span class="k2">)</span>
<span class="number">  51</span><span class="k2">{</span>
<span class="number">  52</span>  <span class="k1">if</span> <span class="k2">(</span>movementPressed <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  53</span>
<span class="number">  54</span>    <span class="k1">if</span><span class="k2">(</span>input.IsKeyPressed<span class="k2">(</span>ev, ALLEGRO_KEY_RIGHT<span class="k2">)</span><span class="k2">)</span>
<span class="number">  55</span>    <span class="k2">{</span>
<span class="number">  56</span>      velx <span class="k3">=</span> speed<span class="k2">;</span>
<span class="number">  57</span>      hDir <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  58</span>      movementPressed <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  59</span>      <span class="c">//vely = 0;</span>
<span class="number">  60</span>    <span class="k2">}</span>
<span class="number">  61</span>    <span class="c">/*</span>
<span class="number">  62</span><span class="c">    else if(input.IsKeyPressed(ev, ALLEGRO_KEY_LEFT))</span>
<span class="number">  63</span><span class="c">    {</span>
<span class="number">  64</span><span class="c">      velx = -speed;</span>
<span class="number">  65</span><span class="c">      hDir = 2;</span>
<span class="number">  66</span><span class="c">    }</span>
<span class="number">  67</span><span class="c">    */</span>
<span class="number">  68</span>  <span class="k2">}</span>
<span class="number">  69</span>
<span class="number">  70</span>
<span class="number">  71</span>  <span class="k1">if</span><span class="k2">(</span>jump <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> input.IsKeyPressed<span class="k2">(</span>ev, ALLEGRO_KEY_UP<span class="k2">)</span><span class="k2">)</span>
<span class="number">  72</span>  <span class="k2">{</span>
<span class="number">  73</span>    vely <span class="k3">=</span> jumpspeed<span class="k2">;</span>
<span class="number">  74</span>    platform <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  75</span>    jump <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  76</span>  <span class="k2">}</span>
<span class="number">  77</span><span class="k2">}</span>
<span class="number">  78</span>
<span class="number">  79</span><span class="k1">void</span> Player::SetPosition<span class="k2">(</span><span class="k2">)</span>
<span class="number">  80</span><span class="k2">{</span>
<span class="number">  81</span>  <span class="k1">if</span> <span class="k2">(</span>vely <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  82</span>  <span class="k2">{</span>
<span class="number">  83</span>    vDir <span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  84</span>  <span class="k2">}</span>
<span class="number">  85</span>
<span class="number">  86</span>  <span class="k1">if</span><span class="k2">(</span>platform <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span>
<span class="number">  87</span>  <span class="k2">{</span>
<span class="number">  88</span>    vely <span class="k3">+</span><span class="k3">=</span> gravity<span class="k2">;</span>
<span class="number">  89</span>  <span class="k2">}</span>
<span class="number">  90</span>
<span class="number">  91</span>  <span class="k1">else</span>
<span class="number">  92</span>  <span class="k2">{</span>
<span class="number">  93</span>    vely <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  94</span>  <span class="k2">}</span>
<span class="number">  95</span>  
<span class="number">  96</span>  x <span class="k3">+</span><span class="k3">=</span> velx<span class="k2">;</span>
<span class="number">  97</span>  y <span class="k3">+</span><span class="k3">=</span> vely<span class="k2">;</span>
<span class="number">  98</span>  x2 <span class="k3">=</span> x <span class="k3">+</span> width<span class="k2">;</span>
<span class="number">  99</span>  y2 <span class="k3">=</span> y <span class="k3">+</span> height<span class="k2">;</span>
<span class="number"> 100</span><span class="k2">}</span>
</div></div><p>

<b>Collision class:</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 "Collision.h"</span>
<span class="number">   2</span>
<span class="number">   3</span>
<span class="number">   4</span>Collision::Collision<span class="k2">(</span><span class="k2">)</span>
<span class="number">   5</span><span class="k2">{</span>
<span class="number">   6</span><span class="k2">}</span>
<span class="number">   7</span>
<span class="number">   8</span>
<span class="number">   9</span>Collision::~Collision<span class="k2">(</span><span class="k2">)</span>
<span class="number">  10</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">void</span> Collision::Init<span class="k2">(</span><span class="k2">)</span>
<span class="number">  14</span><span class="k2">{</span>
<span class="number">  15</span>  loadCounterX <span class="k3">=</span> loadCounterY <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  16</span>  Collision::LoadCollisionMap<span class="k2">(</span><span class="s">"ColMap1.txt"</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span>  Collision::LoadCollisionMap<span class="k2">(</span><span class="s">"ColMap2.txt"</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span>  Collision::LoadCollisionMap<span class="k2">(</span><span class="s">"ColMap3.txt"</span>, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span><span class="k2">}</span>
<span class="number">  20</span>
<span class="number">  21</span><span class="k1">void</span> Collision::Update<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display, Player <span class="k3">&amp;</span>player, Map <span class="k3">&amp;</span>map<span class="k2">)</span>
<span class="number">  22</span><span class="k2">{</span>
<span class="number">  23</span>  Collision::PlatformCollision<span class="k2">(</span>display, player, map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span>  Collision::LevelReset<span class="k2">(</span>player, map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>  Collision::DirReverse<span class="k2">(</span>player, map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>  Collision::LevelEnd<span class="k2">(</span>player, map<span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span><span class="k2">}</span>
<span class="number">  28</span>
<span class="number">  29</span><span class="k1">void</span> Collision::Draw<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">)</span>
<span class="number">  30</span><span class="k2">{</span>
<span class="number">  31</span>
<span class="number">  32</span><span class="k2">}</span>
<span class="number">  33</span>
<span class="number">  34</span><span class="k1">void</span> Collision::LoadCollisionMap<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>filename, <span class="k1">int</span> level<span class="k2">)</span>
<span class="number">  35</span><span class="k2">{</span>
<span class="number">  36</span>  ifstream openfile<span class="k2">(</span>filename<span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>  <span class="k1">if</span><span class="k2">(</span>openfile.is_open<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  38</span>  <span class="k2">{</span>
<span class="number">  39</span>    openfile <span class="k3">&gt;</span><span class="k3">&gt;</span> mapSizeX <span class="k3">&gt;</span><span class="k3">&gt;</span> mapSizeY<span class="k2">;</span>
<span class="number">  40</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="number">  41</span>    <span class="k2">{</span>
<span class="number">  42</span>      openfile <span class="k3">&gt;</span><span class="k3">&gt;</span> ColMapFile<span class="k2">[</span>level<span class="k2">]</span><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">  43</span>      loadCounterX <span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  44</span>      <span class="k1">if</span> <span class="k2">(</span>loadCounterX <span class="k3">&gt;</span><span class="k3">=</span> mapSizeX<span class="k2">)</span>
<span class="number">  45</span>      <span class="k2">{</span>
<span class="number">  46</span>        loadCounterX <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  47</span>        loadCounterY <span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  48</span>      <span class="k2">}</span>
<span class="number">  49</span>    <span class="k2">}</span>
<span class="number">  50</span>    loadCounterX <span class="k3">=</span> loadCounterY <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  51</span>  <span class="k2">}</span>
<span class="number">  52</span>  <span class="k1">else</span>
<span class="number">  53</span>  <span class="k2">{</span>
<span class="number">  54</span>    <span class="k2">{</span>  <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>NULL, <span class="s">"Error"</span>, <span class="s">"Error"</span>,
<span class="number">  55</span>    <span class="s">"Cannot find collision map file"</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>  <span class="k2">}</span>
<span class="number">  57</span>     
<span class="number">  58</span>  <span class="k2">}</span>
<span class="number">  59</span><span class="k2">}</span>
<span class="number">  60</span>
<span class="number">  61</span><span class="k1">void</span> Collision::PlatformCollision<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display, Player <span class="k3">&amp;</span>player, Map <span class="k3">&amp;</span>map<span class="k2">)</span>
<span class="number">  62</span><span class="k2">{</span>
<span class="number">  63</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> mapSizeX<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  64</span>  <span class="k2">{</span>
<span class="number">  65</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> mapSizeY<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  66</span>    <span class="k2">{</span>
<span class="number">  67</span>      <span class="k1">if</span><span class="k2">(</span>ColMapFile<span class="k2">[</span>map.getLevel<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number">  68</span>      <span class="k2">{</span>
<span class="number">  69</span>        <span class="k1">if</span><span class="k2">(</span>player.x <span class="k3">&gt;</span> i <span class="k3">*</span> blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.y <span class="k3">&gt;</span> j<span class="k3">*</span>blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.x2 <span class="k3">&lt;</span> i<span class="k3">*</span>blockSize <span class="k3">|</span><span class="k3">|</span> player.y2 <span class="k3">&lt;</span> j<span class="k3">*</span>blockSize<span class="k2">)</span>
<span class="number">  70</span>        <span class="k2">{</span>
<span class="number">  71</span>          <span class="c">//no collision</span>
<span class="number">  72</span>          player.platform <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  73</span>        <span class="k2">}</span>
<span class="number">  74</span>
<span class="number">  75</span>        <span class="k1">else</span>
<span class="number">  76</span>        <span class="k2">{</span>
<span class="number">  77</span>          <span class="k1">if</span> <span class="k2">(</span>player.vDir <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number">  78</span>          <span class="k2">{</span>
<span class="number">  79</span>            player.y <span class="k3">+</span><span class="k3">=</span> player.speed <span class="k3">*</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  80</span>            player.y2 <span class="k3">=</span> player.y <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  81</span>            player.vely <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  82</span>            player.platform <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  83</span>            player.jump <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  84</span>          <span class="k2">}</span>
<span class="number">  85</span>
<span class="number">  86</span>          <span class="k1">if</span><span class="k2">(</span>player.vDir <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.y <span class="k3">-</span> player.vely <span class="k3">&lt;</span><span class="k3">=</span> j<span class="k3">*</span>blockSize<span class="k2">)</span>
<span class="number">  87</span>          <span class="k2">{</span>
<span class="number">  88</span>            player.y <span class="k3">=</span> j<span class="k3">*</span>blockSize <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  89</span>            player.y2 <span class="k3">=</span> player.y <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  90</span>            player.platform <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  91</span>            player.jump <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  92</span>            player.vely <span class="k3">=</span> <span class="n">0</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="k1">if</span> <span class="k2">(</span>player.hDir <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.platform <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span>
<span class="number">  98</span>          <span class="k2">{</span>
<span class="number">  99</span>            player.x <span class="k3">-</span><span class="k3">=</span> player.speed<span class="k2">;</span>
<span class="number"> 100</span>            player.x2 <span class="k3">=</span> player.x <span class="k2">;</span>
<span class="number"> 101</span>          <span class="k2">}</span>
<span class="number"> 102</span>
<span class="number"> 103</span>          <span class="k1">if</span> <span class="k2">(</span>player.hDir <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.platform <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span>
<span class="number"> 104</span>          <span class="k2">{</span>
<span class="number"> 105</span>            player.x <span class="k3">+</span><span class="k3">=</span> player.speed<span class="k2">;</span>
<span class="number"> 106</span>            player.x2 <span class="k3">=</span> player.x <span class="k3">+</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 107</span>          <span class="k2">}</span>
<span class="number"> 108</span>        <span class="k2">}</span>
<span class="number"> 109</span>      <span class="k2">}</span>
<span class="number"> 110</span>    <span class="k2">}</span>
<span class="number"> 111</span>  <span class="k2">}</span>
<span class="number"> 112</span><span class="k2">}</span>
<span class="number"> 113</span>
<span class="number"> 114</span><span class="k1">void</span> Collision::LevelReset<span class="k2">(</span>Player <span class="k3">&amp;</span>player, Map <span class="k3">&amp;</span>map<span class="k2">)</span>
<span class="number"> 115</span><span class="k2">{</span>
<span class="number"> 116</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> mapSizeX<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 117</span>  <span class="k2">{</span>
<span class="number"> 118</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> mapSizeY<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 119</span>    <span class="k2">{</span>
<span class="number"> 120</span>      <span class="k1">if</span><span class="k2">(</span>ColMapFile<span class="k2">[</span>map.getLevel<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span>
<span class="number"> 121</span>      <span class="k2">{</span>
<span class="number"> 122</span>        <span class="k1">if</span><span class="k2">(</span>player.x <span class="k3">&gt;</span> i <span class="k3">*</span> blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.y <span class="k3">&gt;</span> j<span class="k3">*</span>blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.x2 <span class="k3">&lt;</span> i<span class="k3">*</span>blockSize <span class="k3">|</span><span class="k3">|</span> player.y2 <span class="k3">&lt;</span> j<span class="k3">*</span>blockSize<span class="k2">)</span>
<span class="number"> 123</span>        <span class="k2">{</span>
<span class="number"> 124</span>          <span class="c">//no collision</span>
<span class="number"> 125</span>        <span class="k2">}</span>
<span class="number"> 126</span>
<span class="number"> 127</span>        <span class="k1">else</span>
<span class="number"> 128</span>        <span class="k2">{</span>
<span class="number"> 129</span>          player.x <span class="k3">=</span> player.origX<span class="k2">;</span>
<span class="number"> 130</span>          player.y <span class="k3">=</span> player.origY<span class="k2">;</span>
<span class="number"> 131</span>
<span class="number"> 132</span>          map.setLevel<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 133</span>
<span class="number"> 134</span>          player.velx <span class="k3">=</span> player.speed<span class="k2">;</span>
<span class="number"> 135</span>          player.hDir <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 136</span>        <span class="k2">}</span>
<span class="number"> 137</span>      <span class="k2">}</span>
<span class="number"> 138</span>    <span class="k2">}</span>
<span class="number"> 139</span>  <span class="k2">}</span>
<span class="number"> 140</span>
<span class="number"> 141</span><span class="k2">}</span>
<span class="number"> 142</span>
<span class="number"> 143</span><span class="k1">void</span> Collision::LevelEnd<span class="k2">(</span>Player <span class="k3">&amp;</span>player, Map <span class="k3">&amp;</span>map<span class="k2">)</span>
<span class="number"> 144</span><span class="k2">{</span>
<span class="number"> 145</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> mapSizeX<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 146</span>  <span class="k2">{</span>
<span class="number"> 147</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> mapSizeY<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 148</span>    <span class="k2">{</span>
<span class="number"> 149</span>      <span class="k1">if</span><span class="k2">(</span>ColMapFile<span class="k2">[</span>map.getLevel<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">3</span><span class="k2">)</span>
<span class="number"> 150</span>      <span class="k2">{</span>
<span class="number"> 151</span>        <span class="k1">if</span><span class="k2">(</span>player.x <span class="k3">&gt;</span> i <span class="k3">*</span> blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.y <span class="k3">&gt;</span> j<span class="k3">*</span>blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.x2 <span class="k3">&lt;</span> i<span class="k3">*</span>blockSize <span class="k3">|</span><span class="k3">|</span> player.y2 <span class="k3">&lt;</span> j<span class="k3">*</span>blockSize<span class="k2">)</span>
<span class="number"> 152</span>        <span class="k2">{</span>
<span class="number"> 153</span>          <span class="c">//no collision</span>
<span class="number"> 154</span>        <span class="k2">}</span>
<span class="number"> 155</span>
<span class="number"> 156</span>        <span class="k1">else</span>
<span class="number"> 157</span>        <span class="k2">{</span>
<span class="number"> 158</span>          <span class="k1">int</span> level <span class="k3">=</span> map.getLevel<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</span>          level <span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 160</span>          map.setLevel<span class="k2">(</span>level<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>          <span class="k1">if</span><span class="k2">(</span>level <span class="k3">&gt;</span> <span class="n">2</span><span class="k2">)</span>
<span class="number"> 162</span>          <span class="k2">{</span>
<span class="number"> 163</span>            map.setLevel<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 164</span>            player.velx <span class="k3">=</span> player.speed<span class="k2">;</span>
<span class="number"> 165</span>            player.hDir <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 166</span>          <span class="k2">}</span>
<span class="number"> 167</span>          player.x <span class="k3">=</span> player.origX<span class="k2">;</span>
<span class="number"> 168</span>          player.y <span class="k3">=</span> player.origY<span class="k2">;</span>
<span class="number"> 169</span>
<span class="number"> 170</span>          <span class="c">//Wait 1 second (loading new map)</span>
<span class="number"> 171</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">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 172</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"> 173</span>          <span class="c">//al_rest(1);</span>
<span class="number"> 174</span>        <span class="k2">}</span>
<span class="number"> 175</span>      <span class="k2">}</span>
<span class="number"> 176</span>    <span class="k2">}</span>
<span class="number"> 177</span>  <span class="k2">}</span>
<span class="number"> 178</span>
<span class="number"> 179</span><span class="k2">}</span>
<span class="number"> 180</span>
<span class="number"> 181</span><span class="k1">void</span> Collision::DirReverse<span class="k2">(</span>Player <span class="k3">&amp;</span>player, Map <span class="k3">&amp;</span>map<span class="k2">)</span>
<span class="number"> 182</span><span class="k2">{</span>
<span class="number"> 183</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> mapSizeX<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 184</span>  <span class="k2">{</span>
<span class="number"> 185</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> mapSizeY<span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 186</span>    <span class="k2">{</span>
<span class="number"> 187</span>      <span class="k1">if</span><span class="k2">(</span>ColMapFile<span class="k2">[</span>map.getLevel<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span><span class="k2">[</span>i<span class="k2">]</span><span class="k2">[</span>j<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span>
<span class="number"> 188</span>      <span class="k2">{</span>
<span class="number"> 189</span>        <span class="k1">if</span><span class="k2">(</span>player.x <span class="k3">&gt;</span> i <span class="k3">*</span> blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.y <span class="k3">&gt;</span> j<span class="k3">*</span>blockSize <span class="k3">+</span> blockSize <span class="k3">|</span><span class="k3">|</span> player.x2 <span class="k3">&lt;</span> i<span class="k3">*</span>blockSize <span class="k3">|</span><span class="k3">|</span> player.y2 <span class="k3">&lt;</span> j<span class="k3">*</span>blockSize<span class="k2">)</span>
<span class="number"> 190</span>        <span class="k2">{</span>
<span class="number"> 191</span>          <span class="c">//no collision</span>
<span class="number"> 192</span>        <span class="k2">}</span>
<span class="number"> 193</span>
<span class="number"> 194</span>        <span class="k1">else</span>
<span class="number"> 195</span>        <span class="k2">{</span>
<span class="number"> 196</span>          
<span class="number"> 197</span>          player.velx <span class="k3">-</span><span class="k3">=</span> player.speed<span class="k2">;</span>
<span class="number"> 198</span>          player.hDir <span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number"> 199</span>        <span class="k2">}</span>
<span class="number"> 200</span>      <span class="k2">}</span>
<span class="number"> 201</span>    <span class="k2">}</span>
<span class="number"> 202</span>  <span class="k2">}</span>
<span class="number"> 203</span>
<span class="number"> 204</span><span class="k2">}</span>
</div></div><p>	</p><p><b>Global.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">#define ScreenWidth 800 </span>
<span class="number"> 2</span><span class="p">#define ScreenHeight 600</span>
<span class="number"> 3</span><span class="p">#define blockSize 25</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (PamperBoy)</author>
		<pubDate>Sat, 31 May 2014 02:01:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, first off, adding 5 pixels a time is mega fast! Can you show me your main game loop, where you call all the functions please? <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Sat, 31 May 2014 02:14:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hehe it&#39;s a freaking mess and not commented hope you can find what you are looking for XD</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;allegro5\allegro5.h&gt; </span>
<span class="number">   3</span><span class="p">#include&lt;fstream&gt;</span>
<span class="number">   4</span><span class="c">//#include"Map.h"</span>
<span class="number">   5</span><span class="p">#include"Global.h"</span>
<span class="number">   6</span><span class="p">#include"Player.h"</span>
<span class="number">   7</span><span class="p">#include"InputManager.h"</span>
<span class="number">   8</span><span class="p">#include"Collision.h"</span>
<span class="number">   9</span><span class="p">#include&lt;allegro5\keyboard.h&gt;</span>
<span class="number">  10</span><span class="p">#include "Cam.h"</span>
<span class="number">  11</span>
<span class="number">  12</span><span class="k1">using</span> <span class="k1">namespace</span> std<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="k2">)</span>
<span class="number">  15</span><span class="k2">{</span>
<span class="number">  16</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>
<span class="number">  17</span> 
<span class="number">  18</span>    <span class="k1">const</span> <span class="k1">float</span> FPS <span class="k3">=</span> <span class="n">60</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  19</span>  <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  20</span>
<span class="number">  21</span>    <span class="c">//initialize Allegro &amp; Display. If not you get error message.</span>
<span class="number">  22</span>
<span class="number">  23</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</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">  24</span>  <span class="k2">{</span>  <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>NULL, <span class="s">"Error"</span>, <span class="s">"Error"</span>,
<span class="number">  25</span>    <span class="s">"Cannot initialize Allegro"</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  27</span>  <span class="k2">}</span>
<span class="number">  28</span>     
<span class="number">  29</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>ScreenWidth, ScreenHeight<span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>
<span class="number">  31</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span>
<span class="number">  32</span>  <span class="k2">{</span>
<span class="number">  33</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>NULL, <span class="s">"Error"</span>, <span class="s">"Error"</span>,
<span class="number">  34</span>    <span class="s">"Cannot create display"</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</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">//al_set_window_position(display, 200, 200); //If window doesnt appear on screen</span>
<span class="number">  39</span> 
<span class="number">  40</span>    <a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</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">  42</span>
<span class="number">  43</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> FPS<span class="k2">)</span><span class="k2">;</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>  <a href="http://www.allegro.cc/manual/ALLEGRO_KEYBOARD_STATE"><span class="a">ALLEGRO_KEYBOARD_STATE</span></a> keyState<span class="k2">;</span>
<span class="number">  46</span>
<span class="number">  47</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> camera<span class="k2">;</span>
<span class="number">  48</span> 
<span class="number">  49</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">  50</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">  51</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">  52</span>    
<span class="number">  53</span>  InputManager input<span class="k2">;</span>
<span class="number">  54</span>  Player player<span class="k2">;</span>
<span class="number">  55</span>  Map map<span class="k2">;</span>
<span class="number">  56</span>  Collision collision<span class="k2">;</span>
<span class="number">  57</span>  Cam cam<span class="k2">;</span>
<span class="number">  58</span>
<span class="number">  59</span>  map.Init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>  player.Init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>  collision.Init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>  cam.Init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>  <span class="k1">float</span> cameraPosition<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span> <span class="n">0</span>, <span class="n">0</span> <span class="k2">}</span><span class="k2">;</span>
<span class="number">  64</span>
<span class="number">  65</span>  
<span class="number">  66</span>
<span class="number">  67</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">  68</span>
<span class="number">  69</span><span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span>
<span class="number">  70</span>  <span class="k2">{</span>
<span class="number">  71</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">  72</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">  73</span>    <a href="http://www.allegro.cc/manual/al_get_keyboard_state"><span class="a">al_get_keyboard_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>keyState<span class="k2">)</span><span class="k2">;</span>
<span class="number">  74</span>
<span class="number">  75</span>    
<span class="number">  76</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="number">  77</span>      <span class="k2">{</span>
<span class="number">  78</span>          done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  79</span>    <span class="k2">}</span>
<span class="number">  80</span>
<span class="number">  81</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>input.IsKeyPressed<span class="k2">(</span>ev, ALLEGRO_KEY_ESCAPE<span class="k2">)</span><span class="k2">)</span>
<span class="number">  82</span>    <span class="k2">{</span>  
<span class="number">  83</span>      done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  84</span>    <span class="k2">}</span>
<span class="number">  85</span>    
<span class="number">  86</span>
<span class="number">  87</span>    player.Controls<span class="k2">(</span>ev, input<span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>    map.Draw<span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>    player.SetPosition<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>    player.Draw<span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>    cam.Update<span class="k2">(</span>cameraPosition, player<span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>
<span class="number">  93</span>    <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>camera<span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>        <a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>camera, <span class="k3">-</span><span class="k2">(</span>player.x <span class="k3">+</span> <span class="n">16</span><span class="k2">)</span> , <span class="k3">-</span><span class="k2">(</span>player.y <span class="k3">+</span> <span class="n">16</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  95</span>        <a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>camera, <span class="k3">-</span> cameraPosition<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">+</span> <span class="k2">(</span>player.x<span class="k3">+</span> <span class="n">16</span><span class="k2">)</span>, 
<span class="number">  96</span>      <span class="k3">-</span>cameraPosition<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">+</span> <span class="k2">(</span>player.y <span class="k3">+</span> <span class="n">16</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>        <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>camera<span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>
<span class="number">  99</span>    collision.Update<span class="k2">(</span>display, player, map<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>    
<span class="number"> 101</span>  <span class="k2">}</span>
<span class="number"> 102</span>    
<span class="number"> 103</span>
<span class="number"> 104</span>
<span class="number"> 105</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"> 106</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"> 107</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"> 108</span>
<span class="number"> 109</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 110</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (PamperBoy)</author>
		<pubDate>Sat, 31 May 2014 02:31:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, there&#39;s a couple of things going on here that aren&#39;t quite right; and that doesn&#39;t mean anything negative with regards to you, there&#39;s things I do wrong all the time, that&#39;s the beauty of this forum, there&#39;s so much knowledge you can just keep getting better!...</p><p>...ok, first off, do you see that you&#39;re updating your player&#39;s x &amp; y twice each loop? Once in the player.setPosition, and also in the collision class...</p><p>...don&#39;t change the players x/y in the collision function, that&#39;s what player.setPosition is for!...</p><p>...instead, give the player class a new <span class="source-code"><span class="k1">bool</span></span>, and call it <span class="source-code">canMove</span>...set it to <span class="source-code"><span class="k1">true</span></span> when you call the player constructor, and set it to <span class="source-code"><span class="k1">false</span></span> when you have a collision; then, in your player.setPosition, ONLY allow the change of x/y if <span class="source-code">player.canMove <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span></span>...</p><p>...after you&#39;ve done that, let me know what happens!</p><p>[EDIT]</p><p>(You&#39;re not using the timers quite right either, and a few other bits, but let&#39;s do this a problem at a time! <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />)</p><p>[EDIT2]</p><p><i>updated!!</i> <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Sat, 31 May 2014 02:58:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>lets see. I dont think i get it... (this gives me the same result. when i colide to the left side of a tile i go in there in stop in the middle.)</p><p>this is an if statement in the collision.cpp
</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="k1">if</span><span class="k2">(</span>player.hDir <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> player.platform <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span>
<span class="number"> 2</span>          <span class="k2">{</span>
<span class="number"> 3</span>            player.canMove <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 4</span>          <span class="k2">}</span>
</div></div><p>


this is the player setPosition</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="k1">void</span> Player::SetPosition<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  <span class="k1">if</span> <span class="k2">(</span>vely <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  4</span>  <span class="k2">{</span>
<span class="number">  5</span>    vDir <span class="k3">=</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  6</span>  <span class="k2">}</span>
<span class="number">  7</span>
<span class="number">  8</span>  <span class="k1">if</span><span class="k2">(</span>canMove <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span>
<span class="number">  9</span>  <span class="k2">{</span>
<span class="number"> 10</span>    x <span class="k3">-</span><span class="k3">=</span> speed<span class="k2">;</span>
<span class="number"> 11</span>    x2 <span class="k3">=</span> x <span class="k3">+</span> <span class="n">10</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">if</span><span class="k2">(</span>platform <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span>
<span class="number"> 15</span>  <span class="k2">{</span>
<span class="number"> 16</span>    vely <span class="k3">+</span><span class="k3">=</span> gravity<span class="k2">;</span>
<span class="number"> 17</span>  <span class="k2">}</span>
<span class="number"> 18</span>
<span class="number"> 19</span>  <span class="k1">else</span>
<span class="number"> 20</span>  <span class="k2">{</span>
<span class="number"> 21</span>    vely <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 22</span>  <span class="k2">}</span>
<span class="number"> 23</span>  
<span class="number"> 24</span>  x <span class="k3">+</span><span class="k3">=</span> velx<span class="k2">;</span>
<span class="number"> 25</span>  y <span class="k3">+</span><span class="k3">=</span> vely<span class="k2">;</span>
<span class="number"> 26</span>  x2 <span class="k3">=</span> x <span class="k3">+</span> width<span class="k2">;</span>
<span class="number"> 27</span>  y2 <span class="k3">=</span> y <span class="k3">+</span> height<span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (PamperBoy)</author>
		<pubDate>Sat, 31 May 2014 15:17:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I suppose the best way to get this solved fast is if you can send me your code? I could compile it here and find out why it&#39;s happening, and send you back the fixed code? Because at the moment I can&#39;t see enough to understand why...!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Sun, 01 Jun 2014 20:58:05 +0000</pubDate>
	</item>
</rss>
