<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Class Problem</title>
		<link>http://www.allegro.cc/forums/view/590747</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 29 Mar 2007 00:05:51 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am making a game similar to missile defence so that I can become used to Allegro and whatnot. </p><p>I wrote something up that generates a background and saves it to a bitmap, everything was going good until I added a class in a separate .cpp file.</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="c">/********************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Tank Class Header*</span></td></tr><tr><td class="number">3</td><td><span class="c"> ********************/</span></td></tr><tr><td class="number">4</td><td> </td></tr><tr><td class="number">5</td><td><span class="p">#ifndef _TANK_H </span></td></tr><tr><td class="number">6</td><td><span class="p">#define _TANK_H</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="p">#define MAX_BULLETS 10</span></td></tr><tr><td class="number">9</td><td><span class="p">#define MOVE_LEFT 0</span></td></tr><tr><td class="number">10</td><td><span class="p">#define MOVE_RIGHT 1</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="p">#define TANK_W  100</span></td></tr><tr><td class="number">13</td><td><span class="p">#define TANK_H  35</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td><span class="p">#define CANNON_W 25</span></td></tr><tr><td class="number">16</td><td><span class="p">#define CANNON_H 50</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td><span class="k1">class</span> CTank</td></tr><tr><td class="number">19</td><td><span class="k2">{</span></td></tr><tr><td class="number">20</td><td>public:</td></tr><tr><td class="number">21</td><td>   CTank<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>   ~CTank<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>   </td></tr><tr><td class="number">24</td><td>   <span class="k1">int</span> x, y<span class="k2">;</span>  <span class="c">// x and y coordinate of the player</span></td></tr><tr><td class="number">25</td><td>   <span class="k1">int</span> health<span class="k2">;</span> <span class="c">// health of the player</span></td></tr><tr><td class="number">26</td><td>   <span class="k1">int</span> reload<span class="k2">;</span> <span class="c">// reload time of the player</span></td></tr><tr><td class="number">27</td><td>     </td></tr><tr><td class="number">28</td><td>   <span class="k1">int</span> score<span class="k2">;</span></td></tr><tr><td class="number">29</td><td>     </td></tr><tr><td class="number">30</td><td>   <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>tank, <span class="k3">*</span>cannon<span class="k2">;</span> <span class="c">//bitmaps to hold the tank and cannon</span></td></tr><tr><td class="number">31</td><td>   </td></tr><tr><td class="number">32</td><td>   <span class="k1">void</span> MoveTank<span class="k2">(</span><span class="k1">int</span> dir<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>   <span class="k1">void</span> FireBullet<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td><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><span class="p">#endif</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="c">/********************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Tank Source File *</span></td></tr><tr><td class="number">3</td><td><span class="c"> ********************/</span></td></tr><tr><td class="number">4</td><td> </td></tr><tr><td class="number">5</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">6</td><td><span class="p">#include "tank.h"</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>CTank::CTank<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">9</td><td><span class="c">/* Sets up tank object */</span></td></tr><tr><td class="number">10</td><td><span class="k2">{</span></td></tr><tr><td class="number">11</td><td>    x <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a><span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// init player</span></td></tr><tr><td class="number">12</td><td>    y <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k3">/</span><span class="n">4</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    health <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    reload <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    score <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    tank <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>TANK_W, TANK_H<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    cannon <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>CANNON_W, CANNON_H<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>     </td></tr><tr><td class="number">19</td><td>    <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>tank, <span class="n">10</span>, <span class="n">0</span>, <span class="k2">(</span>TANK_W-10<span class="k2">)</span>, TANK_H, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">45</span>, <span class="n">200</span>, <span class="n">60</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span>tank, <span class="n">10</span>, <span class="n">0</span>, <span class="k2">(</span>TANK_W-10<span class="k2">)</span>, TANK_H, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">60</span>, <span class="n">230</span>, <span class="n">70</span><span class="k2">)</span><span class="k2">)</span><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><span class="c">//--------------------------------------------    </span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td>CTank::~CTank<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">25</td><td><span class="c">/* Deletes tank bmps */</span></td></tr><tr><td class="number">26</td><td><span class="k2">{</span></td></tr><tr><td class="number">27</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>tank<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>cannon<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td><span class="k2">}</span></td></tr><tr><td class="number">30</td><td><span class="c">//--------------------------------------------    </span></td></tr><tr><td class="number">31</td><td>&#160;</td></tr><tr><td class="number">32</td><td><span class="k1">void</span> CTank::MoveTank<span class="k2">(</span><span class="k1">int</span> dir<span class="k2">)</span></td></tr><tr><td class="number">33</td><td><span class="c">/* Moves tank */</span></td></tr><tr><td class="number">34</td><td><span class="k2">{</span></td></tr><tr><td class="number">35</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>dir <span class="k3">=</span><span class="k3">=</span> MOVE_LEFT<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>x <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">36</td><td>      x <span class="k3">-</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>dir <span class="k3">=</span><span class="k3">=</span> MOVE_RIGHT<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><span class="k2">(</span>x<span class="k3">+</span>TANK_W<span class="k2">)</span> <span class="k3">&gt;</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">38</td><td>      x <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>      </td></tr><tr><td class="number">40</td><td>    <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td><span class="k2">}</span></td></tr><tr><td class="number">42</td><td><span class="c">//--------------------------------------------    </span></td></tr><tr><td class="number">43</td><td>&#160;</td></tr><tr><td class="number">44</td><td><span class="k1">void</span> CTank::FireBullet<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">45</td><td><span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">46</td><td><span class="c">//--------------------------------------------    </span></td></tr></tbody></table></div></div><p>

