<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>How bad is a goto statement?</title>
		<link>http://www.allegro.cc/forums/view/589282</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 02 Jan 2007 17:38:48 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Before anyone thinks about flaming me, no, I don&#39;t use goto myself. <a href="http://allegro.cc/forums/thread/589251/637661#target">This comment</a> got me thinking about it.</p><p>Assembler (Z80) has various jump instructions, some conditional, followed by the memory location to jump to. These differed to a call instruction in that once you jumped, you couldn&#39;t return (the address jumped from wasn&#39;t pushed onto a stack, whereas the calling address was).</p><p>With this in mind, is it wrong to use the occasional goto in code, other than for aesthetic reasons?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HardTranceFan)</author>
		<pubDate>Wed, 27 Dec 2006 02:33:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have to admit that i have used in on occasion, when the alternative was to re-write a loop and add a bunch of variables and if&#39;s. Not in a large program however.</p><p>It&#39;s just very ugly and makes it hard to read the code
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Wed, 27 Dec 2006 02:41:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
It&#39;s not wrong to use it were it is appropriate.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Wed, 27 Dec 2006 02:44:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My ideas:</p><p>I would say GOTO is a BadThing for 99% of the cases; most programmers could code well enough to never need something like this.</p><p>I <u>have</u> seen a GOTO in a severely-nested function, though, which seemed to do alright.  It was inside, I think, 8-9 while() and for() loops, and the point of the GOTO was &quot;Okay, the value is now true/false.  Continue with the rest of the current function!&quot;  Otherwise, he would have had to test on EVERY loop whether &quot;done == true&quot; (or whatever), and that was too expensive when you&#39;re dealing with a loop that was close to O(2^10) or something like that.</p><p>So my answer is that you should avoid it when possible, but if you HAVE to use it, do it only for efficiency reasons like that above.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Wed, 27 Dec 2006 02:46:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In high level languages the use of <tt>goto</tt> can almost always be replaced by some other, more elegant solution. The only place in C where I ever use <tt>goto</tt> is to break out of some large nested loop. With some other languages, you can use the syntax <tt>break label;</tt> to avoid using a goto in such a scenario as that. Even in C, it&#39;s quite possible that such a loop can be better written as a function call that <tt>return</tt>s in place of the <tt>goto</tt>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Wed, 27 Dec 2006 02:47:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Matthew: I hadn&#39;t heard of &quot;break label&quot; before... That would be a useful tool if I ever start nesting...  <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Wed, 27 Dec 2006 02:48:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Both Java and D use <tt>break label;</tt>. PHP uses <tt>break level;</tt>, where <tt>level</tt> is the number of loops of which you want to break out.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Wed, 27 Dec 2006 02:52:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Goto makes programs hard to read and analyze. The only use for goto is to break from nested cycles, yes, but most times you can prevent that by adding control variables to each of the loops.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Wed, 27 Dec 2006 03:11:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Goto can also be used to implement exception-like logic in languages like C. I remember having seen file access routines which had lots of potential failure points. Instead of repeating error handling code for each point, the routines used goto, which made them easier to understand. <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Rampage)</author>
		<pubDate>Wed, 27 Dec 2006 03:28:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>A goto is only bad because people get lazy. Most of the time a goto is not needed (mostly only needed in low-level). Without the goto statement c and c++ are turing complete. The danger is someone could use a goto and avoid deep thinking and proper organization of the code (create a proper state machine and code it cleanly!). This is when it becomes hard/impossible to read and debug.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Goalie Ca)</author>
		<pubDate>Wed, 27 Dec 2006 03:30:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My question is this: If you use a GOTO to break out of a function, what happens to all the local variables?  Are they taken out of scope, or can they still be accessed?</p><p>Oh, and I think I should start doing this from now on:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>argv<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>  string temp<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>  <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> argc<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">5</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">6</td><td>    temp <span class="k3">=</span> argv<span class="k3">&lt;</span>i&gt;<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">if</span> <span class="k2">(</span>temp <span class="k3">=</span><span class="k3">=</span> <span class="s">"--help"</span><span class="k2">)</span></td></tr><tr><td class="number">8</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>      <span class="k1">goto</span> HELP<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>HELPDONE:</td></tr><tr><td class="number">11</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">12</td><td>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>temp <span class="k3">=</span><span class="k3">=</span> <span class="s">"--version"</span><span class="k2">)</span></td></tr><tr><td class="number">13</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">14</td><td>      <span class="k1">goto</span> VERSION<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>VERSIONDONE:</td></tr><tr><td class="number">16</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">17</td><td>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>temp <span class="k3">=</span><span class="k3">=</span> <span class="s">"--screenResolution"</span><span class="k2">)</span></td></tr><tr><td class="number">18</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">19</td><td>      <span class="k1">goto</span> RESOL</td></tr><tr><td class="number">20</td><td>RESOLDONE:</td></tr><tr><td class="number">21</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">22</td><td>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">23</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td>  <span class="k1">goto</span> END<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>HELP:</td></tr><tr><td class="number">28</td><td>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"You asked for help..."</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>  <span class="k1">goto</span> HELPDONE<span class="k2">;</span></td></tr><tr><td class="number">30</td><td>VERSION:</td></tr><tr><td class="number">31</td><td>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"You're asking for the version..."</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>  <span class="k1">goto</span> VERSIONDONE<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>RESOL:</td></tr><tr><td class="number">34</td><td>  cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"You're asking for the screen resolution..."</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>  <span class="k1">goto</span> RESOLDONE</td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td>END:</td></tr><tr><td class="number">38</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

EDIT: Fixed the labels per Simon Parzer&#39;s feedback.  Thanks, Simon! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Wed, 27 Dec 2006 03:40:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In C goto can&#39;t take you outside the scope of the current function.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Oh, and I think I should start doing this from now on:
</p></div></div><p>

Oh no! Don&#39;t ever do that! That&#39;s what the switch clause is for.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Rampage)</author>
		<pubDate>Wed, 27 Dec 2006 03:42:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why don&#39;t you try it?</p><p>You got it all wrong BTW...</p><p>You do labels and gotos in C like this:
</p><div class="source-code snippet"><div class="inner"><pre>ThisIsALabel:<span class="k2">;</span>
<span class="c">//some code</span>
<span class="k1">goto</span> ThisIsALabel<span class="k2">;</span>
</pre></div></div><p>

I don&#39;t know exactly what you posted but I think the syntax is wrong.<br />In my opinion you should use goto where you need it. As long as you don&#39;t plan to share your code with others.<br />Sometimes it even makes code simpler. I mean, I rather have a bunch of gotos and three labels than five nested loops. When I started with BASIC a long time ago I got used to GOTOs and I have no big problems with them now.<br />In C++ or modular C the goto statement doesn&#39;t make much sense anymore, though.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simon Parzer)</author>
		<pubDate>Wed, 27 Dec 2006 03:46:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hey TT, your code put a grin on my face. <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HardTranceFan)</author>
		<pubDate>Wed, 27 Dec 2006 03:53:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sometimes, when writing my flow control, its difficult to implement it or think of it in terms of the standard C/C++ flow control primitives of for/while/do/switch loops and function calls.  Usually in such cases I&#39;ll write what I&#39;m thinking of in terms of loops and function calls, but do most of the flow control with if...break; and if...continue; statements and a few variables declared for the sole purpose of acting as flags for the loops.  </p><p>Occaisonally though, the code will become harder to maintain, and/or debug if I write it that way, so I&#39;ll use goto statements instead.  That has only happened maybe 10-20 times in the last 30 thousand lines of C/C++ code I&#39;ve written, and some of those cases could have been expressed as exceptions more naturally if I hadn&#39;t been trying to avoid some issue involved with exceptions in the relevant code.  </p><p>Even more rarely, sometimes I&#39;ll write something where I have such a difficult time even concieving of the flow control necessary that expressing it in terms of anything other than the natural flow control primitives I concieved of it in (often gotos for something like that) would take a great deal of diagramming and analysis and just be asking for trouble, so I write it as I concieve of it.  That has only happened maybe 2 or 3 times in the last 30 thousand lines of C/C++ code I&#39;ve written.  Perhaps I should spend the time and effort diagramming and analyzing such cases; perhaps it would improve my ability to think in terms of the usual flow control primitives.  But I&#39;m not too sure about that.  Perhaps that would merely limit my thinking to things that can easily be expressed in C/C++ instead.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (orz)</author>
		<pubDate>Wed, 27 Dec 2006 04:10:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have never used goto in C/C++, and the only time I&#39;ve ever used it is with VB 6 for error handling. Because I never use it, I never think about it, and therefore when coding, my mind never even considers it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Rick)</author>
		<pubDate>Wed, 27 Dec 2006 05:04:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ladies and gentlemen, I give you: the <b>computed goto in C</b>.<br />The &amp;&amp;X syntax is a DJGPPism for : &quot;the memory address of label X&quot;.</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#define AMC_GOTO_PCODE goto *pcode[*code_pointer]</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td>   <span class="k1">static</span> <span class="k1">const</span> <span class="k1">void</span> <span class="k3">*</span> pcode<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span></td></tr><tr><td class="number">4</td><td>  NULL,</td></tr><tr><td class="number">5</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCInt,      <span class="c">//  1</span></td></tr><tr><td class="number">6</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCRegGlobal,<span class="c">//  2</span></td></tr><tr><td class="number">7</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCRegLocal, <span class="c">//  3</span></td></tr><tr><td class="number">8</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCRnd,      <span class="c">//  4</span></td></tr><tr><td class="number">9</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCJump,     <span class="c">//  5</span></td></tr><tr><td class="number">10</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCDirect,   <span class="c">//  6</span></td></tr><tr><td class="number">11</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCExit,     <span class="c">//  7</span></td></tr><tr><td class="number">12</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCIfnot,    <span class="c">//  8</span></td></tr><tr><td class="number">13</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCIfjump,   <span class="c">//  9</span></td></tr><tr><td class="number">14</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCIfdirect, <span class="c">// 10</span></td></tr><tr><td class="number">15</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCIfexit,   <span class="c">// 11</span></td></tr><tr><td class="number">16</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCEnd,      <span class="c">// 12</span></td></tr><tr><td class="number">17</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCAuto,     <span class="c">// 13</span></td></tr><tr><td class="number">18</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCStore,    <span class="c">// 14</span></td></tr><tr><td class="number">19</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCRecall,   <span class="c">// 15</span></td></tr><tr><td class="number">20</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCStackup,  <span class="c">// 16</span></td></tr><tr><td class="number">21</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCSpawn,    <span class="c">// 17</span></td></tr><tr><td class="number">22</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCPause,    <span class="c">// 18</span></td></tr><tr><td class="number">23</td><td>  <span class="k3">&amp;</span><span class="k3">&amp;</span>AMCMove      <span class="c">// 19</span></td></tr><tr><td class="number">24</td><td>  <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td><span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">27</td><td><span class="c">// start of interpretation</span></td></tr><tr><td class="number">28</td><td>AMC_GOTO_PCODE<span class="k2">;</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td><span class="k2">(</span>...<span class="k2">)</span> <span class="c">// some sample instructions :</span></td></tr><tr><td class="number">31</td><td>AMCInt:         <span class="c">// put an Integer in the register</span></td></tr><tr><td class="number">32</td><td>   code_pointer<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>   AmEval<span class="k2">(</span><span class="k3">&amp;</span>currentexp,code_pointer,<span class="k3">*</span><span class="k2">(</span>code_pointer<span class="k3">+</span><span class="n">1</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>   code_pointer<span class="k3">+</span><span class="k3">=</span><span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>   AMC_GOTO_PCODE<span class="k2">;</span></td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td>AMCJump:         <span class="c">// Jump</span></td></tr><tr><td class="number">38</td><td>   code_pointer<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>   code_pointer<span class="k3">=</span> <span class="k3">*</span>code_pointer <span class="k3">+</span> BOB<span class="k2">[</span>Actor<span class="k2">]</span>.programstart<span class="k2">;</span></td></tr><tr><td class="number">40</td><td>   AMC_GOTO_PCODE<span class="k2">;</span></td></tr></tbody></table></div></div><p>
