<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Code Review</title>
		<link>http://www.allegro.cc/forums/view/590312</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 28 Feb 2007 19:46:09 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Warning: If you do not want to read code for the sake of review purposes run away! only reason I ask is for some review is because I&#39;m new to the allegro library and not a huge fan of game programming all in one&#39;s style so let me know what you think of mine and what I could possibly improve or a feature of allegro I&#39;m misusing, whatever! Let me know. :-D</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;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#include "buffering.cpp"</span></td></tr><tr><td class="number">5</td><td><span class="p">#include "mouse_function.cpp"</span></td></tr><tr><td class="number">6</td><td><span class="p">#include "main_menu.cpp"</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td><span class="k1">void</span> setup<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>    <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">13</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">14</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">15</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">16</td><td>  <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">/*don't know if you need this*/</span></td></tr><tr><td class="number">17</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">18</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">19</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_TEXT,<span class="n">0</span>,<span class="n">0</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">20</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    <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></td></tr><tr><td class="number">22</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">23</td><td>  <a href="http://www.allegro.cc/manual/show_mouse" target="_blank"><span class="a">show_mouse</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><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>&#160;</td></tr><tr><td class="number">26</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><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>  setup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// sets up the screen</span></td></tr><tr><td class="number">29</td><td>  buffering game_screen<span class="k2">;</span> <span class="c">// creates an object where our screen will be held, handles</span></td></tr><tr><td class="number">30</td><td>  <span class="c">// double buffering for us.</span></td></tr><tr><td class="number">31</td><td>  main_menu my_main_menu<span class="k2">(</span>game_screen<span class="k2">)</span><span class="k2">;</span> <span class="c">// we want to set up the main menu so we pass</span></td></tr><tr><td class="number">32</td><td>  <span class="c">// it a reference to game screen so it knows where to set up stuff. kind of important :-D</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</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></td></tr><tr><td class="number">35</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">36</td><td>    my_main_menu.render_menu<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="c">// puts the main menu onto the buffer    </span></td></tr><tr><td class="number">37</td><td>    game_screen.render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// puts the buffer onto the viewable screen removing the flickering</span></td></tr><tr><td class="number">38</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">39</td><td>  game_screen.destroy_bitmaps<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="c">//destroys all the bitmaps on the screen to free up memory.</span></td></tr><tr><td class="number">40</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">41</td><td>  <span class="k1">return</span> <span class="n">0</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><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>