That&#39;s the tank class header and .cpp file. The program compiles fine, but this error is given when it runs:</p><p>The instruction at &quot;0x10020efc&quot; referenced memory at &quot;0x00000038&quot;. The memory could not be &quot;read&quot;.</p><p>Click on OK to terminate the program<br />Click on CANCEL to debug the problem.</p><p>Help, please?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (moon_rabbits)</author>
		<pubDate>Wed, 28 Mar 2007 01:03:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How do you use the class? Make sure you don&#39;t create it until you have initiated allegro. Post some more code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Wed, 28 Mar 2007 01:08:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here is the only other code I have written so far, the main.cpp file:</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="c">/******************************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Tank Defense v.0.1      *</span></td></tr><tr><td class="number">3</td><td><span class="c"> * March 25 2007              *</span></td></tr><tr><td class="number">4</td><td><span class="c"> * Kelly Crawford             *</span></td></tr><tr><td class="number">5</td><td><span class="c"> ******************************/</span></td></tr><tr><td class="number">6</td><td> </td></tr><tr><td class="number">7</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">8</td><td><span class="p">#include &lt;time.h&gt;</span></td></tr><tr><td class="number">9</td><td><span class="p">#include "tank.h"</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td><span class="p">#define WINDOW_W 640</span></td></tr><tr><td class="number">12</td><td><span class="p">#define WINDOW_H 480</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="p">#define MAX_CLOUDS 14</span></td></tr><tr><td class="number">15</td><td><span class="p">#define MIN_CLOUDS 7</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> SetUp<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">18</td><td><span class="c">/* Initializes allegro and screen */</span></td></tr><tr><td class="number">19</td><td><span class="k2">{</span></td></tr><tr><td class="number">20</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">21</td><td>     </td></tr><tr><td class="number">22</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">23</td><td>     <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>     </td></tr><tr><td class="number">25</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">16</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>     </td></tr><tr><td class="number">27</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, WINDOW_W, WINDOW_H, <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">28</td><td>         <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>     </td></tr><tr><td class="number">30</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">31</td><td>          </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><span class="c">//--------------------------------------------    </span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td><span class="k1">void</span> cloud_line<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp, <span class="k1">int</span> x, <span class="k1">int</span> y, <span class="k1">int</span> color<span class="k2">)</span></td></tr><tr><td class="number">37</td><td><span class="c">/* Function called by DoLine() */</span></td></tr><tr><td class="number">38</td><td><span class="k2">{</span></td></tr><tr><td class="number">39</td><td>     <a href="http://www.allegro.cc/manual/putpixel" target="_blank"><span class="a">putpixel</span></a><span class="k2">(</span>bmp, x, y, color<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>       </td></tr><tr><td class="number">41</td><td>     <span class="k1">return</span><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="c">//--------------------------------------------    </span></td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td><span class="k1">void</span> MakeCloud<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp<span class="k2">)</span></td></tr><tr><td class="number">46</td><td><span class="c">/* Draws a cloud to bmp */</span></td></tr><tr><td class="number">47</td><td><span class="k2">{</span></td></tr><tr><td class="number">48</td><td>    <span class="k1">int</span> height <span class="k3">=</span> <span class="n">1</span> <span class="k3">+</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">50</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// height of cloud</span></td></tr><tr><td class="number">49</td><td>    <span class="k1">int</span> width <span class="k3">=</span> <span class="n">100</span> <span class="k3">+</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">50</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// general width of cloud</span></td></tr><tr><td class="number">50</td><td>      </td></tr><tr><td class="number">51</td><td>    <span class="k1">int</span> x1 <span class="k3">=</span> <span class="k2">(</span><span class="k3">-</span><span class="n">30</span><span class="k2">)</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="k2">(</span>SCREEN_W-30<span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">52</td><td>    <span class="k1">int</span> x2 <span class="k3">=</span> x1 <span class="k3">+</span> width<span class="k2">;</span></td></tr><tr><td class="number">53</td><td>    <span class="k1">int</span> y <span class="k3">=</span>  <span class="n">10</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="k2">(</span>SCREEN_H-100<span class="k2">)</span><span class="k2">;</span> <span class="c">// cloud coordinates</span></td></tr><tr><td class="number">54</td><td>      </td></tr><tr><td class="number">55</td><td>    <span class="k1">int</span> col <span class="k3">=</span> <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="c">// cloud color information</span></td></tr><tr><td class="number">56</td><td>      </td></tr><tr><td class="number">57</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> height<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="c">// loops until entire cloud is drawn</span></td></tr><tr><td class="number">58</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">59</td><td>        <a href="http://www.allegro.cc/manual/do_line" target="_blank"><span class="a">do_line</span></a><span class="k2">(</span>bmp, x1, y, x2, y, col, <span class="k3">*</span>cloud_line<span class="k2">)</span><span class="k2">;</span> <span class="c">// draw line of cloud</span></td></tr><tr><td class="number">60</td><td>        y <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">61</td><td>        </td></tr><tr><td class="number">62</td><td>        <span class="k1">if</span><span class="k2">(</span>i <span class="k3">&lt;</span> <span class="k2">(</span>height<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">63</td><td>          x1 <span class="k3">-</span><span class="k3">=</span> <span class="n">3</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">5</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>          x2 <span class="k3">+</span><span class="k3">=</span> <span class="n">3</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">5</span><span class="k2">;</span><span class="k2">}</span></td></tr><tr><td class="number">65</td><td>        <span class="k1">else</span><span class="k2">{</span></td></tr><tr><td class="number">66</td><td>          x1 <span class="k3">+</span><span class="k3">=</span> <span class="n">3</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">5</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>          x2 <span class="k3">-</span><span class="k3">=</span> <span class="n">3</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">5</span><span class="k2">;</span><span class="k2">}</span></td></tr><tr><td class="number">68</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">69</td><td>    </td></tr><tr><td class="number">70</td><td>    <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td><span class="k2">}</span></td></tr><tr><td class="number">72</td><td><span class="c">//--------------------------------------------</span></td></tr><tr><td class="number">73</td><td>&#160;</td></tr><tr><td class="number">74</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> GenerateSky<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bmp<span class="k2">)</span></td></tr><tr><td class="number">75</td><td><span class="c">/* Generates a sky on bitmap pointed</span></td></tr><tr><td class="number">76</td><td><span class="c">   to by bmp */</span></td></tr><tr><td class="number">77</td><td><span class="k2">{</span></td></tr><tr><td class="number">78</td><td>      <span class="k1">int</span> r <span class="k3">=</span> <span class="n">140</span>, g <span class="k3">=</span> <span class="n">150</span>, b <span class="k3">=</span> <span class="n">225</span><span class="k2">;</span></td></tr><tr><td class="number">79</td><td>      <span class="k1">int</span> col <span class="k3">=</span> <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span>r, g, b<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td>      </td></tr><tr><td class="number">81</td><td>      </td></tr><tr><td class="number">82</td><td>      <a href="http://www.allegro.cc/manual/floodfill" target="_blank"><span class="a">floodfill</span></a><span class="k2">(</span>bmp, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a><span class="k3">/</span><span class="n">2</span>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k3">/</span><span class="n">2</span>, col<span class="k2">)</span><span class="k2">;</span>  <span class="c">// fill screen w/ blue</span></td></tr><tr><td class="number">83</td><td>      </td></tr><tr><td class="number">84</td><td>      <span class="k1">int</span> clouds <span class="k3">=</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="k2">(</span>MAX_CLOUDS-MIN_CLOUDS<span class="k2">)</span> <span class="k3">+</span> MIN_CLOUDS<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">85</td><td>      </td></tr><tr><td class="number">86</td><td>      <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> c <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> c <span class="k3">&lt;</span> clouds<span class="k2">;</span> c<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">87</td><td>        MakeCloud<span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td>      </td></tr><tr><td class="number">89</td><td>      <span class="k1">return</span> bmp<span class="k2">;</span></td></tr><tr><td class="number">90</td><td><span class="k2">}</span></td></tr><tr><td class="number">91</td><td><span class="c">//--------------------------------------------</span></td></tr><tr><td class="number">92</td><td>&#160;</td></tr><tr><td class="number">93</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">94</td><td><span class="k2">{</span></td></tr><tr><td class="number">95</td><td>    CTank player<span class="k2">;</span></td></tr><tr><td class="number">96</td><td>    </td></tr><tr><td class="number">97</td><td>    <span class="k1">if</span><span class="k2">(</span>SetUp<span class="k2">(</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>  <span class="c">// setup + error checking for allegro</span></td></tr><tr><td class="number">98</td><td>    </td></tr><tr><td class="number">99</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bg_sky <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="c">// create sky bitmap</span></td></tr><tr><td class="number">100</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> <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="c">// create double buffer</span></td></tr><tr><td class="number">101</td><td>    </td></tr><tr><td class="number">102</td><td>    bg_sky <span class="k3">=</span> GenerateSky<span class="k2">(</span>bg_sky<span class="k2">)</span><span class="k2">;</span> <span class="c">// colour sky bitmap</span></td></tr><tr><td class="number">103</td><td>    </td></tr><tr><td class="number">104</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="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">105</td><td>        </td></tr><tr><td class="number">106</td><td>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>bg_sky, buffer, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, bg_sky-&gt;w, bg_sky-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">107</td><td>    </td></tr><tr><td class="number">108</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">109</td><td>    <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">110</td><td>    </td></tr><tr><td class="number">111</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bg_sky<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">112</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">113</td><td>&#160;</td></tr><tr><td class="number">114</td><td>    <span class="k1">return</span><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">115</td><td><span class="k2">}</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="k2">;</span></td></tr></tbody></table></div></div><p>