Compared to a switch() statement, this was way cooler IMHO, and the emulation time went from 3% to 2% (precision of this figure is low, though)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Wed, 27 Dec 2006 06:02:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve never used goto. I do think it is a bad thing. The more you use goto, the more your code differs from what is considered typical C code structure. As Matthew said, you can put the part of code in a function and have returns instead.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Wed, 27 Dec 2006 06:03:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Johan, I would agree with that, unless there has to be a lot of data transfer.</p><p>Say, for example, that you have declared a bunch of data at the beginning of your function.  Then, you want to test whether &quot;a == b&quot; and &quot;c &lt; d&quot; or &quot;e != f&quot;, etc.  If you push all that data into a separate function just to do the test, it slows down the code quite a bit.</p><p>If, however, you break out of a very-nested group of loops with a GOTO, you can continue with all the data and variables you had declared/changed/etc. as if you had simply &quot;break&quot;-ed a bunch of times to get there...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Wed, 27 Dec 2006 06:13:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#39;s some code I have for decoding macroblocks from an MPEG-1 data stream:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">static</span> <span class="k1">void</span> p_picture<span class="k2">(</span>APEG_LAYER <span class="k3">*</span>layer<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    <span class="k1">const</span> <span class="k1">int</span> MBAmax <span class="k3">=</span> layer-&gt;mb_cols<span class="k3">*</span>layer-&gt;mb_rows<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    <span class="k1">int</span> macroblock_type<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>    <span class="k1">int</span> coded_block_pattern<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">int</span> MBA, MBAinc<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">int</span> dc_dct_pred<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">int</span> PMV<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <span class="k1">int</span> bx, by<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <span class="k1">unsigned</span> <span class="k1">int</span> code<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>slice_start:</td></tr><tr><td class="number">13</td><td>    dc_dct_pred<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> dc_dct_pred<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> dc_dct_pred<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    PMV<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> PMV<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td>    code <span class="k3">=</span> apeg_start_code<span class="k2">(</span>layer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    <span class="k1">if</span><span class="k2">(</span>code <span class="k3">&lt;</span> SLICE_START_CODE_MIN <span class="k3">|</span><span class="k3">|</span> code <span class="k3">&gt;</span> SLICE_START_CODE_MAX<span class="k2">)</span></td></tr><tr><td class="number">18</td><td>        <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    apeg_flush_bits32<span class="k2">(</span>layer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>    slice_header<span class="k2">(</span>layer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>    bx <span class="k3">=</span> get_mba_inc<span class="k2">(</span>layer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    by <span class="k3">=</span> <span class="k2">(</span>code<span class="k3">&amp;</span><span class="n">255</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>    MBA <span class="k3">=</span> by<span class="k3">*</span>layer-&gt;mb_cols <span class="k3">+</span> bx<span class="k2">;</span></td></tr><tr><td class="number">27</td><td>&#160;</td></tr><tr><td class="number">28</td><td>    bx <span class="k3">&lt;</span><span class="k3">&lt;</span><span class="k3">=</span> <span class="n">4</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    by <span class="k3">&lt;</span><span class="k3">&lt;</span><span class="k3">=</span> <span class="n">4</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>&#160;</td></tr><tr><td class="number">31</td><td>block_start:</td></tr><tr><td class="number">32</td><td>    code <span class="k3">=</span> show_bits<span class="k2">(</span>layer, <span class="n">6</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</td><td>    <span class="k1">if</span><span class="k2">(</span>code <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">8</span><span class="k2">)</span></td></tr><tr><td class="number">35</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">36</td><td>        code <span class="k3">&gt;</span><span class="k3">&gt;</span><span class="k3">=</span> <span class="n">3</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td>        apeg_flush_bits8<span class="k2">(</span>layer, PMBtab0<span class="k2">[</span> code <span class="k2">]</span>.len<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>        macroblock_type <span class="k3">=</span> PMBtab0<span class="k2">[</span> code <span class="k2">]</span>.val<span class="k2">;</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td>        dc_dct_pred<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> dc_dct_pred<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> dc_dct_pred<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>&#160;</td></tr><tr><td class="number">43</td><td>        <span class="k1">switch</span><span class="k2">(</span>macroblock_type <span class="k3">&amp;</span> <span class="k2">(</span>MACROBLOCK_MOTION_FORWARD<span class="k3">|</span>MACROBLOCK_PATTERN<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">44</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">45</td><td>            <span class="k1">case</span> MACROBLOCK_MOTION_FORWARD<span class="k3">|</span>MACROBLOCK_PATTERN:</td></tr><tr><td class="number">46</td><td>                apeg_motion_vector<span class="k2">(</span>layer,PMV,forward_code,full_forward_vector<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>                apeg_form_f_pred<span class="k2">(</span>layer, bx, by, PMV<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>&#160;</td></tr><tr><td class="number">49</td><td>                <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>&#160;</td></tr><tr><td class="number">51</td><td>            <span class="k1">case</span> MACROBLOCK_PATTERN:</td></tr><tr><td class="number">52</td><td>                PMV<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> PMV<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>                apeg_empty_pred<span class="k2">(</span>layer-&gt;forward_frame, layer-&gt;current_frame, bx, by, layer-&gt;coded_width<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>&#160;</td></tr><tr><td class="number">55</td><td>                <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>&#160;</td></tr><tr><td class="number">57</td><td>            default:</td></tr><tr><td class="number">58</td><td>                apeg_motion_vector<span class="k2">(</span>layer,PMV,forward_code,full_forward_vector<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>                apeg_form_f_pred<span class="k2">(</span>layer, bx, by, PMV<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>&#160;</td></tr><tr><td class="number">61</td><td>                <span class="k1">goto</span> next<span class="k2">;</span></td></tr><tr><td class="number">62</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">63</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">64</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">65</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">66</td><td>        apeg_flush_bits8<span class="k2">(</span>layer, PMBtab1<span class="k2">[</span> code <span class="k2">]</span>.len<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>        macroblock_type <span class="k3">=</span> PMBtab1<span class="k2">[</span> code <span class="k2">]</span>.val<span class="k2">;</span></td></tr><tr><td class="number">68</td><td>&#160;</td></tr><tr><td class="number">69</td><td>        <span class="k1">switch</span><span class="k2">(</span>macroblock_type <span class="k3">&amp;</span> <span class="k2">(</span>MACROBLOCK_QUANT<span class="k3">|</span>MACROBLOCK_INTRA<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">70</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">71</td><td>            <span class="k1">case</span> MACROBLOCK_QUANT<span class="k3">|</span>MACROBLOCK_INTRA:</td></tr><tr><td class="number">72</td><td>                layer-&gt;quantizer_scale <span class="k3">=</span> apeg_get_bits8<span class="k2">(</span>layer, <span class="n">5</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">73</td><td>                <span class="c">// fall-through...</span></td></tr><tr><td class="number">74</td><td>            <span class="k1">case</span> MACROBLOCK_INTRA:</td></tr><tr><td class="number">75</td><td>                PMV<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> PMV<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">76</td><td>&#160;</td></tr><tr><td class="number">77</td><td>                apeg_decode_intra_blocks<span class="k2">(</span>layer, dc_dct_pred<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">78</td><td>&#160;</td></tr><tr><td class="number">79</td><td>                apeg_fast_idct<span class="k2">(</span>apeg_block<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td>                apeg_fast_idct<span class="k2">(</span>apeg_block<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">81</td><td>                apeg_fast_idct<span class="k2">(</span>apeg_block<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">82</td><td>                apeg_fast_idct<span class="k2">(</span>apeg_block<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>                apeg_fast_idct<span class="k2">(</span>apeg_block<span class="k2">[</span><span class="n">4</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">84</td><td>                apeg_fast_idct<span class="k2">(</span>apeg_block<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">85</td><td>&#160;</td></tr><tr><td class="number">86</td><td>                Move_Blocks<span class="k2">(</span>layer, bx, by<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">87</td><td>&#160;</td></tr><tr><td class="number">88</td><td>                <span class="k1">goto</span> next<span class="k2">;</span></td></tr><tr><td class="number">89</td><td>&#160;</td></tr><tr><td class="number">90</td><td>            <span class="k1">case</span> <span class="n">0</span><span class="k2">:</span> <span class="c">// Table 1 must have Intra and/or Quant flags set</span></td></tr><tr><td class="number">91</td><td>                <span class="k1">goto</span> slice_start<span class="k2">;</span></td></tr><tr><td class="number">92</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">93</td><td>&#160;</td></tr><tr><td class="number">94</td><td>        layer-&gt;quantizer_scale <span class="k3">=</span> apeg_get_bits8<span class="k2">(</span>layer, <span class="n">5</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">95</td><td>        dc_dct_pred<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> dc_dct_pred<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> dc_dct_pred<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">96</td><td>&#160;</td></tr><tr><td class="number">97</td><td>        <span class="k1">if</span><span class="k2">(</span>macroblock_type <span class="k3">&amp;</span> MACROBLOCK_MOTION_FORWARD<span class="k2">)</span></td></tr><tr><td class="number">98</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">99</td><td>            apeg_motion_vector<span class="k2">(</span>layer,PMV,forward_code,full_forward_vector<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>            apeg_form_f_pred<span class="k2">(</span>layer, bx, by, PMV<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">102</td><td>        <span class="k1">else</span></td></tr><tr><td class="number">103</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">104</td><td>            PMV<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> PMV<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">105</td><td>            apeg_empty_pred<span class="k2">(</span>layer-&gt;forward_frame, layer-&gt;current_frame, bx, by, layer-&gt;coded_width<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">106</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">107</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">108</td><td>&#160;</td></tr><tr><td class="number">109</td><td>    coded_block_pattern <span class="k3">=</span> get_block_pattern<span class="k2">(</span>layer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">110</td><td>&#160;</td></tr><tr><td class="number">111</td><td>    do_block<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">112</td><td>    do_block<span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">113</td><td>    do_block<span class="k2">(</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">114</td><td>    do_block<span class="k2">(</span><span class="n">3</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">115</td><td>    do_block<span class="k2">(</span><span class="n">4</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">116</td><td>    do_block<span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">117</td><td>&#160;</td></tr><tr><td class="number">118</td><td>next:</td></tr><tr><td class="number">119</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k3">+</span><span class="k3">+</span>MBA <span class="k3">&gt;</span><span class="k3">=</span> MBAmax<span class="k2">)</span></td></tr><tr><td class="number">120</td><td>        <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">121</td><td>&#160;</td></tr><tr><td class="number">122</td><td>    <span class="k1">if</span><span class="k2">(</span>show_bits<span class="k2">(</span>layer, <span class="n">24</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span></td></tr><tr><td class="number">123</td><td>        <span class="k1">goto</span> slice_start<span class="k2">;</span></td></tr><tr><td class="number">124</td><td>&#160;</td></tr><tr><td class="number">125</td><td>    MBAinc <span class="k3">=</span> get_mba_inc<span class="k2">(</span>layer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">126</td><td>    <span class="k1">if</span><span class="k2">(</span>MBAinc <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">127</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">128</td><td>        <span class="k1">int</span> i <span class="k3">=</span> MBAinc<span class="k2">;</span></td></tr><tr><td class="number">129</td><td>&#160;</td></tr><tr><td class="number">130</td><td>        dc_dct_pred<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> dc_dct_pred<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> dc_dct_pred<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">131</td><td>        PMV<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> PMV<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">132</td><td>&#160;</td></tr><tr><td class="number">133</td><td>        <span class="k1">do</span> <span class="k2">{</span></td></tr><tr><td class="number">134</td><td>            <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>bx <span class="k3">+</span><span class="k3">=</span> <span class="n">16</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> layer-&gt;coded_width<span class="k2">)</span></td></tr><tr><td class="number">135</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">136</td><td>                bx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">137</td><td>                by <span class="k3">+</span><span class="k3">=</span> <span class="n">16</span><span class="k2">;</span></td></tr><tr><td class="number">138</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">139</td><td>            apeg_empty_pred<span class="k2">(</span>layer-&gt;forward_frame, layer-&gt;current_frame, bx, by, layer-&gt;coded_width<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">140</td><td>        <span class="k2">}</span> <span class="k1">while</span><span class="k2">(</span><span class="k3">-</span><span class="k3">-</span>i<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">141</td><td>&#160;</td></tr><tr><td class="number">142</td><td>        MBA <span class="k3">+</span><span class="k3">=</span> MBAinc<span class="k2">;</span></td></tr><tr><td class="number">143</td><td>        <span class="k1">if</span><span class="k2">(</span>MBA <span class="k3">&gt;</span><span class="k3">=</span> MBAmax<span class="k2">)</span></td></tr><tr><td class="number">144</td><td>            <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">145</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">146</td><td>&#160;</td></tr><tr><td class="number">147</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>bx <span class="k3">+</span><span class="k3">=</span> <span class="n">16</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> layer-&gt;coded_width<span class="k2">)</span></td></tr><tr><td class="number">148</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">149</td><td>        bx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">150</td><td>        by <span class="k3">+</span><span class="k3">=</span> <span class="n">16</span><span class="k2">;</span></td></tr><tr><td class="number">151</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">152</td><td>&#160;</td></tr><tr><td class="number">153</td><td>    <span class="k1">goto</span> block_start<span class="k2">;</span></td></tr><tr><td class="number">154</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
It&#39;s pretty clear to see the code flow, IMO. &#39;goto block_start&#39;, and it goes to decode the beginning of a block. &#39;goto slice_start&#39;, and it goes to start decode the beginning of a series of blocks. &#39;goto next&#39;, and it goes to find the next block of the slice.</p><p>Compare that with a double nested loop (adding two more indentations to a good portion of the code), extra if checks, ambiguous &#39;continue&#39; and &#39;break&#39; commands, and needing to trace close brackets to see where something loops back to..</p><p>PS: Whee, having <tt>PMBtab0</tt>[<tt>code</tt>] in my code breaks the syntax parser. <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Wed, 27 Dec 2006 13:44:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
How bad is a goto statement?
</p></div></div><p>
<span class="source-code"><span class="k1">goto</span> jail<span class="k2">;</span></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Wed, 27 Dec 2006 14:15:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>We have managed to produce way over one million lines of C++ code with the only goto statements being in the various implementations of the quicksort algorithm. So I would advocate to not use goto, except when it makes algorithms easier to read, which is most often not the case. So, IF the algorithm is easier to read and understand using goto, then use it (but with great care!)...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (tobing)</author>
		<pubDate>Wed, 27 Dec 2006 14:20:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>When I was still learning how to program I would constantly use goto. Especially when I was first learning BASIC because the gosub command didn&#39;t make sense to me.</p><p>Learning C/C++ eventually taught me why goto was stupid for most situations.</p><p>But, I do still use it, though only in one very specific situation: To restart a procedure. My goto statements always return an executing procedure right back to where it started, or as close as is necessary for the purpose at hand, thus eliminating the need to have multiple nested do loops or recursion.</p><p>Goto is generally avoidable, but in the uncommon chance that it makes your code MORE readable than a do loop or if statement, then by all means, use it.</p><p>--- Kris Asick (Gemini)<br />--- <a href="http://www.pixelships.com">http://www.pixelships.com</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Asick)</author>
		<pubDate>Wed, 27 Dec 2006 15:57:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