buffering.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;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">4</td><td>&#160;</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><span class="p">#ifndef BUFFERING</span></td></tr><tr><td class="number">7</td><td><span class="p">#define BUFFERING</span></td></tr><tr><td class="number">8</td><td><span class="k1">class</span> buffering</td></tr><tr><td class="number">9</td><td><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>  private: </td></tr><tr><td class="number">11</td><td>    <span class="c">// we'l need a buffer and a vector to hold reference to location of bitmaps.</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> buffer<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    vector<span class="k3">&lt;</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k3">&gt;</span> bitmaps<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>  public:</td></tr><tr><td class="number">16</td><td>    buffering<span class="k2">(</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="c">// the buffer needs to be the entire screen</span></td></tr><tr><td class="number">19</td><td>      <span class="c">// so we use allegro defined variables to make it so.</span></td></tr><tr><td class="number">20</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">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="c">// this is just a wrapper for load_bitmap so we can add their memory locations</span></td></tr><tr><td class="number">24</td><td>    <span class="c">// into a vector for automatic deletion later on.</span></td></tr><tr><td class="number">25</td><td>    <span class="k1">void</span> add_bitmap<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>picture,<span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span>,<span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span><span class="k2">)</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/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer,picture,x,y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>      <span class="k1">bool</span> <a href="http://www.allegro.cc/manual/exists" target="_blank"><span class="a">exists</span></a><span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">29</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>bitmaps.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><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>        <span class="k1">if</span><span class="k2">(</span>picture<span class="k3">=</span><span class="k3">=</span>bitmaps<span class="k3">&lt;</span>i&gt;<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>          <a href="http://www.allegro.cc/manual/exists" target="_blank"><span class="a">exists</span></a><span class="k3">=</span><span class="k1">true</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>      <span class="k2">}</span></td></tr><tr><td class="number">36</td><td>      <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/exists" target="_blank"><span class="a">exists</span></a><span class="k2">)</span></td></tr><tr><td class="number">37</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">38</td><td>        bitmaps.push_back<span class="k2">(</span>picture<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>    <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="c">// same thign as above</span></td></tr><tr><td class="number">43</td><td>    <span class="k1">void</span> add_stretched_bitmap<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> picture,<span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span>, <span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span>,<span class="k1">int</span> width<span class="k3">=</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <span class="k1">int</span> height<span class="k3">=</span><a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><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>      <a href="http://www.allegro.cc/manual/stretch_sprite" target="_blank"><span class="a">stretch_sprite</span></a><span class="k2">(</span>buffer,picture,x,y,width,height<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>      <span class="k1">bool</span> <a href="http://www.allegro.cc/manual/exists" target="_blank"><span class="a">exists</span></a><span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">47</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>bitmaps.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</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>        <span class="k1">if</span><span class="k2">(</span>picture<span class="k3">=</span><span class="k3">=</span>bitmaps<span class="k3">&lt;</span>i&gt;<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>          <a href="http://www.allegro.cc/manual/exists" target="_blank"><span class="a">exists</span></a><span class="k3">=</span><span class="k1">true</span><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>      <span class="k2">}</span></td></tr><tr><td class="number">54</td><td>      <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/exists" target="_blank"><span class="a">exists</span></a><span class="k2">)</span></td></tr><tr><td class="number">55</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">56</td><td>        bitmaps.push_back<span class="k2">(</span>picture<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>    <span class="k2">}</span></td></tr><tr><td class="number">59</td><td>&#160;</td></tr><tr><td class="number">60</td><td>    <span class="c">// draw the buffer to the screen</span></td></tr><tr><td class="number">61</td><td>    <span class="k1">void</span> render<span class="k2">(</span><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>      <a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>      <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,buffer,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td>      <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">60</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">67</td><td>&#160;</td></tr><tr><td class="number">68</td><td>    <span class="c">//dynamically destroy all the bitmaps. good stuff. :-D</span></td></tr><tr><td class="number">69</td><td>    <span class="c">// beats the hell out of 20 million calls to destroy_bitmap</span></td></tr><tr><td class="number">70</td><td>    <span class="k1">void</span> destroy_bitmaps<span class="k2">(</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="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>bitmaps.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">73</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">74</td><td>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bitmaps<span class="k3">&lt;</span>i&gt;<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>    <span class="k2">}</span></td></tr><tr><td class="number">77</td><td><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><span class="p">#endif</span></td></tr></tbody></table></div></div><p>
mouse_function.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;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#ifndef MOUSE_FUNCTION</span></td></tr><tr><td class="number">5</td><td><span class="p">#define MOUSE_FUNCTION</span></td></tr><tr><td class="number">6</td><td><span class="k1">class</span> mouse_function</td></tr><tr><td class="number">7</td><td><span class="k2">{</span></td></tr><tr><td class="number">8</td><td>public:</td></tr><tr><td class="number">9</td><td>  mouse_function<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>    <span class="c">//something, right now this class is just to see if mouse is hovering over a position</span></td></tr><tr><td class="number">12</td><td>    <span class="c">// later on it will expand to do other things</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">bool</span> mouse_hovering<span class="k2">(</span><span class="k1">int</span> x,<span class="k1">int</span> y, <span class="k1">int</span> end_x,<span class="k1">int</span> end_y<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">if</span><span class="k2">(</span>mouse_x&gt;<span class="k3">=</span>x <span class="k3">&amp;</span><span class="k3">&amp;</span> mouse_y&gt;<span class="k3">=</span>y <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a><span class="k3">&lt;</span><span class="k3">=</span><span class="k2">(</span>x<span class="k3">+</span>end_x<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a><span class="k3">&lt;</span><span class="k3">=</span><span class="k2">(</span>y<span class="k3">+</span>end_y<span class="k2">)</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="k1">return</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">20</td><td>    <span class="k1">else</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="k1">return</span> <span class="k1">false</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="k2">}</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>
main_menu.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;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#include "buffering.cpp"</span></td></tr><tr><td class="number">5</td><td><span class="p">#include "mouse_function.cpp"</span></td></tr><tr><td class="number">6</td><td><span class="p">#ifndef MAIN_MENU</span></td></tr><tr><td class="number">7</td><td><span class="p">#define MAIN_MENU</span></td></tr><tr><td class="number">8</td><td><span class="k1">class</span> main_menu</td></tr><tr><td class="number">9</td><td><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>private:</td></tr><tr><td class="number">11</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>title,<span class="k3">*</span>new_game,<span class="k3">*</span>new_game_hover,<span class="k3">*</span>load_game,<span class="k3">*</span>load_game_hover,<span class="k3">*</span>delete_game,</td></tr><tr><td class="number">12</td><td>    <span class="k3">*</span>delete_game_hover,<span class="k3">*</span>quit,<span class="k3">*</span>quit_hover<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>  buffering game_screen<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>  mouse_function my_mouse<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>public:</td></tr><tr><td class="number">16</td><td>  main_menu<span class="k2">(</span>buffering the_screen<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="c">// make our game_screen point to same game_Screen as main function</span></td></tr><tr><td class="number">19</td><td>    <span class="c">// and then load up all our bitmaps.</span></td></tr><tr><td class="number">20</td><td>    this-&gt;game_screen<span class="k3">=</span>the_screen<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    title <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">"images/title.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    new_game <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">"images/new_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    new_game_hover <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">"images/new_game_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    load_game <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">"images/load_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    load_game_hover <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">"images/load_game_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    delete_game <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">"images/delete_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    delete_game_hover <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">"images/delete_game_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    quit <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">"images/quit_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    quit_hover <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">"images/quit_hover.bmp"</span>, NULL<span class="k2">)</span><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>  <span class="k1">void</span> render_menu<span class="k2">(</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>    <span class="c">// here we add all our bitmaps to the menu based on whether ro not</span></td></tr><tr><td class="number">34</td><td>    <span class="c">// they're being hovered over.</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td>    game_screen.add_stretched_bitmap<span class="k2">(</span>title,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>    <span class="k1">if</span><span class="k2">(</span>my_mouse.mouse_hovering<span class="k2">(</span><span class="n">400</span>,<span class="n">100</span>,new_game-&gt;w,new_game-&gt;h<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">38</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">39</td><td>      game_screen.add_bitmap<span class="k2">(</span>new_game_hover,<span class="n">400</span>,<span class="n">100</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">41</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">42</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">43</td><td>      game_screen.add_bitmap<span class="k2">(</span>new_game,<span class="n">400</span>,<span class="n">100</span><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">if</span><span class="k2">(</span>my_mouse.mouse_hovering<span class="k2">(</span><span class="n">400</span>,<span class="n">150</span>,load_game-&gt;w,load_game-&gt;h<span class="k2">)</span><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>      game_screen.add_bitmap<span class="k2">(</span>load_game_hover,<span class="n">400</span>,<span class="n">150</span><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>    <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>      game_screen.add_bitmap<span class="k2">(</span>load_game,<span class="n">400</span>,<span class="n">150</span><span class="k2">)</span><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>    <span class="k1">if</span><span class="k2">(</span>my_mouse.mouse_hovering<span class="k2">(</span><span class="n">400</span>,<span class="n">200</span>,delete_game-&gt;w,delete_game-&gt;h<span class="k2">)</span><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>      game_screen.add_bitmap<span class="k2">(</span>delete_game_hover,<span class="n">400</span>,<span class="n">200</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">57</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">58</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">59</td><td>      game_screen.add_bitmap<span class="k2">(</span>delete_game,<span class="n">400</span>,<span class="n">200</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">61</td><td>    <span class="k1">if</span><span class="k2">(</span>my_mouse.mouse_hovering<span class="k2">(</span><span class="n">400</span>,<span class="n">250</span>,quit-&gt;w,quit-&gt;h<span class="k2">)</span><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>      game_screen.add_bitmap<span class="k2">(</span>quit_hover,<span class="n">400</span>,<span class="n">250</span><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="k1">else</span></td></tr><tr><td class="number">66</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">67</td><td>      game_screen.add_bitmap<span class="k2">(</span>quit,<span class="n">400</span>,<span class="n">250</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>  <span class="k2">}</span></td></tr><tr><td class="number">70</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>&#160;</td></tr><tr><td class="number">72</td><td><span class="p">#endif;</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Charles256)</author>
		<pubDate>Wed, 28 Feb 2007 12:27:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I only skimmed over the first two code boxes.</p><p>1. You should not include .cpp files. Include .h instead.<br />2. You do not need to call allegro_exit.<br />3. I don&#39;t follow the logic in the buffering class. What&#39;s the purpose of adding bitmaps? At which point do you clear the buffer or part of it in order to redraw something that has changed? EDIT: Aaah, I get it now. Yeah, should work even if it&#39;s not how most people would do it.<br />4. When do you destroy the buffer? As I see it you have large memory leaks especially when you pass stuff around by value.<br />5. Don&#39;t use rest for timing purposes.</p><p>Others will no doubt point out more problems.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Wed, 28 Feb 2007 13:17:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your program is not fullscreen, but uses 16 bpp regardless of desktop depth.  You might consider matching the desktop depth or using 32 bpp or something.  </p><p>draw_sprite the buffer to the screen?  draw_sprite skips mask colored pixels ie two level transparency.  You probably want blit there.  </p><p>You also rest for 60 milliseconds after each frame is drawn.  That means even if everything else is infinitely fast, your framerate is capped at 16-17 fps.  Using rest() to set the rate of game play is generally frowned upon - for most things using a timer or something is better.  </p><p>You do a linear search through your set of bitmap pointers.  Might as well make it a set instead.  </p><p>Why is drawing them to the buffer linked to marking them for deletion?  They should be marked for deletion on load, not on render.  </p><p>You do not remove bitmaps from the vector when you destroy them.  Which is probably fine, assumeing you only call the destroy() method at the end, but still, it&#39;s bad form.  </p><p>In mouse_hovering you use x_end and y_end as the width and height of the region... to me the parameter names imply that they are absolute coordinates.  Of course, STL already uses misleading names, so why shouldn&#39;t everyone.  </p><p>Your indentation is inconsistent.  It may appear consistent to you depending upon your editor settings, but you use 4 spaces in some places and 1 tab in other places.  </p><p>You have two bufferings named game_screen.  The contents of one are copied over the other.  This is strange, and probably not what you want to be doing.  I would suggest that you make main_menu&#39;s buffering be a reference.  </p><p>Buffering apparently has some methods not shown.  Perhaps they&#39;re in the header file?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (orz)</author>
		<pubDate>Wed, 28 Feb 2007 13:48:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ll reply to and change some of those things later ( bout to head to class) but I just had to ask before I run out, what do you mean buffer has more methods not shown? Pretty sure I showed them all. :-D Either way, yes. I&#39;ll reply to the rest later. Man, y&#39;all giving some tough love. :-D I&#39;m not new to c++ just new to allegro. I&#39;m pretty sure I was passing stuff around by pointer. Hence why me passing game_screen still allowed game_Screen.render() in main to work because it had been passed by pointer instead of by reference because by reference would cause it not to show anything when it tried to render... Of course you could be referring to something else, I&#39;ll check back in later. By the way, when you give criticism on my allegro technique (or c++ technique, but hopefully that&#39;ll be less frequent <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> ) please tell me what I should be doing instead because I&#39;m not exactly an allegro expert: )</p><p>Edit:<br />changed draw_sprite to blit, function call looks like this&#39;
</p><div class="source-code snippet"><div class="inner"><pre>    <span class="k1">void</span> render<span class="k2">(</span><span class="k2">)</span>
    <span class="k2">{</span>
      <a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</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>
      <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k2">}</span>
</pre></div></div><p>

I agreed with your marking them for deletion on load, mainly because it&#39;s less work the program has to do hence faster, so I changed my code for main_menu to the following
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>main_menu<span class="k2">(</span>buffering the_screen<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="c">// make our game_screen point to same game_Screen as main function</span></td></tr><tr><td class="number">4</td><td>    <span class="c">// and then load up all our bitmaps.</span></td></tr><tr><td class="number">5</td><td>    this-&gt;game_screen<span class="k3">=</span>the_screen<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    title <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">"images/title.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    new_game <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">"images/new_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    new_game_hover <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">"images/new_game_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    load_game <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">"images/load_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    load_game_hover <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">"images/load_game_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    delete_game <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">"images/delete_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    delete_game_hover <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">"images/delete_game_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    quit <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">"images/quit_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    quit_hover <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">"images/quit_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>title<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>new_game<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>new_game_hover<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>load_game<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>load_game_hover<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>delete_game<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>delete_game_hover<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>quit<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>quit_hover<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>  <span class="k2">}</span></td></tr></tbody></table></div></div><p>
and the function mark_bitmap_for_deletion resides in buffering and looks like so
</p><div class="source-code snippet"><div class="inner"><pre>    <span class="k1">void</span> mark_bitmap_for_deletion<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>picture<span class="k2">)</span>
    <span class="k2">{</span>
      bitmaps.push_back<span class="k2">(</span>picture<span class="k2">)</span><span class="k2">;</span>
    <span class="k2">}</span>
</pre></div></div><p>

changed delete_bitmaps to a destructor, after i removed allegro_exit call so it&#39;d still work. Only issue, I wanted to do delete bitmaps; but my compiler got pretty upset about that. 
</p><div class="source-code snippet"><div class="inner"><pre>    ~buffering<span class="k2">(</span><span class="k2">)</span>
    <span class="k2">{</span>
      <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span>bitmaps.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
      <span class="k2">{</span>
        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bitmaps<span class="k3">&lt;</span>i&gt;<span class="k2">)</span><span class="k2">;</span>
      <span class="k2">}</span>
      bitmaps.empty<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k2">}</span>
</pre></div></div><p>
As for the mouse hovering opinion you&#39;re absolutely right, I meant to rename that before I posted. <img src="http://www.allegro.cc/forums/smileys/embarassed.gif" alt=":-[" /></p><p>Miran, I&#39;ll reply to you in a bit but if I don&#39;t get going I swear I&#39;ll be killed by my teacher. Thanks for the comments, keep them coming!</p><p>New code looks as follows!</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;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#include "buffering.h"</span></td></tr><tr><td class="number">5</td><td><span class="p">#include "mouse_function.h"</span></td></tr><tr><td class="number">6</td><td><span class="p">#include "main_menu.h"</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td><span class="k1">void</span> setup<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>    <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">13</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">14</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">15</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">16</td><td>  <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">/*don't know if you need this*/</span></td></tr><tr><td class="number">17</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">18</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">19</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_TEXT,<span class="n">0</span>,<span class="n">0</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">20</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    <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></td></tr><tr><td class="number">22</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">23</td><td>  <a href="http://www.allegro.cc/manual/show_mouse" target="_blank"><span class="a">show_mouse</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><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>&#160;</td></tr><tr><td class="number">26</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><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>  setup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// sets up the screen</span></td></tr><tr><td class="number">29</td><td>  buffering game_screen<span class="k2">;</span> <span class="c">// creates an object where our screen will be held, handles</span></td></tr><tr><td class="number">30</td><td>  <span class="c">// double buffering for us.</span></td></tr><tr><td class="number">31</td><td>  main_menu my_main_menu<span class="k2">(</span>game_screen<span class="k2">)</span><span class="k2">;</span> <span class="c">// we want to set up the main menu so we pass</span></td></tr><tr><td class="number">32</td><td>  <span class="c">// it a reference to game screen so it knows where to set up stuff. kind of important :-D</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</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></td></tr><tr><td class="number">35</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">36</td><td>    my_main_menu.render_menu<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="c">// puts the main menu onto the buffer    </span></td></tr><tr><td class="number">37</td><td>    game_screen.render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// puts the buffer onto the viewable screen removing the flickering</span></td></tr><tr><td class="number">38</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">39</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td><span class="k2">}</span></td></tr><tr><td class="number">41</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>
buffering.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">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">4</td><td>&#160;</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><span class="p">#ifndef BUFFERING</span></td></tr><tr><td class="number">7</td><td><span class="p">#define BUFFERING</span></td></tr><tr><td class="number">8</td><td><span class="k1">class</span> buffering</td></tr><tr><td class="number">9</td><td><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>  private: </td></tr><tr><td class="number">11</td><td>    <span class="c">// we'l need a buffer and a vector to hold reference to location of bitmaps.</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> buffer<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    vector<span class="k3">&lt;</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span><span class="k3">&gt;</span> bitmaps<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>  public:</td></tr><tr><td class="number">16</td><td>    buffering<span class="k2">(</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="c">// the buffer needs to be the entire screen</span></td></tr><tr><td class="number">19</td><td>      <span class="c">// so we use allegro defined variables to make it so.</span></td></tr><tr><td class="number">20</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">21</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">22</td><td>    <span class="k1">void</span> mark_bitmap_for_deletion<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>picture<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>      bitmaps.push_back<span class="k2">(</span>picture<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>&#160;</td></tr><tr><td class="number">27</td><td>    <span class="c">// this is just a wrapper for load_bitmap so we can add their memory locations</span></td></tr><tr><td class="number">28</td><td>    <span class="c">// into a vector for automatic deletion later on.</span></td></tr><tr><td class="number">29</td><td>    <span class="k1">void</span> add_bitmap<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>picture,<span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span>,<span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span><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>      <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer,picture,x,y<span class="k2">)</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>&#160;</td></tr><tr><td class="number">34</td><td>    <span class="c">// same thign as above</span></td></tr><tr><td class="number">35</td><td>    <span class="k1">void</span> add_stretched_bitmap<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span> picture,<span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span>, <span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span>,<span class="k1">int</span> width<span class="k3">=</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <span class="k1">int</span> height<span class="k3">=</span><a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><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>      <a href="http://www.allegro.cc/manual/stretch_sprite" target="_blank"><span class="a">stretch_sprite</span></a><span class="k2">(</span>buffer,picture,x,y,width,height<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td>    <span class="c">// draw the buffer to the screen</span></td></tr><tr><td class="number">41</td><td>    <span class="k1">void</span> render<span class="k2">(</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>      <a href="http://www.allegro.cc/manual/vsync" target="_blank"><span class="a">vsync</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</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">45</td><td>      <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">5</span><span class="k2">)</span><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>&#160;</td></tr><tr><td class="number">48</td><td>    <span class="c">//dynamically destroy all the bitmaps. good stuff. :-D</span></td></tr><tr><td class="number">49</td><td>    <span class="c">// beats the hell out of 20 million calls to destroy_bitmap</span></td></tr><tr><td class="number">50</td><td>    ~buffering<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">51</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">52</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>bitmaps.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><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>        <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bitmaps<span class="k3">&lt;</span>i&gt;<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">56</td><td>      bitmaps.empty<span class="k2">(</span><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><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>&#160;</td></tr><tr><td class="number">60</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>
mouse_function.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">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#ifndef MOUSE_FUNCTION</span></td></tr><tr><td class="number">5</td><td><span class="p">#define MOUSE_FUNCTION</span></td></tr><tr><td class="number">6</td><td><span class="k1">class</span> mouse_function</td></tr><tr><td class="number">7</td><td><span class="k2">{</span></td></tr><tr><td class="number">8</td><td>public:</td></tr><tr><td class="number">9</td><td>  mouse_function<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>    <span class="c">//something, right now this class is just to see if mouse is hovering over a position</span></td></tr><tr><td class="number">12</td><td>    <span class="c">// later on it will expand to do other things</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">bool</span> mouse_hovering<span class="k2">(</span><span class="k1">int</span> x,<span class="k1">int</span> y, <span class="k1">int</span> width,<span class="k1">int</span> height<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">if</span><span class="k2">(</span>mouse_x&gt;<span class="k3">=</span>x <span class="k3">&amp;</span><span class="k3">&amp;</span> mouse_y&gt;<span class="k3">=</span>y <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a><span class="k3">&lt;</span><span class="k3">=</span><span class="k2">(</span>x<span class="k3">+</span>width<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a><span class="k3">&lt;</span><span class="k3">=</span><span class="k2">(</span>y<span class="k3">+</span>height<span class="k2">)</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="k1">return</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">20</td><td>    <span class="k1">else</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="k1">return</span> <span class="k1">false</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="k2">}</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>
main_menu.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">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;vector&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#include "buffering.h"</span></td></tr><tr><td class="number">5</td><td><span class="p">#include "mouse_function.h"</span></td></tr><tr><td class="number">6</td><td><span class="p">#ifndef MAIN_MENU</span></td></tr><tr><td class="number">7</td><td><span class="p">#define MAIN_MENU</span></td></tr><tr><td class="number">8</td><td><span class="k1">class</span> main_menu</td></tr><tr><td class="number">9</td><td><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>private:</td></tr><tr><td class="number">11</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>title,<span class="k3">*</span>new_game,<span class="k3">*</span>new_game_hover,<span class="k3">*</span>load_game,<span class="k3">*</span>load_game_hover,<span class="k3">*</span>delete_game,</td></tr><tr><td class="number">12</td><td>    <span class="k3">*</span>delete_game_hover,<span class="k3">*</span>quit,<span class="k3">*</span>quit_hover<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>  buffering game_screen<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>  mouse_function my_mouse<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>public:</td></tr><tr><td class="number">16</td><td>  main_menu<span class="k2">(</span>buffering the_screen<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="c">// make our game_screen point to same game_Screen as main function</span></td></tr><tr><td class="number">19</td><td>    <span class="c">// and then load up all our bitmaps.</span></td></tr><tr><td class="number">20</td><td>    this-&gt;game_screen<span class="k3">=</span>the_screen<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    title <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">"images/title.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    new_game <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">"images/new_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    new_game_hover <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">"images/new_game_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    load_game <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">"images/load_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    load_game_hover <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">"images/load_game_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    delete_game <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">"images/delete_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    delete_game_hover <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">"images/delete_game_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    quit <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">"images/quit_game.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    quit_hover <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">"images/quit_hover.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>title<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>new_game<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>new_game_hover<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>load_game<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>load_game_hover<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>delete_game<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>delete_game_hover<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>quit<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>    game_screen.mark_bitmap_for_deletion<span class="k2">(</span>quit_hover<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>  <span class="k1">void</span> render_menu<span class="k2">(</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">// here we add all our bitmaps to the menu based on whether ro not</span></td></tr><tr><td class="number">43</td><td>    <span class="c">// they're being hovered over.</span></td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td>    game_screen.add_stretched_bitmap<span class="k2">(</span>title,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    <span class="k1">if</span><span class="k2">(</span>my_mouse.mouse_hovering<span class="k2">(</span><span class="n">400</span>,<span class="n">100</span>,new_game-&gt;w,new_game-&gt;h<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">47</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">48</td><td>      game_screen.add_bitmap<span class="k2">(</span>new_game_hover,<span class="n">400</span>,<span class="n">100</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>    <span class="k1">else</span></td></tr><tr><td class="number">51</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">52</td><td>      game_screen.add_bitmap<span class="k2">(</span>new_game,<span class="n">400</span>,<span class="n">100</span><span class="k2">)</span><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>    <span class="k1">if</span><span class="k2">(</span>my_mouse.mouse_hovering<span class="k2">(</span><span class="n">400</span>,<span class="n">150</span>,load_game-&gt;w,load_game-&gt;h<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">55</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">56</td><td>      game_screen.add_bitmap<span class="k2">(</span>load_game_hover,<span class="n">400</span>,<span class="n">150</span><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>    <span class="k1">else</span></td></tr><tr><td class="number">59</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">60</td><td>      game_screen.add_bitmap<span class="k2">(</span>load_game,<span class="n">400</span>,<span class="n">150</span><span class="k2">)</span><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>    <span class="k1">if</span><span class="k2">(</span>my_mouse.mouse_hovering<span class="k2">(</span><span class="n">400</span>,<span class="n">200</span>,delete_game-&gt;w,delete_game-&gt;h<span class="k2">)</span><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>      game_screen.add_bitmap<span class="k2">(</span>delete_game_hover,<span class="n">400</span>,<span class="n">200</span><span class="k2">)</span><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>    <span class="k1">else</span></td></tr><tr><td class="number">67</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">68</td><td>      game_screen.add_bitmap<span class="k2">(</span>delete_game,<span class="n">400</span>,<span class="n">200</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">70</td><td>    <span class="k1">if</span><span class="k2">(</span>my_mouse.mouse_hovering<span class="k2">(</span><span class="n">400</span>,<span class="n">250</span>,quit-&gt;w,quit-&gt;h<span class="k2">)</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>      game_screen.add_bitmap<span class="k2">(</span>quit_hover,<span class="n">400</span>,<span class="n">250</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">73</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">74</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">75</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">76</td><td>      game_screen.add_bitmap<span class="k2">(</span>quit,<span class="n">400</span>,<span class="n">250</span><span class="k2">)</span><span class="k2">;</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="k2">}</span></td></tr><tr><td class="number">79</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td>&#160;</td></tr><tr><td class="number">81</td><td><span class="p">#endif;</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Charles256)</author>
		<pubDate>Wed, 28 Feb 2007 19:46:09 +0000</pubDate>
	</item>
</rss>