EDIT: The CTank class is used in the main() function only.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (moon_rabbits)</author>
		<pubDate>Wed, 28 Mar 2007 01:20:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There is no semi-colon after <span class="source-code"><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>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Wed, 28 Mar 2007 01:24:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I removed the semi-colon, the problem persists.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (moon_rabbits)</author>
		<pubDate>Wed, 28 Mar 2007 01:26:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Jonatan nailed it. The class&#39;s constructor (and thus create_bitmap() etc) is called before Allegro is initialized.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Wed, 28 Mar 2007 01:29:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>CTank is declared before Allegro is initialized.  The constructor of CTank uses allegro definitions.</p><p>edit:<br />Darn I was ...<br />http://www.mmmchicago.com/Transparent%20Red%20Beet%20by%20dick.gif
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Wed, 28 Mar 2007 01:30:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ah! It all makes sense now. Everything is working now, thanks everyone~
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (moon_rabbits)</author>
		<pubDate>Wed, 28 Mar 2007 01:32:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>NEVERMIND! (Runs away crying...) {smiley}
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Wed, 28 Mar 2007 01:33:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
/********************<br /> * Tank Class Header*<br /> ********************/<br /> <br />#ifndef _TANK_H <br />#define _TANK_H
</p></div></div><p>
An underscore followed by an uppercase letter is undefined behavior.  Adopt a new naming scheme.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Wed, 28 Mar 2007 02:36:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
An underscore followed by an uppercase letter is undefined behavior.
</p></div></div><p>Actually, symbols and macros starting with an underscore are reserved for compiler/system use.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 28 Mar 2007 09:07:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>But the resulting behavior is undefined <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Wed, 28 Mar 2007 09:09:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Its perfectly defined. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> Expect problems when the symbol you chose happens to be used in the compiler or system headers sometime in the future.</p><p>edit:</p><p>I used to use <u>_FILENAMEHERE_H</u>_</p><p>I now use FileNameHere_H_GUARD</p><p><img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 28 Mar 2007 09:13:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
An underscore followed by an uppercase letter is undefined behavior.
</p></div></div><p>
No, it&#39;s definitely not. An identifier in C can start with any letter (upper- or lowercase), or an underscore, and after that, it can contain letters, underscores, and numeric digits.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Actually, symbols and macros starting with an underscore are reserved for compiler/system use.
</p></div></div><p>
Double underscores. Single underscores should be fine.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
But the resulting behavior is undefined
</p></div></div><p>
Not at all.<br />If you happen to use a compiler-defined identifier for your own #defines, you will either prevent certain code from being read by the compiler, as in this example:
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#ifndef __FILE__</span>
<span class="p">#define __FILE__</span>

<span class="c">// anything here will be ignored, because __FILE__ is always defined</span>

<span class="p">#endif</span>
</pre></div></div><p>
...or it will produce compiler errors due to incompatible definitions for the identifier.</p><p>Neither of these constitute undefined behaviour.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Wed, 28 Mar 2007 18:40:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I used to use <u>_FILENAMEHERE_H</u>_</p><p>I now use FileNameHere_H_GUARD
</p></div></div><p>
Interesting...  I&#39;ve been using the top method since the beginning as that was the way I was taught.  Never seen a problem...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Onewing)</author>
		<pubDate>Wed, 28 Mar 2007 20:19:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I could be wrong, but I assumed it wasn&#39;t a compiler rule, but a good practice. Like root declaring environment variables in all CAPS (or was it the other way around) in a *nix environment. I think it&#39;s only a problem if that identifier is already defined, such as <u>_FILE</u>_.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Wed, 28 Mar 2007 20:29:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Double underscores. Single underscores should be fine.
</p></div></div><p>
Single underscores followed by an uppercase letter are reserved for compiler usage.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Its perfectly defined. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> Expect problems when the symbol you chose happens to be used in the compiler or system headers sometime in the future.
</p></div></div><p>
Technically the C++ spec does not define if you will collide or not, and when that collision occurs the results are compiler specific and therefore undefined.</p><p>I agree with you <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />, I was just saying undefined to make my sentence more english and less codelish.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Thu, 29 Mar 2007 00:05:51 +0000</pubDate>
	</item>
</rss>