goto jail;
</p></div></div><p>When I was coding in QBasic I used to have label for a part of code that printed some generic error message and exited the program. It was always called <i>hell</i> <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HoHo)</author>
		<pubDate>Wed, 27 Dec 2006 18:11:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think Sun has a good reason to not even include the goto-statement in Java.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (raccoon)</author>
		<pubDate>Wed, 27 Dec 2006 18:21:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It is seldom needed, and I don&#39;t use them particularly often, but goto statements can occasionally improve both efficiency and clarity. Once in a rare while they are the best solution; when this is the case, it is nothing short of stupid to religiously avoid them. Whatever the best tool for the job is, use it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Joel Pettersson)</author>
		<pubDate>Wed, 27 Dec 2006 19:33:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Consider this code:</p><div class="source-code snippet"><div class="inner"><pre>handle_objectdeletion:
<span class="k1">for</span><span class="k2">(</span>multiset<span class="k3">&lt;</span>CObject<span class="k3">*</span>, SSortObjects&gt;::iterator it <span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>it <span class="k3">!</span><span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>it<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="c">// loop through STL-multiset (could be any other container as well)</span>
      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>it<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>get_x<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span><span class="k3">*</span>it<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>get_w<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span> CCamera::o<span class="k2">(</span><span class="k2">)</span>.get_x<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="c">// check, if some statement about the object is true and delete it</span>
      <span class="k2">{</span>
        CObjectList::o<span class="k2">(</span><span class="k2">)</span>.<a href="http://www.delorie.com/djgpp/doc/libc/libc_659.html" target="_blank">remove</a><span class="k2">(</span>it<span class="k2">)</span><span class="k2">;</span> <span class="c">// delete one object from the container</span>
        <span class="k1">goto</span> handle_objectdeletion<span class="k2">;</span> <span class="c">// we must break from the loop as the iterators might be invalid now...</span>
      <span class="k2">}</span>
</pre></div></div><p>

Got any advice to make it better?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (imaxcs)</author>
		<pubDate>Wed, 27 Dec 2006 20:15:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>use break instead of goto and put it inside two loops, outer one loops until it has reached the end of the container.</p><p>Something like this (grossly simplified to make things clearer):</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">bool</span> needsDelete<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td>vector<span class="k3">&lt;</span>Data&gt; data<span class="k2">;</span></td></tr><tr><td class="number">3</td><td>vector<span class="k3">&lt;</span>Data&gt;::iterator iter<span class="k2">;</span></td></tr><tr><td class="number">4</td><td><span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>  <span class="k1">for</span> <span class="k2">(</span>iter<span class="k3">=</span>data.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter<span class="k3">!</span><span class="k3">=</span>data.end<span class="k2">(</span><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></td></tr><tr><td class="number">6</td><td>     <span class="k1">if</span> <span class="k2">(</span>iter.needs_to_be_deleted<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">7</td><td>        needsDelete<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>        <span class="c">// found something needing removal, break from for loop.</span></td></tr><tr><td class="number">9</td><td>        <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>     <span class="k2">}</span></td></tr><tr><td class="number">11</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">12</td><td>  <span class="k1">if</span> <span class="k2">(</span>needsDelete<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">13</td><td>    iter.remove<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    needsDelete<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>  <span class="k2">}</span> <span class="k1">else</span> <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>    <span class="c">// looped through every variable, nothing needs deletion, breaks from while(1)</span></td></tr><tr><td class="number">17</td><td>     <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">19</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>Code not tested but in theory it should work. There are about a million other ways of doing the same thing.</p><p>[edit]<br />Of course if the container is big then some kind of system should be used that would prevent the inner for loop to start over every time something gets deleted.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HoHo)</author>
		<pubDate>Wed, 27 Dec 2006 20:45:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you want to remove all the items that match the test:
</p><div class="source-code snippet"><div class="inner"><pre>
multiset<span class="k3">&lt;</span>CObject<span class="k3">*</span>, SSortObjects&gt;::iterator it<span class="k2">;</span>
it <span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="k1">while</span><span class="k2">(</span>it <span class="k3">!</span><span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="c">// loop through STL-multiset (could be any other container as well)</span>
<span class="k2">{</span>
      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>it<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>get_x<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span><span class="k3">*</span>it<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>get_w<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span> CCamera::o<span class="k2">(</span><span class="k2">)</span>.get_x<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="c">// check, if some statement about the object is true and delete it</span>
      <span class="k2">{</span>
        CObjectList::o<span class="k2">(</span><span class="k2">)</span>.<a href="http://www.delorie.com/djgpp/doc/libc/libc_659.html" target="_blank">remove</a><span class="k2">(</span>it<span class="k2">)</span><span class="k2">;</span> <span class="c">// delete one object from the container</span>
        it <span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// restart the whole loop</span>
      <span class="k2">}</span>
      it<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
In this case, it&#39;s possible because &quot;it = CObjectList::o().begin()&quot; is a clean &quot;restart&quot;, and if you delete the last element it matches the end-of-loop condition.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Wed, 27 Dec 2006 20:59:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ugh, learn the STL <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" /></p><div class="source-code snippet"><div class="inner"><pre><span class="k1">for</span><span class="k2">(</span>multiset<span class="k3">&lt;</span>CObject<span class="k3">*</span>, SSortObjects&gt;::iterator it <span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>it <span class="k3">!</span><span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="k2">)</span> <span class="c">// loop through STL-multiset (could be any other container as well)</span>
      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>it<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>get_x<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span><span class="k3">*</span>it<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>get_w<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span> CCamera::o<span class="k2">(</span><span class="k2">)</span>.get_x<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="c">// check, if some statement about the object is true and delete it</span>
      <span class="k2">{</span>
        it <span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.erase<span class="k2">(</span>it<span class="k2">)</span><span class="k2">;</span> <span class="c">// delete one object from the container</span>
      <span class="k2">}</span>
      <span class="k1">else</span>
        it<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Wed, 27 Dec 2006 21:03:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The docs I found say erase() returns void <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></p><p>My method of restarting is inefficient. Better to memorize a reference to the element to remove, then increase the iterator, then remove the to_be_removed element.</p><p>edit: anyway, multiset is probably a bad example, as it&#39;s one of the STL containers which does not invalidate iterators on remove.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Wed, 27 Dec 2006 21:23:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The docs I found say erase() returns void <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div></div><p>

Your docs are probably outdated.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jakub Wasilewski)</author>
		<pubDate>Wed, 27 Dec 2006 21:32:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Darn.<br /><a href="http://www.sgi.com/tech/stl/multiset.html">http://www.sgi.com/tech/stl/multiset.html</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Wed, 27 Dec 2006 21:33:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Didn&#39;t read through carefully, didn&#39;t notice that we&#39;re talking about multisets here. Sorry Audric, you&#39;re right about that.</p><p>To clarify, multisets are AssociativeContainers, and those have a void erase() (they don&#39;t need the return value anyway). The iterator erase() is part of Sequence (which is a list, vector, deque etc.). My comment about outdated docs stemmed from the fact that in the past, even Sequences had a void erase() in some compilers.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jakub Wasilewski)</author>
		<pubDate>Wed, 27 Dec 2006 21:40:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
With this in mind, is it wrong to use the occasional goto in code, other than for aesthetic reasons?
</p></div></div><p>
Once you start down the dark path, forever will it dominate your destiny, consume you it will.<br />-- Yoda</p><p>Personnally, I use it&#39;s much wronger to write <b>things</b> like:
</p><div class="source-code snippet"><div class="inner"><pre>   <span class="c">// (inside main, for example)</span>
   <span class="k1">if</span> <span class="k2">(</span>some big problem in initialization<span class="k2">)</span>
   <span class="k2">{</span>
      <span class="c">// exception handling</span>
      <a href="http://www.allegro.cc/manual/allegro_exit" target="_blank"><span class="a">allegro_exit</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
      <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k2">}</span>
   <span class="k1">else</span>
   <span class="k2">{</span>
      <span class="c">// a few hundred lines here....</span>
   <span class="k2">}</span>
   <span class="c">// ...continued here... for some reason. argh!</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Wed, 27 Dec 2006 22:13:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
To clarify, multisets are AssociativeContainers, and those have a void erase() (they don&#39;t need the return value anyway). The iterator erase() is part of Sequence (which is a list, vector, deque etc.). My comment about outdated docs stemmed from the fact that in the past, even Sequences had a void erase() in some compilers.
</p></div></div><p>
IIRC, erase() returns void on associative containers UNLESS you&#39;re using microsofts implementation and/or documentation : )
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (orz)</author>
		<pubDate>Wed, 27 Dec 2006 22:45:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Audric&#39;s statement gave me a question:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> some_function_other_than_main<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
  ...
  <span class="k1">if</span> <span class="k2">(</span>error<span class="k2">)</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// &lt;-- This line</span>
<span class="k2">}</span>
</pre></div></div><p>

Does the &quot;exit(1)&quot; do about the same thing as the following code (barring the fact that &quot;goto&quot; was not supposed to leave the current function, or that &quot;exit()&quot; passes a value to be returned):
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> some_function_other_than_main<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
  ...
  <span class="k1">if</span> <span class="k2">(</span>error<span class="k2">)</span>
    <span class="k1">goto</span> End_of_Main_Function<span class="k2">;</span> <span class="c">// &lt;-- This line</span>
<span class="k2">}</span>

<span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
  ...
<span class="k2">:</span>End_of_Main_Function
  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

So if you don&#39;t have a chance to clean up a bunch of your dynamically-allocated arrays before your program does a nose-dive, they will NEVER reach the destructors for your classes and/or cleanup() code?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Wed, 27 Dec 2006 23:09:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
So if you don&#39;t have a chance to clean up a bunch of your dynamically-allocated arrays before your program does a nose-dive, they will NEVER reach the destructors for your classes and/or cleanup() code?
</p></div></div><p>All destructors on objects will be called with exit. They will not with abort, though.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Wed, 27 Dec 2006 23:14:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">CGamesPlay said:</div><div class="quote"><p>
All destructors on objects will be called with exit. They will not with abort, though.
</p></div></div><p>

But only if the dynamic array was created inside a class (which has a proper destructor)?
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">int</span> <span class="k3">*</span>theArray<span class="k2">;</span>
  theArray <span class="k3">=</span> <span class="k1">new</span> <span class="k1">int</span><span class="k2">[</span><span class="n">400</span><span class="k2">]</span><span class="k2">;</span>

  <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>

So here, you would have a memory leak, or so I would imagine.</p><p>I would think a much better design would be to have <b>exit()</b> call a &quot;cleanup&quot; function of the programmer&#39;s choice:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">int</span> clean_all_my_stuff<span class="k2">(</span><span class="k1">int</span> wasErrorOnExit<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>double_buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>  <span class="k1">delete</span> <span class="k2">[</span><span class="k2">]</span> globalArray<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>  <span class="k1">return</span> wasErrorOnExit<span class="k2">;</span></td></tr><tr><td class="number">7</td><td><span class="k2">}</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">10</td><td><span class="k2">{</span></td></tr><tr><td class="number">11</td><td>  ...</td></tr><tr><td class="number">12</td><td>  <span class="k1">if</span> <span class="k2">(</span>error<span class="k2">)</span></td></tr><tr><td class="number">13</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>clean_all_my_stuff<span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>  ...</td></tr><tr><td class="number">16</td><td>  <span class="k1">return</span> <span class="k2">(</span>clean_all_my_stuff<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// &lt;-- Passes "0" to signify all went well</span></td></tr><tr><td class="number">17</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Wed, 27 Dec 2006 23:21:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
So if you don&#39;t have a chance to clean up a bunch of your dynamically-allocated arrays before your program does a nose-dive, they will NEVER reach the destructors for your classes and/or cleanup() code?
</p></div></div><p>I never use exit. Errors that force program shutdown usually appear while setting up the program. I just create a function for initialization that returns some value. If it is an error it returns an error value (duh!). When I see that an error occured I simply call the function that is responsible for cleaning up and return from main afterwards.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HoHo)</author>
		<pubDate>Wed, 27 Dec 2006 23:26:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>very interesting subject </p><p>example:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">while</span><span class="k2">(</span>....<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>INSTRUCTION<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>here:</td></tr><tr><td class="number">8</td><td><span class="k1">if</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">9</td><td><span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">10</td><td><span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">11</td><td><span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td><span class="k1">else</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>goto: here<span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

How should I delete goto ? In above example - somebody must do something, he won&#39;t go further if he won&#39;t do something, and if I delete &quot;goto&quot; then instructions be become executed and I don&#39;t want it - have you solution ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kosmitek)</author>
		<pubDate>Thu, 28 Dec 2006 03:30:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">while</span><span class="k2">(</span>....<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>INSTRUCTION<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>  <span class="k1">do</span> <span class="k2">{</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">bool</span> repeat <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">8</td><td>    <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">9</td><td>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">10</td><td>    <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">11</td><td>    <span class="k1">else</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">12</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">13</td><td>      repeat <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">15</td><td>  <span class="k2">}</span> <span class="k1">while</span><span class="k2">(</span> repeat <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
for example.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Thu, 28 Dec 2006 03:39:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">while</span><span class="k2">(</span>....<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>  INSTRUCTION<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>  <span class="k1">do</span></td></tr><tr><td class="number">5</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">7</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>      <span class="c">// blah</span></td></tr><tr><td class="number">9</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">10</td><td>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">11</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>      <span class="c">// blah</span></td></tr><tr><td class="number">13</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">14</td><td>    <span class="k1">else</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">15</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>      <span class="k1">continue</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">18</td><td>  <span class="k2">}</span> <span class="k1">while</span> <span class="k2">(</span>FALSE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Thu, 28 Dec 2006 03:40:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>kosmitek: both Matthew and Jonatan are correct: you would use some sort of loop (while, for, etc.) until you specify that you should break out of it (or, you can specify that you will only run it once UNLESS some condition is met).</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">bool</span> breakInsideLoop <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td><span class="k1">while</span><span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>  EXPRESSION<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>breakInsideLoop<span class="k2">)</span></td></tr><tr><td class="number">7</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>    ...</td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>    <span class="k1">if</span> <span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">11</td><td>      breakInsideLoop <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>  ... <span class="c">// Now, outside of the "inside" loop</span></td></tr><tr><td class="number">15</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Thu, 28 Dec 2006 04:58:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Actually i&#39;ve just been reading/writting some assembly and for some reason this version seems a lot nicer. I guess it depends on the audience and the style of programming and what mood your in.</p><div class="source-code snippet"><div class="inner"><pre>here:
<span class="k1">if</span><span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span><span class="k2">}</span>
<span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span><span class="k2">}</span>

