for (int l = 0; l <30; l++)
{
blocks[l]->SetPosition(rand()%500, rand()%450);
for(int s=0; s < 30; s++)
{
if( blocks[l]->TestCollision(blocks) == <span class="cpp-keyword">TRUE</span>)
{
<span class="cpp-keyword">if</span> (blocks != blocks[l])
blocks[l]->SetPosition(rand()%<span class="cpp-number">500</span>, rand()%<span class="cpp-number">450</span>);
};
};
};
<span class="cpp-keyword">for</span> (<span class="cpp-keyword">int</span> y = <span class="cpp-number">0</span>; y <<span class="cpp-number">30</span>; y++)
{
blocks[y]->SetHidden(<span class="cpp-keyword">false</span>);
};
};
totalblocks=<span class="cpp-number">29</span>;
};
</pre></div><!–ENDSCRIPT–>
in my GameStart function to load the blocks randomly
but when i do this
<!–STARTSCRIPT–><!–source lang="cpp"–><div class="source"><pre>
<span class="cpp-keyword">switch</span> (totalblocks)
{
<span class="cpp-keyword">case</span> <span class="cpp-number">28</span>:
{
<span class="cpp-keyword">for</span> (<span class="cpp-keyword">int</span> l = <span class="cpp-number">0</span>; l <<span class="cpp-number">30</span>; l++)
{
blocks[l]->SetPosition(rand()%<span class="cpp-number">500</span>, rand()%<span class="cpp-number">450</span>);
<span class="cpp-keyword">for</span>(<span class="cpp-keyword">int</span> s=<span class="cpp-number">0</span>; s < <span class="cpp-number">30</span>; s++)
{
<span class="cpp-keyword">if</span>( blocks[l]->TestCollision(blocks) == <span class="cpp-keyword">TRUE</span>)
{
<span class="cpp-keyword">if</span> (blocks != blocks[l])
blocks[l]->SetPosition(rand()%<span class="cpp-number">500</span>, rand()%<span class="cpp-number">450</span>);
};
};
};
<span class="cpp-keyword">for</span> (<span class="cpp-keyword">int</span> y = <span class="cpp-number">0</span>; y <<span class="cpp-number">30</span>; y++)
{
blocks[y]->SetHidden(<span class="cpp-keyword">false</span>);
};
};
totalblocks=<span class="cpp-number">29</span>;
};
</pre></div><!–ENDSCRIPT–>
in my GamePaint function it dosnt work sure most of them are seprate but some of them are on top of each other and that screws up my collision detection. i cant figure out what wrong here maybe you guys can
thx in advance. [smile]
windows API
dev-cpp
4.9.9.0
random block placment switch
ok i have this pice of code here
You test for a collison. If there is you try again. But you dont then test to see if your second attempt failed. It might have collided again. You need a while loop to retest for collison everytime you try to place the block.
i tryed that i put this line
while ( blocks[l]->TestCollision(blocks) == <span class="cpp-keyword">TRUE</span>)<br> <span class="cpp-keyword">if</span> (blocks != blocks[l])<br> blocks[l]->SetPosition(rand()%<span class="cpp-number">500</span>, rand()%<span class="cpp-number">450</span>);<br><br></pre></div><!–ENDSCRIPT–><br>but when it got time to exicute the statement the whole thing just froze up
for (int l = 0; l <30; l++) { blocks[l]->SetPosition(rand()%500, rand()%450); bool IsNotSet=true; while (1) { bool Failed=false; for(int s=0; s < 30; s++) { if( blocks[l]->TestCollision(blocks) == <span class="cpp-keyword">TRUE</span>)<br> {<br> <span class="cpp-keyword">if</span> (blocks != blocks[l])<br> blocks[l]->SetPosition(rand()%<span class="cpp-number">500</span>, rand()%<span class="cpp-number">450</span>);<br> Failed=<span class="cpp-keyword">true</span>;<br> }<br> }<br> <span class="cpp-keyword">if</span> (!Failed) <span class="cpp-keyword">break</span>;<br> }<br> } <br> <span class="cpp-keyword">for</span> (<span class="cpp-keyword">int</span> y = <span class="cpp-number">0</span>; y <<span class="cpp-number">30</span>; y++)<br> {<br> blocks[y]->SetHidden(<span class="cpp-keyword">false</span>);<br> }<br> <br> <br> }<br> totalblocks=<span class="cpp-number">29</span>; <br> }<br><br></pre></div><!–ENDSCRIPT–><br><br>Try that.
Sorry try putting braces round
blocks[l]->SetPosition(rand()%500, rand()%450);
Failed=true;
(otherwise it will always fail, sorry!!)
blocks[l]->SetPosition(rand()%500, rand()%450);
Failed=true;
(otherwise it will always fail, sorry!!)
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement