<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>asteroids game, wrap around screen edges problem</title>
		<link>http://www.allegro.cc/forums/view/608855</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 20 Nov 2011 04:19:05 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi to all, i am making an asteroid clone game and i am stuck at wrap around screen edges function, without it everything is fine, when i hit the asteroid it breaks into 3 smaller asteroids, and so on. but they off screen. so in order to wrap them around the screen i had made this function in asteroid class (function is at the end of code part called AsteroidVsScreen())</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 "asteroid.h"</span>
<span class="number">   2</span><span class="p">#include &lt;allegro5\allegro.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5\allegro_image.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5\allegro_font.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5\allegro_ttf.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;allegro5\allegro_primitives.h&gt;</span>
<span class="number">   7</span><span class="p">#include &lt;allegro5\allegro_native_dialog.h&gt;</span>
<span class="number">   8</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">   9</span>
<span class="number">  10</span>
<span class="number">  11</span>
<span class="number">  12</span>asteroid::asteroid<span class="k2">(</span><span class="k2">)</span>
<span class="number">  13</span><span class="k2">{</span>
<span class="number">  14</span>dead <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  15</span>asteroidSize <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number">  16</span>   Width<span class="k3">=</span><span class="n">900</span><span class="k2">;</span>
<span class="number">  17</span>    Height<span class="k3">=</span><span class="n">600</span><span class="k2">;</span>
<span class="number">  18</span>
<span class="number">  19</span>  
<span class="number">  20</span>
<span class="number">  21</span>xspeed<span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">5</span> <span class="k3">-</span> <span class="n">3</span><span class="k2">;</span>
<span class="number">  22</span>yspeed<span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">5</span> <span class="k3">-</span> <span class="n">3</span><span class="k2">;</span>
<span class="number">  23</span>
<span class="number">  24</span>xposition <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="k2">(</span>Width <span class="k3">-</span> <span class="n">100</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>yposition <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="k2">(</span>Height <span class="k3">-</span> <span class="n">100</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span><span class="k1">if</span> <span class="k2">(</span>xposition <span class="k3">&gt;</span> Width<span class="k3">/</span><span class="n">2</span> <span class="k3">-</span> <span class="n">200</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> xposition <span class="k3">&lt;</span> Width<span class="k3">/</span><span class="n">2</span> <span class="k3">+</span> <span class="n">200</span>  <span class="k3">&amp;</span><span class="k3">&amp;</span> yposition <span class="k3">&gt;</span> Height<span class="k3">/</span><span class="n">2</span> <span class="k3">-</span><span class="n">200</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> yposition <span class="k3">&lt;</span> Height <span class="k3">+</span> <span class="n">200</span><span class="k2">)</span>
<span class="number">  27</span><span class="k2">{</span>
<span class="number">  28</span>xposition <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  29</span>yposition <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  30</span><span class="k2">}</span>
<span class="number">  31</span>
<span class="number">  32</span>Ast_angl<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  33</span>
<span class="number">  34</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>
<span class="number">  39</span>asteroid::asteroid<span class="k2">(</span><span class="k1">int</span> size, <span class="k1">int</span> x, <span class="k1">int</span> y<span class="k2">)</span>
<span class="number">  40</span><span class="k2">{</span>
<span class="number">  41</span>asteroidSize <span class="k3">=</span> size<span class="k2">;</span>
<span class="number">  42</span>
<span class="number">  43</span>
<span class="number">  44</span><span class="k1">if</span> <span class="k2">(</span>xposition <span class="k3">&gt;</span> Width<span class="k3">/</span><span class="n">2</span> <span class="k3">-</span> <span class="n">200</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> xposition <span class="k3">&lt;</span> Width<span class="k3">/</span><span class="n">2</span> <span class="k3">+</span> <span class="n">200</span>  <span class="k3">&amp;</span><span class="k3">&amp;</span> yposition <span class="k3">&gt;</span> Height<span class="k3">/</span><span class="n">2</span> <span class="k3">-</span><span class="n">200</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> yposition <span class="k3">&lt;</span> Height <span class="k3">+</span> <span class="n">200</span><span class="k2">)</span>
<span class="number">  45</span><span class="k2">{</span>
<span class="number">  46</span>xposition <span class="k3">=</span> <span class="n">33</span><span class="k2">;</span>
<span class="number">  47</span>yposition <span class="k3">=</span> <span class="n">33</span><span class="k2">;</span>
<span class="number">  48</span><span class="k2">}</span>
<span class="number">  49</span>
<span class="number">  50</span>dead <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  51</span>
<span class="number">  52</span>xspeed<span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">5</span> <span class="k3">-</span> <span class="n">3</span><span class="k2">;</span>
<span class="number">  53</span>yspeed<span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">5</span> <span class="k3">-</span> <span class="n">3</span><span class="k2">;</span>
<span class="number">  54</span><span class="k1">if</span> <span class="k2">(</span>xspeed <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> yspeed <span class="k3">=</span><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>xspeed<span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">8</span> <span class="k3">-</span> <span class="n">5</span><span class="k2">)</span><span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number">  57</span>yspeed<span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">8</span> <span class="k3">-</span> <span class="n">5</span><span class="k2">)</span><span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number">  58</span><span class="k2">}</span>
<span class="number">  59</span>xposition <span class="k3">=</span>  x<span class="k2">;</span>
<span class="number">  60</span>yposition <span class="k3">=</span>  y<span class="k2">;</span>
<span class="number">  61</span>
<span class="number">  62</span>
<span class="number">  63</span>Ast_angl<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  64</span><span class="k2">}</span>
<span class="number">  65</span>
<span class="number">  66</span>
<span class="number">  67</span>
<span class="number">  68</span><span class="k1">void</span> asteroid::refreshAsteroid<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>Asteroid,<a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span>font24<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="number">  72</span><span class="k1">if</span> <span class="k2">(</span>dead<span class="k3">=</span><span class="k3">=</span><span class="k1">true</span><span class="k2">)</span> <span class="k1">return</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>Ast_angl<span class="k3">+</span><span class="k3">=</span><span class="n">0</span>.<span class="n">03</span><span class="k2">;</span>
<span class="number">  77</span>    xposition <span class="k3">=</span> xposition <span class="k3">+</span> xspeed<span class="k2">;</span>
<span class="number">  78</span>  yposition <span class="k3">=</span> yposition <span class="k3">+</span> yspeed<span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span>  <span class="c">//al_draw_textf(font24, al_map_rgb(255,0,0), 200,200,0, " %i",Ast_angl);</span>
<span class="number">  81</span>
<span class="number">  82</span>
<span class="number">  83</span><span class="k1">if</span> <span class="k2">(</span>asteroidSize <span class="k3">=</span><span class="k3">=</span> <span class="n">3</span><span class="k2">)</span>
<span class="number">  84</span><span class="k2">{</span>
<span class="number">  85</span>  <a href="http://www.allegro.cc/manual/al_draw_scaled_rotated_bitmap"><span class="a">al_draw_scaled_rotated_bitmap</span></a><span class="k2">(</span>Asteroid,<span class="n">50</span>,<span class="n">50</span>,xposition,yposition,<span class="n">1</span>,<span class="n">1</span>,Ast_angl,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>  <span class="c">//al_draw_rectangle(xposition-25,yposition-25,xposition+25,yposition+25,al_map_rgb(255,0,0),3);</span>
<span class="number">  87</span><span class="k2">}</span>
<span class="number">  88</span><span class="k1">if</span> <span class="k2">(</span>asteroidSize <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span>
<span class="number">  89</span><span class="k2">{</span>
<span class="number">  90</span>  <a href="http://www.allegro.cc/manual/al_draw_scaled_rotated_bitmap"><span class="a">al_draw_scaled_rotated_bitmap</span></a><span class="k2">(</span>Asteroid,<span class="n">50</span>,<span class="n">50</span>,xposition,yposition,<span class="n">0</span>.<span class="n">5</span>,<span class="n">0</span>.<span class="n">5</span>,Ast_angl,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>  <span class="c">//al_draw_rectangle(xposition-12,yposition-12,xposition+12,yposition+12,al_map_rgb(255,0,0),3);</span>
<span class="number">  92</span><span class="k2">}</span>
<span class="number">  93</span><span class="k1">if</span> <span class="k2">(</span>asteroidSize <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number">  94</span><span class="k2">{</span>
<span class="number">  95</span>  <a href="http://www.allegro.cc/manual/al_draw_scaled_rotated_bitmap"><span class="a">al_draw_scaled_rotated_bitmap</span></a><span class="k2">(</span>Asteroid,<span class="n">50</span>,<span class="n">50</span>,xposition,yposition,<span class="n">0</span>.<span class="n">25</span>,<span class="n">0</span>.<span class="n">25</span>,Ast_angl,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>  <span class="c">//al_draw_rectangle(xposition-6,yposition-6,xposition+6,yposition+6,al_map_rgb(255,0,0),3);</span>
<span class="number">  97</span>
<span class="number">  98</span><span class="k2">}</span>
<span class="number">  99</span><span class="k1">if</span> <span class="k2">(</span>asteroidSize <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 100</span><span class="k2">{</span>
<span class="number"> 101</span>dead <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 102</span><span class="k1">return</span><span class="k2">;</span>
<span class="number"> 103</span><span class="k2">}</span>
<span class="number"> 104</span><span class="k2">}</span>
<span class="number"> 105</span>
<span class="number"> 106</span><span class="k1">void</span> asteroid::AsteroidVsScreen<span class="k2">(</span><span class="k2">)</span><span class="c">// al my game problems are here!!!!!!!!!</span>
<span class="number"> 107</span><span class="k2">{</span>
<span class="number"> 108</span>    
<span class="number"> 109</span>  <span class="k1">if</span> <span class="k2">(</span>dead <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span> <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 110</span>
<span class="number"> 111</span><span class="k1">if</span><span class="k2">(</span>xposition <span class="k3">&gt;</span> Width<span class="k2">)</span>
<span class="number"> 112</span><span class="k2">{</span>
<span class="number"> 113</span>xposition<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 114</span><span class="k2">}</span>
<span class="number"> 115</span>
<span class="number"> 116</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>xposition <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 117</span><span class="k2">{</span>
<span class="number"> 118</span>xposition <span class="k3">=</span> Width<span class="k2">;</span>
<span class="number"> 119</span><span class="k2">}</span>
<span class="number"> 120</span>
<span class="number"> 121</span><span class="k1">if</span><span class="k2">(</span>yposition <span class="k3">&gt;</span> Height<span class="k2">)</span>
<span class="number"> 122</span><span class="k2">{</span>
<span class="number"> 123</span>yposition <span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 124</span><span class="k2">}</span>
<span class="number"> 125</span>
<span class="number"> 126</span><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>yposition <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 127</span><span class="k2">{</span>
<span class="number"> 128</span>yposition <span class="k3">=</span> Height<span class="k2">;</span>
<span class="number"> 129</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><span class="k2">}</span>
<span class="number"> 134</span>
<span class="number"> 135</span>
<span class="number"> 136</span><span class="k1">int</span> asteroid::getAsteroidXPosition<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 137</span><span class="k2">{</span>
<span class="number"> 138</span><span class="k1">return</span> xposition<span class="k2">;</span>
<span class="number"> 139</span><span class="k2">}</span>
<span class="number"> 140</span><span class="k1">int</span> asteroid::getAsteroidYPosition<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 141</span><span class="k2">{</span>
<span class="number"> 142</span><span class="k1">return</span> yposition<span class="k2">;</span>
<span class="number"> 143</span><span class="k2">}</span>
<span class="number"> 144</span>
<span class="number"> 145</span>
<span class="number"> 146</span><span class="k1">int</span> asteroid::getAsteroidSize<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 147</span><span class="k2">{</span>
<span class="number"> 148</span><span class="k1">return</span> asteroidSize<span class="k2">;</span>
<span class="number"> 149</span><span class="k2">}</span>
<span class="number"> 150</span>
<span class="number"> 151</span>
<span class="number"> 152</span><span class="k1">void</span> asteroid::setAsteroidDead<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 153</span><span class="k2">{</span>
<span class="number"> 154</span>dead <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 155</span><span class="k2">}</span>
<span class="number"> 156</span>
<span class="number"> 157</span>asteroid::~asteroid<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 158</span><span class="k2">{</span>
<span class="number"> 159</span><span class="k2">}</span>
</div></div><p>

and now for the part in main where i call this function
</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="number">  2</span>list<span class="k3">&lt;</span>asteroid&gt;::iterator iter<span class="k2">;</span>
<span class="number">  3</span>list<span class="k3">&lt;</span>bullet&gt;::iterator bulliter<span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span>iter <span class="k3">=</span> AsteroidList.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="k1">while</span><span class="k2">(</span>iter <span class="k3">!</span><span class="k3">=</span> AsteroidList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  8</span><span class="k2">{</span>
<span class="number">  9</span>  
<span class="number"> 10</span>  asteroid<span class="k3">&amp;</span> s <span class="k3">=</span> <span class="k3">*</span>iter<span class="k2">;</span>
<span class="number"> 11</span>  <span class="c">//s.AsteroidVsScreen();// the problematic function (gives 0 0 )</span>
<span class="number"> 12</span>  
<span class="number"> 13</span>
<span class="number"> 14</span>
<span class="number"> 15</span>  <span class="k1">if</span> <span class="k2">(</span>s.getAsteroidSize<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">3</span><span class="k2">)</span> <span class="k2">{</span> TempAsteroidSize <span class="k3">=</span> <span class="n">25</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 16</span>  <span class="k1">if</span> <span class="k2">(</span>s.getAsteroidSize<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span> <span class="k2">{</span> TempAsteroidSize <span class="k3">=</span> <span class="n">12</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 17</span>  <span class="k1">if</span> <span class="k2">(</span>s.getAsteroidSize<span class="k2">(</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> <span class="k2">{</span> TempAsteroidSize <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span> <span class="k2">}</span>
<span class="number"> 18</span>                    
<span class="number"> 19</span>          
<span class="number"> 20</span>  bulliter <span class="k3">=</span> BulletList.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  
<span class="number"> 21</span><span class="k1">while</span><span class="k2">(</span>bulliter <span class="k3">!</span><span class="k3">=</span> BulletList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 22</span><span class="k2">{</span>
<span class="number"> 23</span>  bullet<span class="k3">&amp;</span> bull <span class="k3">=</span> <span class="k3">*</span>bulliter<span class="k2">;</span>
<span class="number"> 24</span>
<span class="number"> 25</span>
<span class="number"> 26</span>  <span class="k1">if</span> <span class="k2">(</span>bull.getBulletXPosition<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span> s.getAsteroidXPosition<span class="k2">(</span><span class="k2">)</span><span class="k3">-</span>TempAsteroidSize <span class="k3">&amp;</span><span class="k3">&amp;</span> 
<span class="number"> 27</span>    bull.getBulletXPosition<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span> s.getAsteroidXPosition<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> TempAsteroidSize <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 28</span>    bull.getBulletYPosition<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span> s.getAsteroidYPosition<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span>TempAsteroidSize<span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 29</span>    bull.getBulletYPosition<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span> s.getAsteroidYPosition<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> TempAsteroidSize<span class="k2">)</span>
<span class="number"> 30</span>  <span class="k2">{</span>
<span class="number"> 31</span>    tempSize <span class="k3">=</span> s.getAsteroidSize<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 32</span>    tempx <span class="k3">=</span> s.getAsteroidXPosition<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>    tempy <span class="k3">=</span> s.getAsteroidYPosition<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>    
<span class="number"> 35</span>    s.~asteroid<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>    
<span class="number"> 37</span>    
<span class="number"> 38</span>
<span class="number"> 39</span>  iter <span class="k3">=</span> AsteroidList.erase<span class="k2">(</span>iter<span class="k2">)</span><span class="k2">;</span><span class="c">//if colision asteroid is errased</span>
<span class="number"> 40</span>  bulliter <span class="k3">=</span> BulletList.erase<span class="k2">(</span>bulliter<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>  collision<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span><span class="c">// withaut this the iter++ will make an error</span>
<span class="number"> 42</span>  <span class="k1">if</span> <span class="k2">(</span>tempSize <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 43</span>  
<span class="number"> 44</span>AsteroidList.push_back<span class="k2">(</span><span class="k3">*</span><span class="k1">new</span> asteroid<span class="k2">(</span>tempSize, tempx<span class="k3">+</span><span class="k2">(</span>n<span class="k3">+</span><span class="n">1</span><span class="k2">)</span><span class="k3">*</span><span class="n">10</span>, tempy<span class="k3">+</span><span class="k2">(</span>n<span class="k3">+</span><span class="n">1</span><span class="k2">)</span><span class="k3">*</span><span class="n">10</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>  
<span class="number"> 45</span>AsteroidList.push_back<span class="k2">(</span><span class="k3">*</span><span class="k1">new</span> asteroid<span class="k2">(</span>tempSize, tempx, tempy<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>AsteroidList.push_back<span class="k2">(</span><span class="k3">*</span><span class="k1">new</span> asteroid<span class="k2">(</span>tempSize, tempx-<span class="k2">(</span>n<span class="k3">+</span><span class="n">1</span><span class="k2">)</span><span class="k3">*</span><span class="n">10</span>, tempy-<span class="k2">(</span>n<span class="k3">+</span><span class="n">1</span><span class="k2">)</span><span class="k3">*</span><span class="n">10</span><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="k2">}</span>
<span class="number"> 51</span>  <span class="k1">else</span><span class="k2">{</span>bulliter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 52</span>  
<span class="number"> 53</span><span class="k2">}</span>
<span class="number"> 54</span><span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>collision<span class="k2">)</span><span class="k2">{</span>iter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 55</span><span class="k1">if</span> <span class="k2">(</span>collision<span class="k2">)</span><span class="k2">{</span>collision<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span>  score<span class="k3">+</span><span class="k3">=</span><span class="n">1</span><span class="k2">;</span><span class="k2">}</span>  <span class="c">// the iter error solved</span>
<span class="number"> 56</span>
<span class="number"> 57</span><span class="k2">}</span><span class="c">// while asteroids</span>
</div></div><p>

then the part of the code that refreshes asteroids on the screen
</p><div class="source-code snippet"><div class="inner"><pre>iter <span class="k3">=</span> AsteroidList.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">while</span><span class="k2">(</span>iter <span class="k3">!</span><span class="k3">=</span> AsteroidList.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="k2">{</span>
  
  <span class="c">// Retrieve the asteroid that the iterator points at</span>
  asteroid<span class="k3">&amp;</span> s <span class="k3">=</span> <span class="k3">*</span>iter<span class="k2">;</span>
  s.refreshAsteroid<span class="k2">(</span>Asteroid,font24<span class="k2">)</span><span class="k2">;</span>

iter <span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
  
<span class="k2">}</span>
</pre></div></div><p>
Any suggestions would be great
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (scorpx333)</author>
		<pubDate>Sat, 19 Nov 2011 23:35:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your first problem is mixing drawing with logic. You should not both alter position and draw in the same function. Split your functions apart and keep any logic separate from any drawing.</p><p>Ideally, your loop should look like this :
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>game.Quit<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
   game.CheckInputs<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
   game.Update<span class="k2">(</span>time_passed<span class="k2">)</span><span class="k2">;</span>
   game.Display<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

You have input logic, update logic, and drawing all separated out.</p><p>Update logic checks for collisions, and marks asteroids and bullets as dead, and updates their positions, as well as the position of the player. Drawing just draws, based on the state of the game. Input logic affects turn rate and acceleration, or angle and velocity of the player, or anything else controlled by the user.</p><p>Your update function should probably look something like this (pseudocode) :
</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> Game::Update<span class="k2">(</span><span class="k1">double</span> dt<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  2</span>
<span class="number">  3</span>   <span class="k1">for</span> each asteroid a <span class="k2">{</span>a.Update<span class="k2">(</span>dt<span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  4</span>   <span class="k1">for</span> each bullet b <span class="k2">{</span>b.Update<span class="k2">(</span>dt<span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  5</span>   player.Update<span class="k2">(</span>dt<span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>   <span class="k1">for</span> each asteroid a <span class="k2">{</span>
<span class="number">  8</span>      <span class="k1">for</span> each bullet b <span class="k2">{</span>
<span class="number">  9</span>         <span class="k1">if</span> <span class="k2">(</span>overlaps<span class="k2">(</span>b.circle , a.circle<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 10</span>            a.destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="c">// This doesn't always delete the asteroid,</span>
<span class="number"> 11</span>                        <span class="c">// but takes care of creating new sub asteroids if necessary</span>
<span class="number"> 12</span>            b.destroy<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>         <span class="k2">}</span>
<span class="number"> 14</span>      <span class="k2">}</span>
<span class="number"> 15</span>      <span class="k1">if</span> <span class="k2">(</span>overlaps<span class="k2">(</span>player.circle , a.circle<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 16</span>         player.GotHit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</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="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 19 Nov 2011 23:54:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you Edgar Reynaldo, but maybe you know how could i complete this game with such code structure: logic and drawing together? or this is impossible? I need only to solve the combination of: asteroids being on the screen and breaking into smaller asteroid, problem. So i&#39;ll have an alpha version of this game working <br />(i&#39;ll rewrite all the code with right functions positions afterwards for beta + other)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (scorpx333)</author>
		<pubDate>Sun, 20 Nov 2011 00:32:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s not impossible, but it can make things harder. It&#39;s certainly messier.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sun, 20 Nov 2011 00:34:07 +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/608855/937879#target">scorpx333</a> said:</div><div class="quote"><p>
Thank you Edgar Reynaldo, but maybe you know how could i complete this game with such code structure: logic and drawing together?
</p></div></div><p>

I&#39;ll just let you know, you&#39;re doing it <i>The Hard Way</i><sup>TM</sup>. If you separate everything out, it will be much easier to code. I even gave you an example of what your Update function would look like. I don&#39;t want to set a bad example by helping you do it the wrong way.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 20 Nov 2011 00:37:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, but wait a sec, look at code again if i put line 76-78 from asteroid class function asteroid::refreshAsteroid()<br />into asteroid function asteroid::AsteroidVsScreen()<br />it will separate drawing from logic because in main I call AsteroidVsScreen()(that will make logic) in line 11 in one loop.</p><p>And I call s.refreshAsteroid(Asteroid,font24) (that makes drawing) in other loop</p><p>but still it doesn&#39;t work. Or i don&#39;t understand the separation thing?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (scorpx333)</author>
		<pubDate>Sun, 20 Nov 2011 01:26:01 +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/608855/937888#target">scorpx333</a> said:</div><div class="quote"><p>
Ok, but wait a sec, look at code again if i put line 76-78 from asteroid class function asteroid::refreshAsteroid()<br />into asteroid function asteroid::AsteroidVsScreen()<br />it will separate drawing from logic because in main I call AsteroidVsScreen()(that will make logic) in line 11 in one loop.
</p></div></div><p>
Yes, that would help. If you do that, you should change the name of the function to reflect that it updates the state of the asteroid, and doesn&#39;t just fix the screen position.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
but still it doesn&#39;t work. 
</p></div></div><p>
Be specific - what do you expect it to do, and what is happening instead?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 20 Nov 2011 01:38:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I expect that asteroid::refreshAsteroid() function would work normally on new created 3 asteroids after the big one is destroyed,(it works on big one) but instead 3 asteroids get the needed size, but their positions (x and y ) becomes (0,0) and they don&#39;t move, if i don&#39;t use asteroid::refreshAsteroid() part:<br />if(xposition &gt; Width)<br /> 112{<br /> 113xposition=0;<br /> 114}<br /> 115<br /> 116else if(xposition &lt; 0)<br /> 117{<br /> 118xposition = Width;<br /> 119}<br /> 120<br /> 121if(yposition &gt; Height)<br /> 122{<br /> 123yposition =0;<br /> 124}<br /> 125<br /> 126else if(yposition &lt; 0)<br /> 127{<br /> 128yposition = Height;<br /> 129}<br /> 130</p><p>it works, but my asteroids need to be on screen if not destructed with a bullet or ship
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (scorpx333)</author>
		<pubDate>Sun, 20 Nov 2011 01:49:46 +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/608855/937866#target">scorpx333</a> said:</div><div class="quote"><p>
if (tempSize &gt; 0){<br />   AsteroidList.push_back(*new asteroid(tempSize, tempx+(n+1)*10, tempy+(n+1)*10));<br />   AsteroidList.push_back(*new asteroid(tempSize, tempx, tempy));<br />   AsteroidList.push_back(*new asteroid(tempSize, tempx-(n+1)*10, tempy-(n+1)*10));<br />}
</p></div></div><p>
What is the value of n? Also, you are adding the data pointed to by a new asteroid. That means you leak the address (and memory) of the asteroid you just created. Don&#39;t use *new, just use the asteroid constructor.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/608855/937892#target">scorpx333</a> said:</div><div class="quote"><p>
their positions (x and y ) becomes (0,0) and they don&#39;t move,
</p></div></div><p>
Then you are setting their position and velocity to zero somewhere else, because the constructor takes the position values you passed to it, and their velocity shouldn&#39;t be changing either.</p><p>Use your IDE&#39;s find function, and look at all the instances of the position and velocity variables, and figure out which lines are changing the values. Because AsteroidVsScreen doesn&#39;t change the velocity, and it only changes the position if they go off screen.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 20 Nov 2011 02:15:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>the n is 0, it doesn&#39;t do anything(forgot to rewrite that). </p><p>after experimenting a bit i found out that AsteroidVsScreen only adds speed 1 time to new smaller asteroids,  constructor gets position but somehow  AsteroidVsScreen gets that x and y isn&#39;t on screen and makes them 0 0 then adds x=0+speed and stops, but why it stops, why AsteroidVsScreen only goes for 1 time for the new asteroid.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (scorpx333)</author>
		<pubDate>Sun, 20 Nov 2011 02:56:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, I can&#39;t guess what is wrong anymore. I need to see all of your code together if you want me to figure out what is wrong. Post a zip file of all your source code and I will take a look at it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 20 Nov 2011 03:00:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Edgar Reynaldo, here is my zip file, if you could check it, that would be really helpful, and thank you for your time spent on my game problem
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (scorpx333)</author>
		<pubDate>Sun, 20 Nov 2011 03:14:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There&#39;s no attachment...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 20 Nov 2011 03:16:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>sorry for that i am trying to find a way to post it, ok now it should be working, do you need full game file or this source?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (scorpx333)</author>
		<pubDate>Sun, 20 Nov 2011 03:19:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Edit your post and look in the bottom right of the screen for &#39;attachments for use with substandard browsers&#39;, or use Firefox or Chrome to upload your attachment.</p><p><b>Edit</b><br />Well, first off, you need to fix your formatting. Use consistent indentation with the same number of spaces per level everywhere, or use tabs exclusively.</p><p>I found the problem. It is in your constructor. Your default constructor sets values for Width and Height, but your Asteroid::Asteroid(int,int,int) constructor does not. This means they are probably 0, but are really uninitialized. That is why <span class="source-code"><span class="k1">if</span> <span class="k2">(</span>xposition <span class="k3">&gt;</span> Width<span class="k2">)</span> <span class="k2">{</span>xposition <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span><span class="k2">}</span></span> always sets the value to 0.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 20 Nov 2011 03:26:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
THANK YOU  EDGAR Reynaldo!!!!!!!!<br />YOU WHERE RIGHT it works now, how could i be so blind and don&#39;t see this mistake <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />i&#39;ve add height and width to constructor and everything works!!!!!!!!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (scorpx333)</author>
		<pubDate>Sun, 20 Nov 2011 04:09:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>To prevent this problem in the future, google for &#39;initialization list&#39;, and then always write one in your constructors that initializes every member variable to a set value.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 20 Nov 2011 04:19:05 +0000</pubDate>
	</item>
</rss>