<span class="k1">else</span><span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
goto: here<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

but matts&#39; version is quite nice as well. The adding an extra variable is kind of a nasty hack.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Goalie Ca)</author>
		<pubDate>Thu, 28 Dec 2006 04:59:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
This is making my head hurt! <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Thu, 28 Dec 2006 05:01:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I guess we can all just start learning low-level programming and use the goto: statement a lot more ... <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />  &quot;Let&#39;s see... push aex onto, uh... fex... then pop foo off of bar...  Whoops; that should have been fee from bak.  Where&#39;s my debugger again..?&quot;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Thu, 28 Dec 2006 05:02:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Actually i&#39;ve just been reading/writting some assembly and for some reason this version seems a lot nicer.
</p></div></div><p>
But it really is a loop—it&#39;s not a one time jump. I prefer the do/while construct because of that. Ideally there would be a slimmer syntax like:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">do</span> <span class="k2">{</span>
  <span class="c">// ...</span>
  <span class="k1">if</span> <span class="k2">(</span>foo<span class="k2">)</span> <span class="k1">continue</span><span class="k2">;</span>
  <span class="c">// ...</span>
<span class="k2">}</span>
</pre></div></div><p>
Either way, the use of goto (or a similar loop construct) usually indicates that you should consider rethinking your approach altogether. I think the biggest problem with relying on goto for anything is that you might end up relying on it elsewhere out of laziness.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Thu, 28 Dec 2006 05:10:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Winduhs search just found 41 gotos in Allegro source tree on this computer...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Thu, 28 Dec 2006 06:38:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Most of Allegro&#39;s goto usage is for error handling. Given C&#39;s lack of exceptions, there&#39;s not always a good alternative.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Thu, 28 Dec 2006 07:13:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think the reasonable response is to say that <b>GOTO</b> is but one tool of many in a programmer&#39;s kit. A good programmer knows when and how often to implement the tools at his/her disposal; that is, it&#39;s there if you feel the situation warrants it. </p><p>I&#39;ve used a handful of <b>GOTO</b> statements in the past, and I&#39;m sure at some point in the future it will crop up once more. I&#39;ve larger things to worry about <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Sirocco)</author>
		<pubDate>Thu, 28 Dec 2006 09:02:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think that the anti-goto rhetoric is largely a leftover from the bygone era when many programers learned to program in asm or basic where gotos and jmps were natural.  People who started with C or higher level languages usually use higher level flow control primitives because, for most code, they&#39;re easier to write, maintain, and think in.  </p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Most of Allegro&#39;s goto usage is for error handling. Given C&#39;s lack of exceptions, there&#39;s not always a good alternative.
</p></div></div><p>
That&#39;s what longjmp() is for.  <br />(/me is mostly joking)</p><p>edit: first paragraph was edited for clarity
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (orz)</author>
		<pubDate>Thu, 28 Dec 2006 09:14:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I try change this code as you say (it is also in ATTACHMENT) - but when I changed it wrong run - for example if I press &quot;M&quot; then pawn doesn&#39;t run BUT when I next press &quot;-&gt;&quot; then it goes 2 times !</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="p">#include&lt;iostream&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include&lt;ctime&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">5</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span> </td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td><span class="k1">class</span> player</td></tr><tr><td class="number">12</td><td><span class="k2">{</span></td></tr><tr><td class="number">13</td><td>      private:</td></tr><tr><td class="number">14</td><td>      <span class="k1">int</span> money<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>      <span class="k1">int</span> health<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>      <span class="k1">int</span> weapon<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>      <span class="k1">int</span> power<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>      </td></tr><tr><td class="number">19</td><td>      </td></tr><tr><td class="number">20</td><td>      public:</td></tr><tr><td class="number">21</td><td>             player<span class="k2">(</span><span class="k1">int</span> a, <span class="k1">int</span> b, <span class="k1">int</span> c, <span class="k1">int</span> d<span class="k2">)</span></td></tr><tr><td class="number">22</td><td>             <span class="k2">{</span></td></tr><tr><td class="number">23</td><td>                              money<span class="k3">=</span>a<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>                              health<span class="k3">=</span>b<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>                              weapon<span class="k3">=</span>c<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>                              power<span class="k3">=</span>d<span class="k2">;</span></td></tr><tr><td class="number">27</td><td>              <span class="k2">}</span></td></tr><tr><td class="number">28</td><td>             </td></tr><tr><td class="number">29</td><td>       <span class="k1">int</span> change_money<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span></td></tr><tr><td class="number">30</td><td>       <span class="k2">{</span></td></tr><tr><td class="number">31</td><td>           money<span class="k3">=</span>money<span class="k3">+</span>x<span class="k2">;</span></td></tr><tr><td class="number">32</td><td>           <span class="k1">return</span> money<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>       <span class="k2">}</span></td></tr><tr><td class="number">34</td><td>       </td></tr><tr><td class="number">35</td><td>       <span class="k1">int</span> change_health<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span></td></tr><tr><td class="number">36</td><td>       <span class="k2">{</span></td></tr><tr><td class="number">37</td><td>           health<span class="k3">=</span>health<span class="k3">+</span>x<span class="k2">;</span></td></tr><tr><td class="number">38</td><td>           <span class="k1">return</span> health<span class="k2">;</span></td></tr><tr><td class="number">39</td><td>       <span class="k2">}</span></td></tr><tr><td class="number">40</td><td>       </td></tr><tr><td class="number">41</td><td>          </td></tr><tr><td class="number">42</td><td>       <span class="k1">int</span> change_weapon<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span></td></tr><tr><td class="number">43</td><td>       <span class="k2">{</span></td></tr><tr><td class="number">44</td><td>           weapon<span class="k3">=</span>weapon<span class="k3">+</span>x<span class="k2">;</span></td></tr><tr><td class="number">45</td><td>           <span class="k1">return</span> weapon<span class="k2">;</span></td></tr><tr><td class="number">46</td><td>       <span class="k2">}</span></td></tr><tr><td class="number">47</td><td>       </td></tr><tr><td class="number">48</td><td>          </td></tr><tr><td class="number">49</td><td>       <span class="k1">int</span> change_power<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span></td></tr><tr><td class="number">50</td><td>       <span class="k2">{</span></td></tr><tr><td class="number">51</td><td>           power<span class="k3">=</span>power<span class="k3">+</span>x<span class="k2">;</span></td></tr><tr><td class="number">52</td><td>           <span class="k1">return</span> power<span class="k2">;</span></td></tr><tr><td class="number">53</td><td>       <span class="k2">}</span></td></tr><tr><td class="number">54</td><td>       </td></tr><tr><td class="number">55</td><td>~player<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span>     </td></tr><tr><td class="number">56</td><td>                </td></tr><tr><td class="number">57</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>&#160;</td></tr><tr><td class="number">59</td><td>&#160;</td></tr><tr><td class="number">60</td><td>&#160;</td></tr><tr><td class="number">61</td><td>&#160;</td></tr><tr><td class="number">62</td><td>&#160;</td></tr><tr><td class="number">63</td><td><span class="k1">void</span> start_game<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>board, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pawn, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">)</span></td></tr><tr><td class="number">64</td><td><span class="k2">{</span></td></tr><tr><td class="number">65</td><td>     </td></tr><tr><td class="number">66</td><td><span class="k1">int</span> tab1<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k3">=</span><span class="k2">{</span>                                             </td></tr><tr><td class="number">67</td><td>                  <span class="k2">{</span><span class="n">100</span>,<span class="n">220</span>,<span class="n">370</span>,<span class="n">500</span>,<span class="n">700</span>,<span class="n">700</span>,<span class="n">500</span>,<span class="n">350</span>,<span class="n">220</span>,<span class="n">100</span><span class="k2">}</span>,    </td></tr><tr><td class="number">68</td><td>                  <span class="k2">{</span><span class="n">100</span>,<span class="n">100</span>,<span class="n">100</span>,<span class="n">100</span>,<span class="n">100</span>,<span class="n">340</span>,<span class="n">340</span>,<span class="n">340</span>,<span class="n">340</span>,<span class="n">340</span><span class="k2">}</span>,</td></tr><tr><td class="number">69</td><td>                  <span class="k2">}</span><span class="k2">;</span> </td></tr><tr><td class="number">70</td><td>&#160;</td></tr><tr><td class="number">71</td><td><span class="k1">int</span> tab2<span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k3">=</span><span class="k2">{</span><span class="n">0</span>,<span class="n">1</span>,<span class="n">2</span>,<span class="n">3</span>,<span class="n">4</span>,<span class="n">5</span>,<span class="n">6</span>,<span class="n">7</span>,<span class="n">8</span>,<span class="n">9</span><span class="k2">}</span><span class="k2">;</span> </td></tr><tr><td class="number">72</td><td>&#160;</td></tr><tr><td class="number">73</td><td><span class="k1">int</span> <span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span><span class="k3">&amp;</span>tab2<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">74</td><td><span class="k1">int</span> <span class="k3">*</span>zero<span class="k3">=</span><span class="k3">&amp;</span>tab2<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td><span class="k1">int</span> <span class="k3">*</span>nine<span class="k3">=</span><span class="k3">&amp;</span>tab2<span class="k2">[</span><span class="n">9</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">76</td><td><span class="k1">int</span> module<span class="k2">;</span>   </td></tr><tr><td class="number">77</td><td><span class="k1">int</span> eyes<span class="k2">;</span></td></tr><tr><td class="number">78</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td><span class="k1">int</span> i<span class="k3">=</span><span class="n">21</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td><span class="k1">int</span> y<span class="k3">=</span><span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">81</td><td>&#160;</td></tr><tr><td class="number">82</td><td>player game<span class="k2">(</span><span class="n">99</span>, <span class="n">99</span>, <span class="n">99</span>, <span class="n">99</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>&#160;</td></tr><tr><td class="number">84</td><td><span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k3">&amp;</span><span class="k3">&amp;</span>i<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span> </td></tr><tr><td class="number">85</td><td><span class="k2">{</span></td></tr><tr><td class="number">86</td><td>i--<span class="k2">;</span></td></tr><tr><td class="number">87</td><td>eyes <span class="k3">=</span> <span class="n">1</span><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">3</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td><a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>buffer,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">89</td><td><a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>board,buffer,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,board-&gt;w,board-&gt;h<span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">90</td><td><a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>pawn,buffer,<span class="n">0</span>,<span class="n">0</span>,tab1<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">[</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span>,tab1<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">[</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span>,pawn-&gt;w,pawn-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">91</td><td><a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">580</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"You have: %d money, %d health, %d weapon and %d power."</span>, game.change_money<span class="k2">(</span>y<span class="k2">)</span>, game.change_money<span class="k2">(</span>y<span class="k2">)</span>, game.change_weapon<span class="k2">(</span>y<span class="k2">)</span>, game.change_power<span class="k2">(</span>y<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">92</td><td><a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">600</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"You throw: %d, it left yo %d movements"</span>, eyes, i<span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">93</td><td><a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">620</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"-&gt; - left, &lt;- - right"</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">94</td><td><a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">640</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"ESC - the end of the game"</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">95</td><td><a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer,<a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">96</td><td>                      </td></tr><tr><td class="number">97</td><td>&#160;</td></tr><tr><td class="number">98</td><td>&#160;</td></tr><tr><td class="number">99</td><td>&#160;</td></tr><tr><td class="number">100</td><td>direction:</td></tr><tr><td class="number">101</td><td><a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>         </td></tr><tr><td class="number">102</td><td><span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">103</td><td><span class="k2">{</span></td></tr><tr><td class="number">104</td><td><span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>index&gt;<span class="k3">=</span><span class="n">0</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">&lt;</span><span class="k3">=</span><span class="n">4</span><span class="k2">)</span></td></tr><tr><td class="number">105</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">106</td><td>               <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>index-eyes<span class="k2">)</span><span class="k3">&gt;</span><span class="k3">=</span><span class="k3">*</span>zero<span class="k2">)</span></td></tr><tr><td class="number">107</td><td>               <span class="k2">{</span></td></tr><tr><td class="number">108</td><td>               <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span>index-eyes<span class="k2">;</span></td></tr><tr><td class="number">109</td><td>               <span class="k2">}</span></td></tr><tr><td class="number">110</td><td>               <span class="k1">else</span></td></tr><tr><td class="number">111</td><td>               <span class="k2">{</span>               </td></tr><tr><td class="number">112</td><td>             </td></tr><tr><td class="number">113</td><td>               <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span>nine-<span class="k2">(</span>eyes-<span class="k3">*</span>index-1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">114</td><td>               <span class="k2">}</span></td></tr><tr><td class="number">115</td><td>              </td></tr><tr><td class="number">116</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">117</td><td><span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>index&gt;<span class="k3">=</span><span class="n">5</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">&lt;</span><span class="k3">=</span><span class="n">9</span><span class="k2">)</span></td></tr><tr><td class="number">118</td><td>&#160;</td></tr><tr><td class="number">119</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">120</td><td>               <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">+</span>eyes<span class="k2">)</span><span class="k3">&lt;</span><span class="k3">=</span><span class="k3">*</span>nine<span class="k2">)</span></td></tr><tr><td class="number">121</td><td>               <span class="k2">{</span></td></tr><tr><td class="number">122</td><td>               <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">+</span>eyes<span class="k2">;</span></td></tr><tr><td class="number">123</td><td>               <span class="k2">}</span></td></tr><tr><td class="number">124</td><td>               <span class="k1">else</span></td></tr><tr><td class="number">125</td><td>               <span class="k2">{</span>               </td></tr><tr><td class="number">126</td><td>               module<span class="k3">=</span>eyes-<span class="k2">(</span><span class="k3">*</span>nine-<span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">127</td><td>               <span class="k1">if</span> <span class="k2">(</span>module<span class="k3">&lt;</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">128</td><td>               <span class="k2">{</span></td></tr><tr><td class="number">129</td><td>                           module<span class="k3">=</span><span class="k3">-</span>module<span class="k2">;</span></td></tr><tr><td class="number">130</td><td>               <span class="k2">}</span></td></tr><tr><td class="number">131</td><td>               <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span>zero<span class="k3">+</span>module-1<span class="k2">;</span></td></tr><tr><td class="number">132</td><td>               <span class="k2">}</span></td></tr><tr><td class="number">133</td><td>              </td></tr><tr><td class="number">134</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">135</td><td><span class="k2">}</span></td></tr><tr><td class="number">136</td><td>&#160;</td></tr><tr><td class="number">137</td><td>&#160;</td></tr><tr><td class="number">138</td><td>&#160;</td></tr><tr><td class="number">139</td><td>   </td></tr><tr><td class="number">140</td><td><span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">141</td><td><span class="k2">{</span></td></tr><tr><td class="number">142</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>index&gt;<span class="k3">=</span><span class="n">0</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">&lt;</span><span class="k3">=</span><span class="n">4</span><span class="k2">)</span></td></tr><tr><td class="number">143</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">144</td><td>               <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">+</span>eyes<span class="k2">;</span></td></tr><tr><td class="number">145</td><td>                             </td></tr><tr><td class="number">146</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">147</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">148</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">149</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span>index-eyes<span class="k2">;</span></td></tr><tr><td class="number">150</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">151</td><td>             </td></tr><tr><td class="number">152</td><td>               </td></tr><tr><td class="number">153</td><td><span class="k2">}</span></td></tr><tr><td class="number">154</td><td> </td></tr><tr><td class="number">155</td><td> </td></tr><tr><td class="number">156</td><td>  </td></tr><tr><td class="number">157</td><td><span class="k1">else</span> </td></tr><tr><td class="number">158</td><td><span class="k2">{</span></td></tr><tr><td class="number">159</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">160</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">161</td><td>     <span class="k1">goto</span> direction<span class="k2">;</span> </td></tr><tr><td class="number">162</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">163</td><td>    </td></tr><tr><td class="number">164</td><td><span class="k2">}</span></td></tr><tr><td class="number">165</td><td>&#160;</td></tr><tr><td class="number">166</td><td>&#160;</td></tr><tr><td class="number">167</td><td>&#160;</td></tr><tr><td class="number">168</td><td><span class="k2">}</span></td></tr><tr><td class="number">169</td><td>&#160;</td></tr><tr><td class="number">170</td><td><span class="k1">delete</span> game<span class="k2">;</span>     </td></tr><tr><td class="number">171</td><td>     </td></tr><tr><td class="number">172</td><td>     </td></tr><tr><td class="number">173</td><td><span class="k2">}</span></td></tr><tr><td class="number">174</td><td>&#160;</td></tr><tr><td class="number">175</td><td>&#160;</td></tr><tr><td class="number">176</td><td>&#160;</td></tr><tr><td class="number">177</td><td>&#160;</td></tr><tr><td class="number">178</td><td>&#160;</td></tr><tr><td class="number">179</td><td>&#160;</td></tr><tr><td class="number">180</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">181</td><td><span class="k2">{</span></td></tr><tr><td class="number">182</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>board <span class="k3">=</span> NULL<span class="k2">;</span>  </td></tr><tr><td class="number">183</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pawn <span class="k3">=</span> NULL<span class="k2">;</span> </td></tr><tr><td class="number">184</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer <span class="k3">=</span> NULL<span class="k2">;</span> </td></tr><tr><td class="number">185</td><td><a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">186</td><td><a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">187</td><td><a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">188</td><td><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT,<span class="n">1024</span>,<span class="n">768</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">189</td><td>buffer<span class="k3">=</span><a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">190</td><td>&#160;</td></tr><tr><td class="number">191</td><td>&#160;</td></tr><tr><td class="number">192</td><td>board <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"board.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">193</td><td>pawn <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"pawn.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">194</td><td>&#160;</td></tr><tr><td class="number">195</td><td>start_game<span class="k2">(</span>board, pawn, buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">196</td><td>&#160;</td></tr><tr><td class="number">197</td><td>&#160;</td></tr><tr><td class="number">198</td><td><a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>board<span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">199</td><td><a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>pawn<span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">200</td><td><a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">201</td><td><a href="http://www.allegro.cc/manual/allegro_exit" target="_blank"><span class="a">allegro_exit</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">202</td><td><span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">203</td><td><span class="k2">}</span></td></tr><tr><td class="number">204</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>









after change with following code my program wrong run:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="k1">while</span><span class="k2">(</span>....<span class="k2">)</span></td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>INSTRUCTION<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>  <span class="k1">do</span> <span class="k2">{</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">bool</span> repeat <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">9</td><td>    <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">10</td><td>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">11</td><td>    <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">12</td><td>    <span class="k1">else</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">13</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">14</td><td>      repeat <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">16</td><td>  <span class="k2">}</span> <span class="k1">while</span><span class="k2">(</span> repeat <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>



</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">while</span><span class="k2">(</span>....<span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>  INSTRUCTION<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>  <span class="k1">do</span></td></tr><tr><td class="number">5</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">7</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>      <span class="c">// blah</span></td></tr><tr><td class="number">9</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">10</td><td>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">11</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>      <span class="c">// blah</span></td></tr><tr><td class="number">13</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">14</td><td>    <span class="k1">else</span><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">15</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>      <span class="k1">continue</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">18</td><td>  <span class="k2">}</span> <span class="k1">while</span> <span class="k2">(</span>FALSE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

also wrong run</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">bool</span> breakInsideLoop <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td><span class="k1">while</span><span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>  EXPRESSION<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>breakInsideLoop<span class="k2">)</span></td></tr><tr><td class="number">7</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>    ...</td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>    <span class="k1">if</span> <span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">11</td><td>      breakInsideLoop <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>  ... <span class="c">// Now, outside of the "inside" loop</span></td></tr><tr><td class="number">15</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

is also wrong run
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kosmitek)</author>
		<pubDate>Thu, 28 Dec 2006 14:48:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you&#39;re using the exact code that you&#39;ve just put in those last three examples, then no, that won&#39;t work. That&#39;s just skeleton code to show you examples of how a loop can be done.</p><p>You want something like this:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">int</span> done <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span></td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">7</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>        <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>index&gt;<span class="k3">=</span><span class="n">0</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">&lt;</span><span class="k3">=</span><span class="n">4</span><span class="k2">)</span></td></tr><tr><td class="number">9</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>               <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>index-eyes<span class="k2">)</span><span class="k3">&gt;</span><span class="k3">=</span><span class="k3">*</span>zero<span class="k2">)</span></td></tr><tr><td class="number">11</td><td>               <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span>index-eyes<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>               <span class="k2">}</span></td></tr><tr><td class="number">14</td><td>               <span class="k1">else</span></td></tr><tr><td class="number">15</td><td>               <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span>nine-<span class="k2">(</span>eyes-<span class="k3">*</span>index-1<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>               <span class="k2">}</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">21</td><td>        </td></tr><tr><td class="number">22</td><td>        <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>index&gt;<span class="k3">=</span><span class="n">5</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">&lt;</span><span class="k3">=</span><span class="n">9</span><span class="k2">)</span></td></tr><tr><td class="number">23</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>               <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">+</span>eyes<span class="k2">)</span><span class="k3">&lt;</span><span class="k3">=</span><span class="k3">*</span>nine<span class="k2">)</span></td></tr><tr><td class="number">25</td><td>               <span class="k2">{</span></td></tr><tr><td class="number">26</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">+</span>eyes<span class="k2">;</span></td></tr><tr><td class="number">27</td><td>               <span class="k2">}</span></td></tr><tr><td class="number">28</td><td>               <span class="k1">else</span></td></tr><tr><td class="number">29</td><td>               <span class="k2">{</span></td></tr><tr><td class="number">30</td><td>                    module<span class="k3">=</span>eyes-<span class="k2">(</span><span class="k3">*</span>nine-<span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>                    <span class="k1">if</span> <span class="k2">(</span>module<span class="k3">&lt;</span><span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">32</td><td>                    <span class="k2">{</span></td></tr><tr><td class="number">33</td><td>                        module<span class="k3">=</span><span class="k3">-</span>module<span class="k2">;</span></td></tr><tr><td class="number">34</td><td>                    <span class="k2">}</span></td></tr><tr><td class="number">35</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span>zero<span class="k3">+</span>module-1<span class="k2">;</span></td></tr><tr><td class="number">36</td><td>               <span class="k2">}</span></td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">39</td><td>        </td></tr><tr><td class="number">40</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">41</td><td>&#160;</td></tr><tr><td class="number">42</td><td>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">43</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">44</td><td>        <span class="k1">if</span><span class="k2">(</span><span class="k3">*</span>index&gt;<span class="k3">=</span><span class="n">0</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">&lt;</span><span class="k3">=</span><span class="n">4</span><span class="k2">)</span></td></tr><tr><td class="number">45</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">46</td><td>                   <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">+</span>eyes<span class="k2">;</span></td></tr><tr><td class="number">47</td><td>&#160;</td></tr><tr><td class="number">48</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">49</td><td>        <span class="k1">else</span></td></tr><tr><td class="number">50</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">51</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">=</span>index-eyes<span class="k2">;</span></td></tr><tr><td class="number">52</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">53</td><td>&#160;</td></tr><tr><td class="number">54</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">55</td><td>&#160;</td></tr><tr><td class="number">56</td><td>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> done <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>&#160;</td></tr><tr><td class="number">58</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Thu, 28 Dec 2006 17:17:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>LennyLen your code also is wrong <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> Pawn don&#39;t want go and it is reason why I use &quot;goto&quot; here, every other method is wrong.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kosmitek)</author>
		<pubDate>Thu, 28 Dec 2006 18:28:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I didn&#39;t notice you were counting down <tt>i</tt> to give the player 20 moves.</p><p>Here&#39;s a version that works exactly like the executable you included. I&#39;ve restructured the program completely though, and changed parts that could be made simpler.</p><p>You were also using the <tt>key[]</tt> array incorrectly, which is why you were getting multiple rolls each time you pressed a key.</p><p>main.cpp:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;iostream&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;ctime&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#include "player.h"</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td><span class="c">// Global variables</span></td></tr><tr><td class="number">11</td><td><span class="c">// lots of them as I was too lazy to restructure the program properly</span></td></tr><tr><td class="number">12</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>board <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">13</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pawn <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">14</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k1">int</span> module, eyes, y <span class="k3">=</span> <span class="n">1</span>, <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">0</span>, moves <span class="k3">=</span> <span class="n">20</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>player game<span class="k2">(</span><span class="n">99</span>, <span class="n">99</span>, <span class="n">99</span>, <span class="n">99</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="c">// Function Declarations</span></td></tr><tr><td class="number">20</td><td><span class="k1">void</span> initiate<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td><span class="k1">void</span> shutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td><span class="k1">void</span> run_game<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td><span class="k1">void</span> display_screen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td><span class="c">// int main()</span></td></tr><tr><td class="number">27</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">28</td><td><span class="k2">{</span></td></tr><tr><td class="number">29</td><td>    initiate<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    run_game<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    shutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td><span class="k2">}</span></td></tr><tr><td class="number">34</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td><span class="c">// void initialize() - gets Allegro set up</span></td></tr><tr><td class="number">38</td><td><span class="k1">void</span> initiate<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">39</td><td><span class="k2">{</span></td></tr><tr><td class="number">40</td><td>    <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>    <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>&#160;</td></tr><tr><td class="number">43</td><td>    <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED,<span class="n">1024</span>,<span class="n">768</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">45</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">46</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error with gfx mode!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>    buffer<span class="k3">=</span><a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td>    board <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"board.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>board<span class="k2">)</span></td></tr><tr><td class="number">54</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">55</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error loading board.bmp!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">58</td><td>&#160;</td></tr><tr><td class="number">59</td><td>    pawn <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"pawn.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>pawn<span class="k2">)</span></td></tr><tr><td class="number">61</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">62</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error loading pawn.bmp!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">65</td><td><span class="k2">}</span></td></tr><tr><td class="number">66</td><td>&#160;</td></tr><tr><td class="number">67</td><td>&#160;</td></tr><tr><td class="number">68</td><td><span class="c">// void shutdown() - frees memory and exits Allegro</span></td></tr><tr><td class="number">69</td><td><span class="k1">void</span> shutdown<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">70</td><td><span class="k2">{</span></td></tr><tr><td class="number">71</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>board<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>pawn<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">73</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">74</td><td>    <a href="http://www.allegro.cc/manual/allegro_exit" target="_blank"><span class="a">allegro_exit</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td><span class="k2">}</span></td></tr><tr><td class="number">76</td><td>&#160;</td></tr><tr><td class="number">77</td><td>&#160;</td></tr><tr><td class="number">78</td><td><span class="c">// void run_game() - does main game loop</span></td></tr><tr><td class="number">79</td><td><span class="k1">void</span> run_game<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">80</td><td><span class="k2">{</span></td></tr><tr><td class="number">81</td><td>&#160;</td></tr><tr><td class="number">82</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>    <span class="k1">int</span> press<span class="k2">;</span></td></tr><tr><td class="number">84</td><td>&#160;</td></tr><tr><td class="number">85</td><td>    <span class="k1">while</span> <span class="k2">(</span>moves <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">86</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">87</td><td>        eyes <span class="k3">=</span> <span class="n">1</span> <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">3</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td>        display_screen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>&#160;</td></tr><tr><td class="number">90</td><td>        press <span class="k3">=</span> <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">91</td><td>&#160;</td></tr><tr><td class="number">92</td><td>        <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>press <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> KEY_LEFT<span class="k2">)</span></td></tr><tr><td class="number">93</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">94</td><td>            <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">95</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">96</td><td>                <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">-</span> eyes<span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">97</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">-</span> eyes<span class="k2">;</span></td></tr><tr><td class="number">98</td><td>                <span class="k1">else</span></td></tr><tr><td class="number">99</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">9</span> <span class="k3">-</span> <span class="k2">(</span>eyes <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">101</td><td>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">5</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">9</span><span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">102</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">103</td><td>                <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">+</span> eyes<span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">9</span><span class="k2">)</span></td></tr><tr><td class="number">104</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">+</span> eyes<span class="k2">;</span></td></tr><tr><td class="number">105</td><td>                <span class="k1">else</span></td></tr><tr><td class="number">106</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">107</td><td>                    module <span class="k3">=</span> eyes <span class="k3">-</span> <span class="k2">(</span><span class="n">9</span> <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">108</td><td>                    <span class="k1">if</span> <span class="k2">(</span>module <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">109</td><td>                        module <span class="k3">=</span><span class="k3">-</span> module<span class="k2">;</span></td></tr><tr><td class="number">110</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">0</span> <span class="k3">+</span> module <span class="k3">-</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">111</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">112</td><td>&#160;</td></tr><tr><td class="number">113</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">114</td><td>            moves--<span class="k2">;</span></td></tr><tr><td class="number">115</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">116</td><td>&#160;</td></tr><tr><td class="number">117</td><td>        <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>press <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> KEY_RIGHT<span class="k2">)</span></td></tr><tr><td class="number">118</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">119</td><td>            <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">120</td><td>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">+</span> eyes<span class="k2">;</span></td></tr><tr><td class="number">121</td><td>            <span class="k1">else</span></td></tr><tr><td class="number">122</td><td>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">-</span> eyes<span class="k2">;</span></td></tr><tr><td class="number">123</td><td>            moves--<span class="k2">;</span></td></tr><tr><td class="number">124</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">125</td><td>&#160;</td></tr><tr><td class="number">126</td><td>        <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>press <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> KEY_ESC<span class="k2">)</span> <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">127</td><td>&#160;</td></tr><tr><td class="number">128</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">129</td><td>&#160;</td></tr><tr><td class="number">130</td><td><span class="k2">}</span></td></tr><tr><td class="number">131</td><td>&#160;</td></tr><tr><td class="number">132</td><td>&#160;</td></tr><tr><td class="number">133</td><td><span class="c">// void display_screen() - updates and displays the buffer to the screen</span></td></tr><tr><td class="number">134</td><td><span class="k1">void</span> display_screen<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">135</td><td><span class="k2">{</span></td></tr><tr><td class="number">136</td><td>    <span class="k1">int</span> tab1<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k3">=</span><span class="k2">{</span></td></tr><tr><td class="number">137</td><td>        <span class="k2">{</span><span class="n">100</span>, <span class="n">220</span>, <span class="n">370</span>, <span class="n">500</span>, <span class="n">700</span>, <span class="n">700</span>, <span class="n">500</span>, <span class="n">350</span>, <span class="n">220</span>, <span class="n">100</span><span class="k2">}</span>,</td></tr><tr><td class="number">138</td><td>        <span class="k2">{</span><span class="n">100</span>, <span class="n">100</span>, <span class="n">100</span>, <span class="n">100</span>, <span class="n">100</span>, <span class="n">340</span>, <span class="n">340</span>, <span class="n">340</span>, <span class="n">340</span>, <span class="n">340</span><span class="k2">}</span>,</td></tr><tr><td class="number">139</td><td>    <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">140</td><td>&#160;</td></tr><tr><td class="number">141</td><td>    <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">142</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>board, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, board-&gt;w, board-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">143</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>pawn, buffer, <span class="n">0</span>, <span class="n">0</span>, tab1<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span>, tab1<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">]</span>, pawn-&gt;w, pawn-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">144</td><td>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">580</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"You have: %d money, %d health, %d weapon and %d power."</span>, game.change_money<span class="k2">(</span>y<span class="k2">)</span>, game.change_money<span class="k2">(</span>y<span class="k2">)</span>, game.change_weapon<span class="k2">(</span>y<span class="k2">)</span>, game.change_power<span class="k2">(</span>y<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">145</td><td>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">600</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"You throw: %d, it left you %d movements"</span>, eyes, moves<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">146</td><td>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">620</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"-&gt; - left, &lt;- - right"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">147</td><td>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">640</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"ESC - the end of the game"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">148</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">149</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

player.h:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#ifndef PLAYER_H</span></td></tr><tr><td class="number">2</td><td><span class="p">#define PLAYER_H</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">class</span> player</td></tr><tr><td class="number">5</td><td><span class="k2">{</span></td></tr><tr><td class="number">6</td><td>private:</td></tr><tr><td class="number">7</td><td>    <span class="k1">int</span> money<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">int</span> health<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <span class="k1">int</span> weapon<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <span class="k1">int</span> power<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>public:</td></tr><tr><td class="number">13</td><td>    player<span class="k2">(</span><span class="k1">int</span> a, <span class="k1">int</span> b, <span class="k1">int</span> c, <span class="k1">int</span> d<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    <span class="k1">int</span> change_money<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    <span class="k1">int</span> change_health<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    <span class="k1">int</span> change_weapon<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    <span class="k1">int</span> change_power<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td><span class="p">#endif // PLAYER_H</span></td></tr></tbody></table></div></div><p>

player.cpp:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include "player.h"</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td>player::player<span class="k2">(</span><span class="k1">int</span> a, <span class="k1">int</span> b, <span class="k1">int</span> c, <span class="k1">int</span> d<span class="k2">)</span></td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>    money <span class="k3">=</span> a<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    health <span class="k3">=</span> b<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    weapon <span class="k3">=</span> c<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    power <span class="k3">=</span> d<span class="k2">;</span></td></tr><tr><td class="number">9</td><td><span class="k2">}</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td><span class="k1">int</span> player::change_money<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span></td></tr><tr><td class="number">12</td><td><span class="k2">{</span></td></tr><tr><td class="number">13</td><td>    money <span class="k3">=</span> money <span class="k3">+</span> x<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    <span class="k1">return</span> money<span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k2">}</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><span class="k1">int</span> player::change_health<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span></td></tr><tr><td class="number">18</td><td><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>    health <span class="k3">=</span> health <span class="k3">+</span> x<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    <span class="k1">return</span> health<span class="k2">;</span></td></tr><tr><td class="number">21</td><td><span class="k2">}</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td><span class="k1">int</span> player::change_weapon<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span></td></tr><tr><td class="number">24</td><td><span class="k2">{</span></td></tr><tr><td class="number">25</td><td>    weapon <span class="k3">=</span> weapon <span class="k3">+</span> x<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    <span class="k1">return</span> weapon<span class="k2">;</span></td></tr><tr><td class="number">27</td><td><span class="k2">}</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td><span class="k1">int</span> player::change_power<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span></td></tr><tr><td class="number">31</td><td><span class="k2">{</span></td></tr><tr><td class="number">32</td><td>    power <span class="k3">=</span> power <span class="k3">+</span> x<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>    <span class="k1">return</span> power<span class="k2">;</span></td></tr><tr><td class="number">34</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Thu, 28 Dec 2006 20:51:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks LennyLen, but it is also wrong because:<br />please start this game, please press &quot;m&quot; or other letter on keyboard 5 or more times and you see that information: &quot;You throw: X &quot; - and that X(number of eyes) it will be change - and X(number of eyes) should change ONLY when somebody press &quot;-&gt;&quot; or &quot;&lt;-&quot;, when somebody press something else X(number of eyes) shouldn&#39;t change - it is a problem which can be solved only when wy use &quot;goto&quot; - that I think.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kosmitek)</author>
		<pubDate>Thu, 28 Dec 2006 21:12:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This new <tt>run_game()</tt> function &quot;fixes&quot; the problem of it rolling when other keys are pressed. I&#39;ll leave it up to you to figure out how to only display information when M is pressed.</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">void</span> run_game<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>    <span class="k1">int</span> press<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>    display_screen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td>    <span class="k1">while</span> <span class="k2">(</span>moves <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">10</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>        eyes <span class="k3">=</span> <span class="n">1</span> <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">3</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td>        press <span class="k3">=</span> <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>        <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>press <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> KEY_LEFT<span class="k2">)</span></td></tr><tr><td class="number">16</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">17</td><td>            <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">18</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">19</td><td>                <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">-</span> eyes<span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">20</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">-</span> eyes<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>                <span class="k1">else</span></td></tr><tr><td class="number">22</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">9</span> <span class="k3">-</span> <span class="k2">(</span>eyes <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">24</td><td>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">5</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">9</span><span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">25</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">26</td><td>                <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">+</span> eyes<span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">9</span><span class="k2">)</span></td></tr><tr><td class="number">27</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">+</span> eyes<span class="k2">;</span></td></tr><tr><td class="number">28</td><td>                <span class="k1">else</span></td></tr><tr><td class="number">29</td><td>                <span class="k2">{</span></td></tr><tr><td class="number">30</td><td>                    module <span class="k3">=</span> eyes <span class="k3">-</span> <span class="k2">(</span><span class="n">9</span> <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>                    <span class="k1">if</span> <span class="k2">(</span>module <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">32</td><td>                        module <span class="k3">=</span><span class="k3">-</span> module<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>                    <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">0</span> <span class="k3">+</span> module <span class="k3">-</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>                <span class="k2">}</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">37</td><td>            moves--<span class="k2">;</span></td></tr><tr><td class="number">38</td><td>            display_screen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td>        <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>press <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> KEY_RIGHT<span class="k2">)</span></td></tr><tr><td class="number">42</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">43</td><td>            <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">44</td><td>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">+</span> eyes<span class="k2">;</span></td></tr><tr><td class="number">45</td><td>            <span class="k1">else</span></td></tr><tr><td class="number">46</td><td>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">-</span> eyes<span class="k2">;</span></td></tr><tr><td class="number">47</td><td>            moves--<span class="k2">;</span></td></tr><tr><td class="number">48</td><td>            display_screen<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">50</td><td>&#160;</td></tr><tr><td class="number">51</td><td>        <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>press <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> KEY_ESC<span class="k2">)</span> <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">54</td><td>&#160;</td></tr><tr><td class="number">55</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Thu, 28 Dec 2006 21:27:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I would think a much better design would be to have exit() call a &quot;cleanup&quot; function of the programmer&#39;s choice:
</p></div></div><p>

Can&#39;t you use <span class="source-code"><a href="http://www.delorie.com/djgpp/doc/libc/libc_52.html" target="_blank">atexit</a><span class="k2">(</span><span class="k2">)</span></span> for that?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Thu, 28 Dec 2006 21:30:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>WOOOW  !!!!! Run very good - I must seeing through very attentively - thank you LennyLen <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>--------------------------<br />ups - pawn after throw bone doesn&#39;t go after right fields - I tried change it but only when I use &quot;goto&quot; was okay <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kosmitek)</author>
		<pubDate>Thu, 28 Dec 2006 21:45:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#039;s a version I rewrote that extends the player class so that it now stores what tile the player is on, as well as the result of the latest roll. I also added a method to reroll the dice. The program now relies less on global variables, and is a little more object oriented.</p><p>I don&#039;t normally use C++, so there may be more efficient ways of doing things than I what I do.</p><p>By the way, I&#039;ve left the logic of your game untouched, as I&#039;m not 100% certain what you&#039;re trying to do. I&#039;m curious as to why there&#039;s a lot more code for when the player presses left then for when they press right.</p><p>main.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="p">#include &lt;iostream&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;ctime&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro.h&gt;</span>
<span class="number">   4</span><span class="p">#include "player.h"</span>
<span class="number">   5</span>
<span class="number">   6</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="c">// Global variables</span>
<span class="number">   9</span><span class="c">// lots of them as I was too lazy to restructure the program properly</span>
<span class="number">  10</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>board <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  11</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pawn <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  12</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  13</span>
<span class="number">  14</span>
<span class="number">  15</span><span class="c">// Function Declarations</span>
<span class="number">  16</span><span class="k1">void</span> initiate<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span><span class="k1">void</span> shutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span><span class="k1">void</span> run_game<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span><span class="k1">void</span> display_screen<span class="k2">(</span>player <span class="k3">*</span>mike<span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span>
<span class="number">  21</span><span class="c">// int main()</span>
<span class="number">  22</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  23</span><span class="k2">{</span>
<span class="number">  24</span>    initiate<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>    run_game<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>    shutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  28</span><span class="k2">}</span>
<span class="number">  29</span><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span>
<span class="number">  30</span>
<span class="number">  31</span>
<span class="number">  32</span><span class="c">// void initialize() - gets Allegro set up</span>
<span class="number">  33</span><span class="k1">void</span> initiate<span class="k2">(</span><span class="k2">)</span>
<span class="number">  34</span><span class="k2">{</span>
<span class="number">  35</span>    <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>    <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>
<span class="number">  38</span>    <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED,<span class="n">1024</span>,<span class="n">768</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  40</span>    <span class="k2">{</span>
<span class="number">  41</span>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error with gfx mode!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>    <span class="k2">}</span>
<span class="number">  44</span>
<span class="number">  45</span>    buffer<span class="k3">=</span><a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</span>
<span class="number">  47</span>    board <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"board.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>board<span class="k2">)</span>
<span class="number">  49</span>    <span class="k2">{</span>
<span class="number">  50</span>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error loading board.bmp!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  51</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>    <span class="k2">}</span>
<span class="number">  53</span>
<span class="number">  54</span>    pawn <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"pawn.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>pawn<span class="k2">)</span>
<span class="number">  56</span>    <span class="k2">{</span>
<span class="number">  57</span>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error loading pawn.bmp!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span>EXIT_FAILURE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>    <span class="k2">}</span>
<span class="number">  60</span>
<span class="number">  61</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span><span class="k2">}</span>
<span class="number">  63</span>
<span class="number">  64</span>
<span class="number">  65</span><span class="c">// void shutdown() - frees memory and exits Allegro</span>
<span class="number">  66</span><span class="k1">void</span> shutdown<span class="k2">(</span><span class="k2">)</span>
<span class="number">  67</span><span class="k2">{</span>
<span class="number">  68</span>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>board<span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>pawn<span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>    <a href="http://www.allegro.cc/manual/allegro_exit" target="_blank"><span class="a">allegro_exit</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span><span class="k2">}</span>
<span class="number">  73</span>
<span class="number">  74</span>
<span class="number">  75</span><span class="c">// void run_game() - does main game loop</span>
<span class="number">  76</span><span class="k1">void</span> run_game<span class="k2">(</span><span class="k2">)</span>
<span class="number">  77</span><span class="k2">{</span>
<span class="number">  78</span>    player theplayer<span class="k2">(</span><span class="n">99</span>, <span class="n">99</span>, <span class="n">99</span>, <span class="n">99</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span>    <span class="k1">int</span> module, press<span class="k2">;</span>
<span class="number">  81</span>
<span class="number">  82</span>    display_screen<span class="k2">(</span><span class="k3">&amp;</span>theplayer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  83</span>
<span class="number">  84</span>    <span class="k1">while</span> <span class="k2">(</span>theplayer.get_moves<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  85</span>    <span class="k2">{</span>
<span class="number">  86</span>
<span class="number">  87</span>        press <span class="k3">=</span> <a href="http://www.allegro.cc/manual/readkey" target="_blank"><span class="a">readkey</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>
<span class="number">  89</span>        <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>press <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> KEY_LEFT<span class="k2">)</span>
<span class="number">  90</span>        <span class="k2">{</span>
<span class="number">  91</span>            theplayer.roll_dice<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>
<span class="number">  93</span>            <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span> <span class="k2">)</span>
<span class="number">  94</span>            <span class="k2">{</span>
<span class="number">  95</span>                <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> theplayer.get_roll<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  96</span>                    theplayer.move_to_tile<span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> theplayer.get_roll<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>                <span class="k1">else</span>
<span class="number">  98</span>                    theplayer.move_to_tile<span class="k2">(</span><span class="n">9</span> <span class="k3">-</span> <span class="k2">(</span>theplayer.get_roll<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>            <span class="k2">}</span>
<span class="number"> 100</span>            <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">5</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">9</span><span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 101</span>            <span class="k2">{</span>
<span class="number"> 102</span>                <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> theplayer.get_roll<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">9</span><span class="k2">)</span>
<span class="number"> 103</span>                    theplayer.move_to_tile<span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> theplayer.get_roll<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>                <span class="k1">else</span>
<span class="number"> 105</span>                <span class="k2">{</span>
<span class="number"> 106</span>                    module <span class="k3">=</span> theplayer.get_roll<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span><span class="n">9</span> <span class="k3">-</span> theplayer.get_tile<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 107</span>                    <span class="k1">if</span> <span class="k2">(</span>module <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 108</span>                        module <span class="k3">=</span><span class="k3">-</span> module<span class="k2">;</span>
<span class="number"> 109</span>                    theplayer.move_to_tile<span class="k2">(</span><span class="n">0</span> <span class="k3">+</span> module <span class="k3">-</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span>                <span class="k2">}</span>
<span class="number"> 111</span>
<span class="number"> 112</span>            <span class="k2">}</span>
<span class="number"> 113</span>            display_screen<span class="k2">(</span><span class="k3">&amp;</span>theplayer<span class="k2">)</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">if</span> <span class="k2">(</span> <span class="k2">(</span>press <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> KEY_RIGHT<span class="k2">)</span>
<span class="number"> 117</span>        <span class="k2">{</span>
<span class="number"> 118</span>            theplayer.roll_dice<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 119</span>
<span class="number"> 120</span>            <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 121</span>                theplayer.move_to_tile<span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> theplayer.get_roll<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 122</span>            <span class="k1">else</span>
<span class="number"> 123</span>                theplayer.move_to_tile<span class="k2">(</span>theplayer.get_tile<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> theplayer.get_roll<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>            display_screen<span class="k2">(</span><span class="k3">&amp;</span>theplayer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>        <span class="k2">}</span>
<span class="number"> 126</span>
<span class="number"> 127</span>        <span class="k1">if</span> <span class="k2">(</span> <span class="k2">(</span>press <span class="k3">&gt;</span><span class="k3">&gt;</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> KEY_ESC<span class="k2">)</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 128</span>
<span class="number"> 129</span>    <span class="k2">}</span>
<span class="number"> 130</span>
<span class="number"> 131</span><span class="k2">}</span>
<span class="number"> 132</span>
<span class="number"> 133</span>
<span class="number"> 134</span><span class="c">// void display_screen() - updates and displays the buffer to the screen</span>
<span class="number"> 135</span><span class="k1">void</span> display_screen<span class="k2">(</span>player <span class="k3">*</span>mike<span class="k2">)</span>
<span class="number"> 136</span><span class="k2">{</span>
<span class="number"> 137</span>    <span class="k1">int</span> tab1<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k3">=</span><span class="k2">{</span>
<span class="number"> 138</span>        <span class="k2">{</span><span class="n">100</span>, <span class="n">220</span>, <span class="n">370</span>, <span class="n">500</span>, <span class="n">700</span>, <span class="n">700</span>, <span class="n">500</span>, <span class="n">350</span>, <span class="n">220</span>, <span class="n">100</span><span class="k2">}</span>,
<span class="number"> 139</span>        <span class="k2">{</span><span class="n">100</span>, <span class="n">100</span>, <span class="n">100</span>, <span class="n">100</span>, <span class="n">100</span>, <span class="n">340</span>, <span class="n">340</span>, <span class="n">340</span>, <span class="n">340</span>, <span class="n">340</span><span class="k2">}</span>,
<span class="number"> 140</span>    <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 141</span>
<span class="number"> 142</span>    <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>board, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, board-&gt;w, board-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>pawn, buffer, <span class="n">0</span>, <span class="n">0</span>, tab1<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">[</span>mike-&gt;get_tile<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span>, tab1<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">[</span>mike-&gt;get_tile<span class="k2">(</span><span class="k2">)</span><span class="k2">]</span>, pawn-&gt;w, pawn-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 145</span>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">580</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"You have: %d money, %d health, %d weapon and %d power."</span>, mike-&gt;get_money<span class="k2">(</span><span class="k2">)</span>, mike-&gt;get_health<span class="k2">(</span><span class="k2">)</span>, mike-&gt;get_weapon<span class="k2">(</span><span class="k2">)</span>, mike-&gt;get_power<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 146</span>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">600</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"You throw: %d, it left you %d movements"</span>, mike-&gt;get_roll<span class="k2">(</span><span class="k2">)</span>, mike-&gt;get_moves<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 147</span>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">620</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"-&gt; - left, &lt;- - right"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 148</span>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">267</span>, <span class="n">640</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</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="k3">-</span><span class="n">1</span>, <span class="s">"ESC - the end of the game"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 149</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 150</span><span class="k2">}</span>
</div></div><p>

player.h:
</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">#ifndef PLAYER_H</span>
<span class="number">  2</span><span class="p">#define PLAYER_H</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">class</span> player
<span class="number">  5</span><span class="k2">{</span>
<span class="number">  6</span>private:
<span class="number">  7</span>    <span class="k1">int</span> money<span class="k2">;</span>
<span class="number">  8</span>    <span class="k1">int</span> health<span class="k2">;</span>
<span class="number">  9</span>    <span class="k1">int</span> weapon<span class="k2">;</span>
<span class="number"> 10</span>    <span class="k1">int</span> power<span class="k2">;</span>
<span class="number"> 11</span>    <span class="k1">int</span> moves<span class="k2">;</span>
<span class="number"> 12</span>    <span class="k1">int</span> roll<span class="k2">;</span>
<span class="number"> 13</span>    <span class="k1">int</span> tile<span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>public:
<span class="number"> 16</span>    player<span class="k2">(</span><span class="k1">int</span> a, <span class="k1">int</span> b, <span class="k1">int</span> c, <span class="k1">int</span> d<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>    <span class="k1">void</span> roll_dice<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>    <span class="k1">void</span> move_to_tile<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>    <span class="k1">int</span> get_money<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>    <span class="k1">int</span> get_health<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>    <span class="k1">int</span> get_weapon<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>    <span class="k1">int</span> get_power<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>    <span class="k1">int</span> get_moves<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>    <span class="k1">int</span> get_roll<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>    <span class="k1">int</span> get_tile<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>    <span class="k1">int</span> change_money<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>    <span class="k1">int</span> change_health<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>    <span class="k1">int</span> change_weapon<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>    <span class="k1">int</span> change_power<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>
<span class="number"> 31</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 32</span>
<span class="number"> 33</span><span class="p">#endif // PLAYER_H</span>
</div></div><p>

player.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="p">#include &lt;ctime&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  3</span><span class="p">#include "player.h"</span>
<span class="number">  4</span>
<span class="number">  5</span>player::player<span class="k2">(</span><span class="k1">int</span> a, <span class="k1">int</span> b, <span class="k1">int</span> c, <span class="k1">int</span> d<span class="k2">)</span>
<span class="number">  6</span><span class="k2">{</span>
<span class="number">  7</span>    money <span class="k3">=</span> a<span class="k2">;</span>
<span class="number">  8</span>    health <span class="k3">=</span> b<span class="k2">;</span>
<span class="number">  9</span>    weapon <span class="k3">=</span> c<span class="k2">;</span>
<span class="number"> 10</span>    power <span class="k3">=</span> d<span class="k2">;</span>
<span class="number"> 11</span>    moves <span class="k3">=</span> <span class="n">20</span><span class="k2">;</span>
<span class="number"> 12</span>    roll <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 13</span>    tile <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 14</span><span class="k2">}</span>
<span class="number"> 15</span>
<span class="number"> 16</span><span class="k1">void</span> player::roll_dice<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 17</span><span class="k2">{</span>
<span class="number"> 18</span>    roll <span class="k3">=</span> <span class="n">1</span> <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">3</span><span class="k2">;</span>
<span class="number"> 19</span>    moves--<span class="k2">;</span>
<span class="number"> 20</span><span class="k2">}</span>
<span class="number"> 21</span>
<span class="number"> 22</span><span class="k1">void</span> player::move_to_tile<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span>
<span class="number"> 23</span><span class="k2">{</span>
<span class="number"> 24</span>    tile <span class="k3">=</span> x<span class="k2">;</span>
<span class="number"> 25</span><span class="k2">}</span>
<span class="number"> 26</span>
<span class="number"> 27</span><span class="k1">int</span> player::get_money<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 28</span><span class="k2">{</span>
<span class="number"> 29</span>    <span class="k1">return</span> money<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="k1">int</span> player::get_health<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 33</span><span class="k2">{</span>
<span class="number"> 34</span>    <span class="k1">return</span> health<span class="k2">;</span>
<span class="number"> 35</span><span class="k2">}</span>
<span class="number"> 36</span>
<span class="number"> 37</span><span class="k1">int</span> player::get_weapon<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 38</span><span class="k2">{</span>
<span class="number"> 39</span>    <span class="k1">return</span> weapon<span class="k2">;</span>
<span class="number"> 40</span><span class="k2">}</span>
<span class="number"> 41</span>
<span class="number"> 42</span><span class="k1">int</span> player::get_power<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 43</span><span class="k2">{</span>
<span class="number"> 44</span>    <span class="k1">return</span> power<span class="k2">;</span>
<span class="number"> 45</span><span class="k2">}</span>
<span class="number"> 46</span>
<span class="number"> 47</span><span class="k1">int</span> player::get_moves<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 48</span><span class="k2">{</span>
<span class="number"> 49</span>    <span class="k1">return</span> moves<span class="k2">;</span>
<span class="number"> 50</span><span class="k2">}</span>
<span class="number"> 51</span>
<span class="number"> 52</span><span class="k1">int</span> player::get_roll<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 53</span><span class="k2">{</span>
<span class="number"> 54</span>    <span class="k1">return</span> roll<span class="k2">;</span>
<span class="number"> 55</span><span class="k2">}</span>
<span class="number"> 56</span>
<span class="number"> 57</span><span class="k1">int</span> player::get_tile<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 58</span><span class="k2">{</span>
<span class="number"> 59</span>    <span class="k1">return</span> tile<span class="k2">;</span>
<span class="number"> 60</span><span class="k2">}</span>
<span class="number"> 61</span>
<span class="number"> 62</span><span class="k1">int</span> player::change_money<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span>
<span class="number"> 63</span><span class="k2">{</span>
<span class="number"> 64</span>    money <span class="k3">=</span> money <span class="k3">+</span> x<span class="k2">;</span>
<span class="number"> 65</span>    <span class="k1">return</span> money<span class="k2">;</span>
<span class="number"> 66</span><span class="k2">}</span>
<span class="number"> 67</span>
<span class="number"> 68</span><span class="k1">int</span> player::change_health<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span>
<span class="number"> 69</span><span class="k2">{</span>
<span class="number"> 70</span>    health <span class="k3">=</span> health <span class="k3">+</span> x<span class="k2">;</span>
<span class="number"> 71</span>    <span class="k1">return</span> health<span class="k2">;</span>
<span class="number"> 72</span><span class="k2">}</span>
<span class="number"> 73</span>
<span class="number"> 74</span><span class="k1">int</span> player::change_weapon<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span>
<span class="number"> 75</span><span class="k2">{</span>
<span class="number"> 76</span>    weapon <span class="k3">=</span> weapon <span class="k3">+</span> x<span class="k2">;</span>
<span class="number"> 77</span>    <span class="k1">return</span> weapon<span class="k2">;</span>
<span class="number"> 78</span><span class="k2">}</span>
<span class="number"> 79</span>
<span class="number"> 80</span>
<span class="number"> 81</span><span class="k1">int</span> player::change_power<span class="k2">(</span><span class="k1">int</span> x<span class="k2">)</span>
<span class="number"> 82</span><span class="k2">{</span>
<span class="number"> 83</span>    power <span class="k3">=</span> power <span class="k3">+</span> x<span class="k2">;</span>
<span class="number"> 84</span>    <span class="k1">return</span> power<span class="k2">;</span>
<span class="number"> 85</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Thu, 28 Dec 2006 22:57:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>LennyLen somewhere is little mistake - pawn after throw bone doesn&#39;t go after right fields - I tried change it but only when I use &quot;goto&quot; was okay <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kosmitek)</author>
		<pubDate>Thu, 28 Dec 2006 23:15:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
LennyLen somewhere is little mistake - pawn after throw bone doesn&#39;t go after right fields - I tried change it but only when I use &quot;goto&quot; was okay
</p></div></div><p>

The program I wrote behaves exactly as the one you wrote, so if there&#39;s a problem, it&#39;s in your logic. I&#39;ve attached both your original program (I recompiled it to use the dynamic library so it was smaller) and the version I wrote so you can see for yourself that they behave the same.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Thu, 28 Dec 2006 23:33:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Gee...</p><p><a href="http://www.allegro.cc/forums/thread/589251/637926#target">This</a> sounds almost like the program I provided earlier to you, kosmitek, before you added the &quot;player&quot; class.  Can&#39;t for the LIFE of me figure out why <b>that</b> code couldn&#39;t be used... It was re-written to be very understandable, use the exact same keys, handle the exact same logic...</p><p>Why not just extend what was already written for you and use that?  It&#39;s not as if the code doesn&#39;t compile...</p><p>LennyLen, I don&#39;t know if you saw that earlier post or not (in the other thread, no less), but you may be able to use it.  If not... <b>shrug</b>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Fri, 29 Dec 2006 00:17:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>TeamTerradactyl yes, but I didn&#39;t use your earlier program because he also was wrong <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> <br />In my program when I  throw for example 3, pawn go 3 fields and in yours programs pawn is strange going - somewhere in your programs is little mistake, I must use &quot;goto&quot; in your program and only then pawn going right.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kosmitek)</author>
		<pubDate>Fri, 29 Dec 2006 00:42:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>OK... you guys are posting about how GOTO is ugly and hard to read, and then post this as some sort of counter-example:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">for</span><span class="k2">(</span>multiset<span class="k3">&lt;</span>CObject<span class="k3">*</span>, SSortObjects&gt;::iterator it <span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>it <span class="k3">!</span><span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="k2">)</span> <span class="c">// loop through STL-multiset (could be any other container as well)</span>
      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">*</span>it<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>get_x<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span><span class="k3">*</span>it<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>get_w<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span> CCamera::o<span class="k2">(</span><span class="k2">)</span>.get_x<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="c">// check, if some statement about the object is true and delete it</span>
      <span class="k2">{</span>
        it <span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span>.erase<span class="k2">(</span>it<span class="k2">)</span><span class="k2">;</span> <span class="c">// delete one object from the container</span>
      <span class="k2">}</span>
      <span class="k1">else</span>
        it<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
</pre></div></div><p>

<img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" /> <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /></p><p>I mostly use GOTOs for function-level error handling. Setting a flag, checking it in multiple points to break a loop/nest is slower and less efficient than a goto.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul Pridham)</author>
		<pubDate>Fri, 29 Dec 2006 01:05:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
You guys are posting about how GOTO is ugly and hard to read, and then post this as some sort of counter-example:
</p></div></div><p>
Indeed. That code should be:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">typedef</span> std::multiset<span class="k3">&lt;</span>CObject<span class="k3">*</span>, SSortObjects&gt; myset_t<span class="k2">;</span>

<span class="k1">bool</span> condition<span class="k2">(</span>myset_t::value_type <span class="k3">&amp;</span>v<span class="k2">)</span> <span class="k2">{</span>
    <span class="k1">return</span> <span class="k2">(</span>v.get_x<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> v.get_w<span class="k2">(</span><span class="k2">)</span> <span class="k3">&lt;</span> CCamera::o<span class="k2">(</span><span class="k2">)</span>.get_x<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>

myset_t <span class="k3">&amp;</span>myset <span class="k3">=</span> CObjectList::o<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>

myset.erase<span class="k2">(</span>std::remove_if<span class="k2">(</span>myset.begin<span class="k2">(</span><span class="k2">)</span>, myset.end<span class="k2">(</span><span class="k2">)</span>, condition<span class="k2">)</span>, myset.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

Somewhat cleaner now, although it&#39;s artificially lengthened by the additional typedefs and statement splittings.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Bob)</author>
		<pubDate>Fri, 29 Dec 2006 01:12:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think in my program must be &quot;goto&quot;, without &quot;goto&quot; my program isn&#39;t run good.</p><p>LENNY LEN - YOUR IDEA WITH  3 files: main.cpp; player.h; player.cpp, one table; and globall variables ARE WONDERFUL - WITHOUT THAT I MUSTED (MUST IN THE PAST ?) WRITE EVERYTHING IN ONE BIG FUNCTION AND NOW I HAVE MANY LITTLE FUNCTIONS - THANK YOU - THIS IDEA IS VERYYYYY GOOD - THANK YOU LENNY LEN FOR YOUR IDEA - I USE YOUR IDEA (but I had use &quot;goto&quot;) AND I ADD GLOBAL TABLE - ONLY ONE TABLE !!! - THANKS YOU !!!!!!!!! YOU ARE WONDERFUL - THANK YOU !!!!! <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kosmitek)</author>
		<pubDate>Fri, 29 Dec 2006 01:30:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
MUST IN THE PAST ?
</p></div></div><p>
had to</p><p>Example: Because I forgot to turn off capslock I had to slap myself in the face several times.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simon Parzer)</author>
		<pubDate>Fri, 29 Dec 2006 02:43:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
LennyLen, I don&#39;t know if you saw that earlier post or not (in the other thread, no less), but you may be able to use it. If not... <b>shrug</b>.
</p></div></div><p>

Yeah I saw it. Most of my code was actually from when I rewrote the program last time kosmitek posted about it a few weeks ago.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
TeamTerradactyl yes, but I didn&#39;t use your earlier program because he also was wrong  <br />In my program when I throw for example 3, pawn go 3 fields and in yours programs pawn is strange going
</p></div></div><p>

The real problem was that you didn&#39;t explain very well what you were trying to do, and it&#39;s hard to tell from your code exactly what you <i>are</i> doing.</p><p>Now that I&#39;m pretty certain that I know what you&#39;re trying to do, I&#39;ve changed the logic to reflect this. I&#39;ve <a href="http://www.allegro.cc/files/attachment/590894">attached</a> the working code (the changes were to the <tt>run_game()</tt> function) and an executable. There&#39;s still no need for <tt>goto</tt>.</p><p>edit: </p><p>Don&#39;t rely too much on global variables. They certainly have their uses, but if you have too many of them, it makes the program harder to follow and less modular. There&#39;s usually a more elegant solution.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Fri, 29 Dec 2006 04:48:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think gotos can add much needed clarity to complex operations and I honestly think they are the <span class="cuss"><span><span class="cuss"><span>shit</span></span></span></span>.  goto Failure is about as clear as you can get.  There are a number of other completely valid and wonderfully clear uses of gotos.</p><p>The ability for a language feature to be misused does not render the feature obsolete.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Fri, 29 Dec 2006 05:42:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>now it runs ideal WITHOUT &quot;GOTO&quot; - LENNY LEN YOU ARE GENIUS !!!!!!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kosmitek)</author>
		<pubDate>Fri, 29 Dec 2006 14:36:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your shift key is sticking again. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sat, 30 Dec 2006 00:58:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the pretty code Bob, i didn&#39;t know you could handle it that way!</p><p>What i previously did:
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">//fl...ake is a vector iterator of the same type as snow</span>
<span class="c">//snow is a vector</span>
<span class="k1">for</span><span class="k2">(</span>fl <span class="k3">=</span> snow.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> fl<span class="k3">!</span><span class="k3">=</span>snow.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> fl<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
    <span class="k1">if</span><span class="k2">(</span>fl-&gt;dead<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
        snow.erase<span class="k2">(</span>fl<span class="k2">)</span><span class="k2">;</span>
        fl--<span class="k2">;</span>
        <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>

Is this wrong or bug prone?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (FMC)</author>
		<pubDate>Sun, 31 Dec 2006 23:56:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Is this wrong or bug prone?
</p></div></div><p>Yes, fl is invalid when it is erased: you can&#39;t increment or decrement. In practice, however, it will work for vectors so long as you are not erasing the final element.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Mon, 01 Jan 2007 00:14:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">FMC said:</div><div class="quote"><p>

</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">for</span> <span class="k2">(</span>fl <span class="k3">=</span> snow.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> fl<span class="k3">!</span><span class="k3">=</span>snow.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> fl<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="k2">{</span>
  <span class="k1">if</span> <span class="k2">(</span>fl-&gt;dead<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
  <span class="k2">{</span>
    snow.erase<span class="k2">(</span>fl<span class="k2">)</span><span class="k2">;</span>
    fl--<span class="k2">;</span> <span class="c">// &lt;-- I think this is invalid</span>
  <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div></div><p>

If I&#39;m not mistaken, the <b>vector</b> iterator only has the <b>++</b> operator defined; not the <b>--</b>, so you could not decrement your current position...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Mon, 01 Jan 2007 00:27:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
//fl...ake is a vector iterator of the same type as snow<br />//snow is a vector<br />for(fl = snow.begin(); fl!=snow.end(); fl++){<br />    if(fl-&gt;dead()){<br />        snow.erase(fl);<br />        fl--;<br />        }<br />}</p><p>Is this wrong or bug prone?
</p></div></div><p>
Yes.  This is what you want to do.
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">//fl...ake is a vector iterator of the same type as snow</span>
<span class="c">//snow is a vector</span>
<span class="k1">for</span><span class="k2">(</span>fl <span class="k3">=</span> snow.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> fl<span class="k3">!</span><span class="k3">=</span>snow.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">)</span><span class="k2">{</span>
    <span class="k1">if</span><span class="k2">(</span>fl-&gt;dead<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
        fl <span class="k3">=</span> snow.erase<span class="k2">(</span>fl<span class="k2">)</span><span class="k2">;</span>
    <span class="k2">}</span>
    <span class="k1">else</span> fl<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Mon, 01 Jan 2007 02:58:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How about this?
</p><div class="source-code snippet"><div class="inner"><pre>snow.erase<span class="k2">(</span>std::remove_if<span class="k2">(</span>snow.begin<span class="k2">(</span><span class="k2">)</span>, snow.end<span class="k2">(</span><span class="k2">)</span>, std::mem_fun<span class="k2">(</span><span class="k3">&amp;</span>snow_type::dead<span class="k2">)</span><span class="k2">)</span>,
           snow.end<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

(Untested code)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Bob)</author>
		<pubDate>Mon, 01 Jan 2007 03:54:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Cool <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />, I&#39;m totally gonna use that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Mon, 01 Jan 2007 07:39:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the head-ups!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (FMC)</author>
		<pubDate>Tue, 02 Jan 2007 17:38:48 +0000</pubDate>
	</item>
</rss>
