<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Problems drawing bitmaps (it just crashes)</title>
		<link>http://www.allegro.cc/forums/view/578007</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 09 Apr 2006 05:59:18 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Okay well I&#039;m having some problems making my program draw bitmaps. The program compiles fine and starts to run but when It gets to the main game loop where it needs to draw the scene it crashes with a runtime debug error. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></p><p>Here is the main C++ file:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="c">/*************************************************************************************************</span>
<span class="number">   2</span><span class="c"> File: main.cpp</span>
<span class="number">   3</span><span class="c"> Desc: Main jdpong2000 file</span>
<span class="number">   4</span><span class="c"> Author: Ex777</span>
<span class="number">   5</span><span class="c"> Time Stamp: 4-6-06 (date started)</span>
<span class="number">   6</span><span class="c">*************************************************************************************************/</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="c">/*////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">   9</span><span class="c"> Block: Include statements</span>
<span class="number">  10</span><span class="c"> Desc: Calls any .h or .hpp files needed to successfully compile the program.</span>
<span class="number">  11</span><span class="c">////////////////////////////////////////////////////////////////////////////////////////////////*/</span>
<span class="number">  12</span><span class="p">#include "jdBase.h"</span>
<span class="number">  13</span><span class="c">//#include "jdMainGlobals.h"</span>
<span class="number">  14</span><span class="p">#include "jdAllegro.h"</span>
<span class="number">  15</span>
<span class="number">  16</span><span class="c">/*////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  17</span><span class="c">  Block: Structures</span>
<span class="number">  18</span><span class="c">  Desc: Define structures needed by the game</span>
<span class="number">  19</span><span class="c">////////////////////////////////////////////////////////////////////////////////////////////////*/</span>
<span class="number">  20</span><span class="k1">struct</span> jdPlayer
<span class="number">  21</span><span class="k2">{</span>
<span class="number">  22</span>  <span class="k1">int</span> x, y<span class="k2">;</span>    <span class="c">// coords on the screen for the paddle</span>
<span class="number">  23</span>  <span class="k1">int</span> w, h<span class="k2">;</span>    <span class="c">// width and height of the paddle</span>
<span class="number">  24</span>  <span class="k1">int</span> score<span class="k2">;</span>    <span class="c">// score of the player</span>
<span class="number">  25</span>  <span class="k1">bool</span> AI<span class="k2">;</span>    <span class="c">// true if the player is computer controled false if otherwise</span>
<span class="number">  26</span>  <span class="c">//BITMAP *paddle; // bitmap of the paddle</span>
<span class="number">  27</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  28</span>
<span class="number">  29</span><span class="k1">struct</span> jdBall
<span class="number">  30</span><span class="k2">{</span>
<span class="number">  31</span>  <span class="k1">int</span> x, y<span class="k2">;</span>    <span class="c">// coords on the screen for the ball</span>
<span class="number">  32</span>  <span class="k1">int</span> w, h<span class="k2">;</span>    <span class="c">// widht and height of the ball</span>
<span class="number">  33</span>  <span class="k1">int</span> speedx<span class="k2">;</span>    <span class="c">// speed of the ball on the x axis</span>
<span class="number">  34</span>  <span class="k1">int</span> speedy<span class="k2">;</span>    <span class="c">// speed of the ball on the y axis</span>
<span class="number">  35</span>  <span class="c">//BITMAP *ball;  // bitmap of the ball</span>
<span class="number">  36</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  37</span>
<span class="number">  38</span><span class="c">/*////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  39</span><span class="c">  Block: Global Variables</span>
<span class="number">  40</span><span class="c">  Desc: Define global variables needed by the game.</span>
<span class="number">  41</span><span class="c">////////////////////////////////////////////////////////////////////////////////////////////////*/</span>
<span class="number">  42</span><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>
<span class="number">  43</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>intro<span class="k2">;</span>
<span class="number">  44</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>logo<span class="k2">;</span>
<span class="number">  45</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>paused<span class="k2">;</span>
<span class="number">  46</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>paddle<span class="k2">;</span>
<span class="number">  47</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>ballbmp<span class="k2">;</span>
<span class="number">  48</span>
<span class="number">  49</span>jdBall ball<span class="k2">;</span>
<span class="number">  50</span>jdPlayer player1<span class="k2">;</span>
<span class="number">  51</span>jdPlayer player2<span class="k2">;</span>
<span class="number">  52</span>
<span class="number">  53</span>FILE <span class="k3">*</span>logfile<span class="k2">;</span>
<span class="number">  54</span>
<span class="number">  55</span><span class="k1">int</span> playing<span class="k2">;</span>
<span class="number">  56</span><span class="k1">int</span> level<span class="k2">;</span>
<span class="number">  57</span><span class="k1">bool</span> training<span class="k2">;</span>
<span class="number">  58</span>
<span class="number">  59</span><span class="k1">int</span> menuing_main<span class="k2">;</span>
<span class="number">  60</span>
<span class="number">  61</span><span class="k1">int</span> tuffhet<span class="k2">;</span> <span class="c">// used for the computer enemy if one exists</span>
<span class="number">  62</span>
<span class="number">  63</span><span class="c">/*////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  64</span><span class="c"> Block: Functions</span>
<span class="number">  65</span><span class="c"> Desc: Functions created to run the program.</span>
<span class="number">  66</span><span class="c">////////////////////////////////////////////////////////////////////////////////////////////////*/</span>
<span class="number">  67</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number">  68</span><span class="c"> Function: void alert ( const char* msg )</span>
<span class="number">  69</span><span class="c"> Desc: Outputs an error to the user.</span>
<span class="number">  70</span><span class="c"> Returns: nothing.</span>
<span class="number">  71</span><span class="c"> Args: void.</span>
<span class="number">  72</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number">  73</span><span class="k1">void</span> <a href="http://www.allegro.cc/manual/alert" target="_blank"><span class="a">alert</span></a><span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> msg<span class="k2">)</span>
<span class="number">  74</span><span class="k2">{</span>
<span class="number">  75</span>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span>msg<span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span><span class="k2">}</span>
<span class="number">  77</span>
<span class="number">  78</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number">  79</span><span class="c"> Function: bool LoadBitmapFromFile( BITMAP* bmp, const char* filepath, char* errMSG )</span>
<span class="number">  80</span><span class="c"> Desc: Loads a bitmap from a file.</span>
<span class="number">  81</span><span class="c"> Returns: true on success, false on failure.</span>
<span class="number">  82</span><span class="c"> Args: bmp = the bitmap to load the bitmap file on.</span>
<span class="number">  83</span><span class="c">    filepath = the path to the bitmap to load.</span>
<span class="number">  84</span><span class="c">  errMSG = message to display if bitmap didnt load.</span>
<span class="number">  85</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number">  86</span><span class="k1">bool</span> LoadBitmapFromFile<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">const</span> <span class="k1">char</span><span class="k3">*</span> filepath, <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> errMSG<span class="k2">)</span>
<span class="number">  87</span><span class="k2">{</span>
<span class="number">  88</span>  debug<span class="k2">(</span><span class="s">"Bitmap is going to be loaded from load_bitmap"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>    bmp <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>filepath, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>  debug<span class="k2">(</span><span class="s">"bitmap has been loaded from load_bitmap"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>
<span class="number">  92</span>  <span class="k1">if</span> <span class="k2">(</span>bmp <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  93</span>    <span class="k2">{</span>
<span class="number">  94</span>    <a href="http://www.allegro.cc/manual/alert" target="_blank"><span class="a">alert</span></a><span class="k2">(</span>errMSG<span class="k2">)</span><span class="k2">;</span>
<span class="number">  95</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  96</span>  <span class="k2">}</span>
<span class="number">  97</span>
<span class="number">  98</span>  debug<span class="k2">(</span><span class="s">"bitmap returning true"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 100</span><span class="k2">}</span>
<span class="number"> 101</span>
<span class="number"> 102</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 103</span><span class="c"> Function: bool SetupAllegro( void )</span>
<span class="number"> 104</span><span class="c"> Desc: Sets up all allegro stuff needed to creat a window.</span>
<span class="number"> 105</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 106</span><span class="c"> Args: void.</span>
<span class="number"> 107</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 108</span><span class="k1">bool</span> SetupAllegro<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 109</span><span class="k2">{</span>
<span class="number"> 110</span>    <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>
<span class="number"> 112</span>    <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>
<span class="number"> 114</span>    <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>
<span class="number"> 115</span>
<span class="number"> 116</span>    <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="number"> 117</span>
<span class="number"> 118</span>    <span class="c">// seed the random generator</span>
<span class="number"> 119</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 120</span>
<span class="number"> 121</span>    <span class="c">// set the text mode</span>
<span class="number"> 122</span>    text_mode<span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// background is transparent</span>
<span class="number"> 123</span>
<span class="number"> 124</span>    <span class="c">// set the video mode</span>
<span class="number"> 125</span>    <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/desktop_color_depth" target="_blank"><span class="a">desktop_color_depth</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// could be desktop_color_depth()</span>
<span class="number"> 126</span>
<span class="number"> 127</span>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>MODE, WIDTH, HEIGHT, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 128</span>    <span class="k2">{</span>
<span class="number"> 129</span>        <a href="http://www.allegro.cc/manual/alert" target="_blank"><span class="a">alert</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>
<span class="number"> 130</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 132</span>    <span class="k2">}</span>
<span class="number"> 133</span>
<span class="number"> 134</span>    <span class="c">// set the audio mode</span>
<span class="number"> 135</span>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span>DIGI_AUTODETECT, MIDI_NONE, <span class="s">""</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 136</span>    <span class="k2">{</span>
<span class="number"> 137</span>        <a href="http://www.allegro.cc/manual/alert" target="_blank"><span class="a">alert</span></a><span class="k2">(</span><span class="s">"Error initializing sound system!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 138</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 139</span>    <span class="k2">}</span>
<span class="number"> 140</span>
<span class="number"> 141</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// allegro successfully setup</span>
<span class="number"> 142</span><span class="k2">}</span>
<span class="number"> 143</span>
<span class="number"> 144</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 145</span><span class="c"> Function: bool SetupPlayer ( jdPlayer player, int side, bool AI )</span>
<span class="number"> 146</span><span class="c"> Desc: Sets up all variables inside the jdPlayer structure.</span>
<span class="number"> 147</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 148</span><span class="c"> Args: jdPlayer = the player structer.</span>
<span class="number"> 149</span><span class="c">    side = the side the player is located.</span>
<span class="number"> 150</span><span class="c">    AI = is the player computer controlled?</span>
<span class="number"> 151</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 152</span><span class="k1">bool</span> SetupPlayer<span class="k2">(</span> jdPlayer player, <span class="k1">int</span> side, <span class="k1">bool</span> AI <span class="k2">)</span>
<span class="number"> 153</span><span class="k2">{</span>
<span class="number"> 154</span>    player.w <span class="k3">=</span> paddle-&gt;w<span class="k2">;</span>
<span class="number"> 155</span>    player.h <span class="k3">=</span> paddle-&gt;h<span class="k2">;</span>
<span class="number"> 156</span>
<span class="number"> 157</span>    <span class="k1">if</span> <span class="k2">(</span>side <span class="k3">=</span><span class="k3">=</span> RIGHT<span class="k2">)</span>
<span class="number"> 158</span>    <span class="k2">{</span>
<span class="number"> 159</span>        player.x <span class="k3">=</span> WIDTH-20-player.w<span class="k2">;</span>
<span class="number"> 160</span>        player.y <span class="k3">=</span> HEIGHT<span class="k3">/</span><span class="n">2</span><span class="k3">-</span><span class="k2">(</span>player.h<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</span>    <span class="k2">}</span>
<span class="number"> 162</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>side <span class="k3">=</span><span class="k3">=</span> LEFT<span class="k2">)</span>
<span class="number"> 163</span>    <span class="k2">{</span>
<span class="number"> 164</span>        player.x <span class="k3">=</span> <span class="n">10</span><span class="k3">+</span>player.w<span class="k2">;</span>
<span class="number"> 165</span>        player.y <span class="k3">=</span> HEIGHT<span class="k3">/</span><span class="n">2</span><span class="k3">-</span><span class="k2">(</span>player.h<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 166</span>    <span class="k2">}</span>
<span class="number"> 167</span>    <span class="k1">else</span>
<span class="number"> 168</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 169</span>
<span class="number"> 170</span>    player.score <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 171</span>
<span class="number"> 172</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// player successfully created</span>
<span class="number"> 173</span><span class="k2">}</span>
<span class="number"> 174</span>
<span class="number"> 175</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 176</span><span class="c"> Function: bool SetupBall( jdBall sball )</span>
<span class="number"> 177</span><span class="c"> Desc: Sets up all variables required to creat a ball.</span>
<span class="number"> 178</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 179</span><span class="c"> Args: sball = the ball structure to setup.</span>
<span class="number"> 180</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 181</span><span class="k1">bool</span> SetupBall<span class="k2">(</span> jdBall sball<span class="k2">)</span>
<span class="number"> 182</span><span class="k2">{</span>
<span class="number"> 183</span>
<span class="number"> 184</span>    sball.w <span class="k3">=</span> ballbmp-&gt;w<span class="k2">;</span>
<span class="number"> 185</span>    sball.h <span class="k3">=</span> ballbmp-&gt;h<span class="k2">;</span>
<span class="number"> 186</span>    sball.x <span class="k3">=</span> WIDTH<span class="k3">/</span><span class="n">2</span><span class="k3">-</span><span class="k2">(</span>sball.w<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 187</span>    sball.y <span class="k3">=</span> HEIGHT<span class="k3">/</span><span class="n">2</span><span class="k3">-</span><span class="k2">(</span>sball.h<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 188</span>    sball.speedx <span class="k3">=</span> <span class="n">9</span><span class="k2">;</span>
<span class="number"> 189</span>    sball.speedy <span class="k3">=</span> <span class="n">7</span><span class="k2">;</span>
<span class="number"> 190</span>
<span class="number"> 191</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// ball created successfully</span>
<span class="number"> 192</span><span class="k2">}</span>
<span class="number"> 193</span>
<span class="number"> 194</span>
<span class="number"> 195</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 196</span><span class="c"> Function: bool SetupGlobals( void )</span>
<span class="number"> 197</span><span class="c"> Desc: Sets up all globals that are required for the game.</span>
<span class="number"> 198</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 199</span><span class="c"> Args: void.</span>
<span class="number"> 200</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 201</span><span class="k1">bool</span> SetupGlobals<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 202</span><span class="k2">{</span>
<span class="number"> 203</span>  debug<span class="k2">(</span><span class="s">"SetupPlayer - player1"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 204</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>SetupPlayer<span class="k2">(</span>player1, RIGHT, <span class="k1">false</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 205</span>    <span class="k2">{</span>
<span class="number"> 206</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 207</span>    <span class="k2">}</span>
<span class="number"> 208</span>  debug<span class="k2">(</span><span class="s">"SetupPlayer - player1 completed"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 209</span>
<span class="number"> 210</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>SetupPlayer<span class="k2">(</span>player2, LEFT, <span class="k1">true</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 211</span>    <span class="k2">{</span>
<span class="number"> 212</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 213</span>    <span class="k2">}</span>
<span class="number"> 214</span>
<span class="number"> 215</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>SetupBall<span class="k2">(</span>ball<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 216</span>    <span class="k2">{</span>
<span class="number"> 217</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 218</span>    <span class="k2">}</span>
<span class="number"> 219</span>
<span class="number"> 220</span>    playing <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 221</span>    level <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 222</span>    training <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 223</span>    menuing_main <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 224</span>    tuffhet <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 225</span>
<span class="number"> 226</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// globals successfuly setup</span>
<span class="number"> 227</span><span class="k2">}</span>
<span class="number"> 228</span>
<span class="number"> 229</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 230</span><span class="c"> Function: bool SetupBitmaps( void )</span>
<span class="number"> 231</span><span class="c"> Desc: Loads all bitmaps required by the game.</span>
<span class="number"> 232</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 233</span><span class="c"> Args: void.</span>
<span class="number"> 234</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 235</span><span class="k1">bool</span> SetupBitmaps<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 236</span><span class="k2">{</span>
<span class="number"> 237</span>  <span class="c">// paddle bitmap</span>
<span class="number"> 238</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>LoadBitmapFromFile<span class="k2">(</span>paddle, <span class="s">"graphics/slider.bmp"</span>, <span class="s">"Error loading graphics/slider.bmp"</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 239</span>  <span class="k2">{</span>
<span class="number"> 240</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 241</span>  <span class="k2">}</span>
<span class="number"> 242</span>
<span class="number"> 243</span>  <span class="c">// ball bitmap</span>
<span class="number"> 244</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>LoadBitmapFromFile<span class="k2">(</span>ballbmp, <span class="s">"graphics/ball.bmp"</span>, <span class="s">"Error loading graphics/ball.bmp"</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 245</span>  <span class="k2">{</span>
<span class="number"> 246</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 247</span>  <span class="k2">}</span>
<span class="number"> 248</span>
<span class="number"> 249</span>    <span class="c">// logo bitmap</span>
<span class="number"> 250</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>LoadBitmapFromFile<span class="k2">(</span>logo, <span class="s">"graphics/logo.bmp"</span>, <span class="s">"Error loading graphics/logo.bmp"</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 251</span>    <span class="k2">{</span>
<span class="number"> 252</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 253</span>    <span class="k2">}</span>
<span class="number"> 254</span>
<span class="number"> 255</span>    <span class="c">// paused bitmap</span>
<span class="number"> 256</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>LoadBitmapFromFile<span class="k2">(</span>paused, <span class="s">"graphics/paused.bmp"</span>, <span class="s">"Error loading graphics/paused.bmp"</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 257</span>    <span class="k2">{</span>
<span class="number"> 258</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 259</span>    <span class="k2">}</span>
<span class="number"> 260</span>
<span class="number"> 261</span>    <span class="c">// intro bitmap</span>
<span class="number"> 262</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>LoadBitmapFromFile<span class="k2">(</span>intro, <span class="s">"graphics/intro.bmp"</span>, <span class="s">"Error loading graphics/intro.bmp"</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 263</span>    <span class="k2">{</span>
<span class="number"> 264</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 265</span>    <span class="k2">}</span>
<span class="number"> 266</span>
<span class="number"> 267</span>    <span class="c">// back buffer bitmap</span>
<span class="number"> 268</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>WIDTH,HEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 269</span>    <span class="k1">if</span> <span class="k2">(</span>buffer <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 270</span>    <span class="k2">{</span>
<span class="number"> 271</span>        <a href="http://www.allegro.cc/manual/alert" target="_blank"><span class="a">alert</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>
<span class="number"> 272</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 273</span>    <span class="k2">}</span>
<span class="number"> 274</span>
<span class="number"> 275</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// all bitmaps have loaded successfully</span>
<span class="number"> 276</span><span class="k2">}</span>
<span class="number"> 277</span>
<span class="number"> 278</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 279</span><span class="c"> Function: bool Setup ( void )</span>
<span class="number"> 280</span><span class="c"> Desc: Calls all setup functions.</span>
<span class="number"> 281</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 282</span><span class="c"> Args: void.</span>
<span class="number"> 283</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 284</span><span class="k1">bool</span> Setup<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 285</span><span class="k2">{</span>
<span class="number"> 286</span>  debug<span class="k2">(</span><span class="s">"Seup called"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 287</span>
<span class="number"> 288</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>SetupAllegro<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 289</span>    <span class="k2">{</span>
<span class="number"> 290</span>    debug<span class="k2">(</span><span class="s">"SetupAllegro() some how messed up"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 291</span>
<span class="number"> 292</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 293</span>    <span class="k2">}</span>
<span class="number"> 294</span>  debug<span class="k2">(</span><span class="s">"SetupAllegro() completed"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 295</span>
<span class="number"> 296</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>SetupGlobals<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 297</span>    <span class="k2">{</span>
<span class="number"> 298</span>    debug<span class="k2">(</span><span class="s">"SetupGlobals() some how messed up"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 299</span>
<span class="number"> 300</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 301</span>    <span class="k2">}</span>
<span class="number"> 302</span>  debug<span class="k2">(</span><span class="s">"SetupGlobals() completed"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 303</span>
<span class="number"> 304</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>SetupBitmaps<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 305</span>    <span class="k2">{</span>
<span class="number"> 306</span>    debug<span class="k2">(</span><span class="s">"SetupBitmaps() some how messed up"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 307</span>
<span class="number"> 308</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 309</span>    <span class="k2">}</span>
<span class="number"> 310</span>  debug<span class="k2">(</span><span class="s">"SetupBitmaps() completed"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 311</span>
<span class="number"> 312</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 313</span><span class="k2">}</span>
<span class="number"> 314</span>
<span class="number"> 315</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 316</span><span class="c"> Function: bool DeAllocateBitmap( BITMAP *bmp )</span>
<span class="number"> 317</span><span class="c"> Desc: Clears and destroys allocated bitmaps</span>
<span class="number"> 318</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 319</span><span class="c"> Args: bmp = bitmap to deallocate.</span>
<span class="number"> 320</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 321</span><span class="k1">bool</span> DeAllocateBitmap<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>
<span class="number"> 322</span><span class="k2">{</span>
<span class="number"> 323</span>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span> bmp <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 324</span>
<span class="number"> 325</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 326</span><span class="k2">}</span>
<span class="number"> 327</span>
<span class="number"> 328</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 329</span><span class="c"> Function: bool CleanupBitmaps ( void )</span>
<span class="number"> 330</span><span class="c"> Desc: Clears and destroys allocated bitmaps</span>
<span class="number"> 331</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 332</span><span class="c"> Args: void.</span>
<span class="number"> 333</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 334</span><span class="k1">bool</span> CleanupBitmaps<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 335</span><span class="k2">{</span>
<span class="number"> 336</span>    <span class="c">// logo bitmap</span>
<span class="number"> 337</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>DeAllocateBitmap<span class="k2">(</span>logo<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 338</span>    <span class="k2">{</span>
<span class="number"> 339</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 340</span>    <span class="k2">}</span>
<span class="number"> 341</span>
<span class="number"> 342</span>    <span class="c">// paused bitmap</span>
<span class="number"> 343</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>DeAllocateBitmap<span class="k2">(</span>paused<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 344</span>    <span class="k2">{</span>
<span class="number"> 345</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 346</span>    <span class="k2">}</span>
<span class="number"> 347</span>
<span class="number"> 348</span>    <span class="c">// intro bitmap</span>
<span class="number"> 349</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>DeAllocateBitmap<span class="k2">(</span>intro<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 350</span>    <span class="k2">{</span>
<span class="number"> 351</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 352</span>    <span class="k2">}</span>
<span class="number"> 353</span>
<span class="number"> 354</span>    <span class="c">// buffer bitmap</span>
<span class="number"> 355</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>DeAllocateBitmap<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 356</span>    <span class="k2">{</span>
<span class="number"> 357</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 358</span>    <span class="k2">}</span>
<span class="number"> 359</span>
<span class="number"> 360</span>    <span class="c">// paddle bitmap</span>
<span class="number"> 361</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>DeAllocateBitmap<span class="k2">(</span>paddle<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 362</span>    <span class="k2">{</span>
<span class="number"> 363</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 364</span>    <span class="k2">}</span>
<span class="number"> 365</span>
<span class="number"> 366</span>    <span class="c">// ball bitmap</span>
<span class="number"> 367</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>DeAllocateBitmap<span class="k2">(</span>ballbmp<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 368</span>    <span class="k2">{</span>
<span class="number"> 369</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 370</span>    <span class="k2">}</span>
<span class="number"> 371</span>
<span class="number"> 372</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// cleanup was successful</span>
<span class="number"> 373</span><span class="k2">}</span>
<span class="number"> 374</span>
<span class="number"> 375</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 376</span><span class="c"> Function: bool Cleanup ( void )</span>
<span class="number"> 377</span><span class="c"> Desc: Clears and destroys allocated bitmaps, sounds, ect..</span>
<span class="number"> 378</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 379</span><span class="c"> Args: void.</span>
<span class="number"> 380</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 381</span><span class="k1">bool</span> Cleanup<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 382</span><span class="k2">{</span>
<span class="number"> 383</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>CleanupBitmaps<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 384</span>    <span class="k2">{</span>
<span class="number"> 385</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 386</span>    <span class="k2">}</span>
<span class="number"> 387</span>
<span class="number"> 388</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// cleanup was successful</span>
<span class="number"> 389</span><span class="k2">}</span>
<span class="number"> 390</span>
<span class="number"> 391</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 392</span><span class="c"> Function: void HandleKeys ( void )</span>
<span class="number"> 393</span><span class="c"> Desc: Handles user key presses</span>
<span class="number"> 394</span><span class="c"> Returns: nothing.</span>
<span class="number"> 395</span><span class="c"> Args: void.</span>
<span class="number"> 396</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 397</span><span class="k1">void</span> HandleKeys<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 398</span><span class="k2">{</span>
<span class="number"> 399</span>  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 400</span>  <span class="k2">{</span>
<span class="number"> 401</span>    playing <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 402</span>  <span class="k2">}</span>
<span class="number"> 403</span>
<span class="number"> 404</span>  <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 405</span><span class="k2">}</span>
<span class="number"> 406</span>
<span class="number"> 407</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 408</span><span class="c"> Function: bool CheckBallColide ( jdBall cball )</span>
<span class="number"> 409</span><span class="c"> Desc: checks to see if there is a colition between the ball and boundries or paddles.</span>
<span class="number"> 410</span><span class="c"> Returns: true if hit false if no hit.</span>
<span class="number"> 411</span><span class="c"> Args: cball = the ball we are checking for colitions</span>
<span class="number"> 412</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 413</span><span class="k1">bool</span> CheckBallColide<span class="k2">(</span> jdBall cball <span class="k2">)</span>
<span class="number"> 414</span><span class="k2">{</span>
<span class="number"> 415</span>  <span class="k1">if</span> <span class="k2">(</span>cball.x <span class="k3">+</span> cball.w <span class="k3">&gt;</span><span class="k3">=</span> player1.x<span class="k2">)</span>
<span class="number"> 416</span>  <span class="k2">{</span>
<span class="number"> 417</span>    <span class="k1">if</span> <span class="k2">(</span>cball.y <span class="k3">+</span> cball.w <span class="k3">&gt;</span><span class="k3">=</span> player1.y<span class="k2">)</span>
<span class="number"> 418</span>    <span class="k2">{</span>
<span class="number"> 419</span>      <span class="k1">if</span> <span class="k2">(</span>cball.y <span class="k3">&lt;</span><span class="k3">=</span> player1.y <span class="k3">+</span> player1.h<span class="k2">)</span>
<span class="number"> 420</span>      <span class="k2">{</span>
<span class="number"> 421</span>        cball.speedx <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_38.html" target="_blank">abs</a><span class="k2">(</span>cball.speedx <span class="k3">+</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">3</span><span class="k2">)</span> <span class="k3">*</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 422</span>        <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 423</span>      <span class="k2">}</span>
<span class="number"> 424</span>    <span class="k2">}</span>
<span class="number"> 425</span>  <span class="k2">}</span>
<span class="number"> 426</span>
<span class="number"> 427</span>  <span class="k1">if</span> <span class="k2">(</span>cball.x <span class="k3">&lt;</span><span class="k3">=</span> player2.x <span class="k3">+</span> player2.w<span class="k2">)</span>
<span class="number"> 428</span>  <span class="k2">{</span>
<span class="number"> 429</span>    <span class="k1">if</span> <span class="k2">(</span>cball.y <span class="k3">+</span> cball.h <span class="k3">&gt;</span><span class="k3">=</span> player2.y<span class="k2">)</span>
<span class="number"> 430</span>    <span class="k2">{</span>
<span class="number"> 431</span>      <span class="k1">if</span> <span class="k2">(</span>cball.y <span class="k3">&lt;</span><span class="k3">=</span> player2.y <span class="k3">+</span> player2.h<span class="k2">)</span>
<span class="number"> 432</span>      <span class="k2">{</span>
<span class="number"> 433</span>        cball.speedx <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_38.html" target="_blank">abs</a><span class="k2">(</span>cball.speedx <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span> % <span class="n">3</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 434</span>        <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 435</span>      <span class="k2">}</span>
<span class="number"> 436</span>    <span class="k2">}</span>
<span class="number"> 437</span>  <span class="k2">}</span>
<span class="number"> 438</span>  <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span> <span class="c">// no colition occured</span>
<span class="number"> 439</span><span class="k2">}</span>
<span class="number"> 440</span>
<span class="number"> 441</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 442</span><span class="c"> Function: void UpdateBall ( void )</span>
<span class="number"> 443</span><span class="c"> Desc: Updates ball.</span>
<span class="number"> 444</span><span class="c"> Returns: nothing.</span>
<span class="number"> 445</span><span class="c"> Args: void.</span>
<span class="number"> 446</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 447</span><span class="k1">void</span> UpdateBall<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 448</span><span class="k2">{</span>
<span class="number"> 449</span>  ball.x <span class="k3">=</span> ball.x <span class="k3">+</span> ball.speedx<span class="k2">;</span>
<span class="number"> 450</span>  ball.y <span class="k3">=</span> ball.y <span class="k3">+</span> ball.speedy<span class="k2">;</span>
<span class="number"> 451</span>  
<span class="number"> 452</span>  <span class="k1">if</span><span class="k2">(</span>CheckBallColide<span class="k2">(</span>ball<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 453</span>  <span class="k2">{</span>
<span class="number"> 454</span>    <span class="c">// colition happend - play sound</span>
<span class="number"> 455</span>  <span class="k2">}</span>
<span class="number"> 456</span>
<span class="number"> 457</span>  <span class="k1">return</span><span class="k2">;</span> 
<span class="number"> 458</span><span class="k2">}</span>
<span class="number"> 459</span>
<span class="number"> 460</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 461</span><span class="c"> Function: void DrawScene ( void )</span>
<span class="number"> 462</span><span class="c"> Desc: Draws bitmaps and all that.</span>
<span class="number"> 463</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 464</span><span class="c"> Args: void.</span>
<span class="number"> 465</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 466</span><span class="k1">void</span> DrawScene<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 467</span><span class="k2">{</span>
<span class="number"> 468</span>  debug<span class="k2">(</span><span class="s">"Drawing player1.paddle"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 469</span>  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, paddle, player1.x, player1.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 470</span>  debug<span class="k2">(</span><span class="s">"Drawing player2.paddle"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 471</span>  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, paddle, player2.x, player2.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 472</span>  debug<span class="k2">(</span><span class="s">"Drwing ball"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 473</span>  <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, ballbmp, ball.x, ball.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 474</span>  <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 475</span><span class="k2">}</span>
<span class="number"> 476</span>
<span class="number"> 477</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 478</span><span class="c"> Function: bool DoMainLoop ( void )</span>
<span class="number"> 479</span><span class="c"> Desc: Updates graphics, sound, movement, AI, everything...</span>
<span class="number"> 480</span><span class="c"> Returns: boolean, true on success, false on failure.</span>
<span class="number"> 481</span><span class="c"> Args: void.</span>
<span class="number"> 482</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 483</span><span class="k1">bool</span> DoMainLoop<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 484</span><span class="k2">{</span>
<span class="number"> 485</span>  HandleKeys<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// handle user input through keybored</span>
<span class="number"> 486</span>  UpdateBall<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// update ball position</span>
<span class="number"> 487</span>  DrawScene<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// draw the scene</span>
<span class="number"> 488</span>
<span class="number"> 489</span>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// tic successfull</span>
<span class="number"> 490</span><span class="k2">}</span>
<span class="number"> 491</span>
<span class="number"> 492</span><span class="c">/*________________________________________________________________________________________________</span>
<span class="number"> 493</span><span class="c"> Function: int main ( void )</span>
<span class="number"> 494</span><span class="c"> Desc: Main file for the whole game, calls functions to load resources, handle input,</span>
<span class="number"> 495</span><span class="c">    colisions, Ai, the main game loop ect...</span>
<span class="number"> 496</span><span class="c"> Returns: integer value, 0 on exit;</span>
<span class="number"> 497</span><span class="c"> Args: void.</span>
<span class="number"> 498</span><span class="c">________________________________________________________________________________________________*/</span>
<span class="number"> 499</span><span class="k1">int</span> main <span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 500</span><span class="k2">{</span>
<span class="number"> 501</span>  debug<span class="k2">(</span><span class="s">"Going to call setup()"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 502</span>
<span class="number"> 503</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>Setup<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 504</span>    <span class="k2">{</span>
<span class="number"> 505</span>        <span class="c">// clean up allocated bitmaps, sounds, ect..</span>
<span class="number"> 506</span>        <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>Cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 507</span>       <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 508</span>
<span class="number"> 509</span>        <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 510</span>    <span class="k2">}</span>
<span class="number"> 511</span>
<span class="number"> 512</span>  debug<span class="k2">(</span><span class="s">"Entering main loop"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 513</span>
<span class="number"> 514</span>    <span class="k1">while</span> <span class="k2">(</span>playing <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 515</span>    <span class="k2">{</span>
<span class="number"> 516</span>        cls<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span> <span class="c">// clear buffer contents</span>
<span class="number"> 517</span>
<span class="number"> 518</span>        <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>DoMainLoop<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 519</span>      playing <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 520</span>
<span class="number"> 521</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> <span class="c">// wait for verticle synk</span>
<span class="number"> 522</span>        flip<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span> <span class="c">// display buffer contents</span>
<span class="number"> 523</span>
<span class="number"> 524</span>    <span class="k2">}</span>
<span class="number"> 525</span>
<span class="number"> 526</span>  debug<span class="k2">(</span><span class="s">"entering Cleanup()"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 527</span>
<span class="number"> 528</span>    Cleanup<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 529</span>
<span class="number"> 530</span>  debug<span class="k2">(</span><span class="s">"Cleanup() successfull"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 531</span>
<span class="number"> 532</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 533</span><span class="k2">}</span>
<span class="number"> 534</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>
</div></div><p>

I have tried all I can think of and nothing works I just get errors all over the place. Please understand this is not nearly done, I&#039;m just trying to make it display some bitmaps before I can push forward with development and add sound, networking, and input code. Please Help!!!!! I truly cant understand why I&#039;m getting this error <img src="http://www.allegro.cc/forums/smileys/cry.gif" alt=":&#039;(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ex777 Ex777)</author>
		<pubDate>Sun, 09 Apr 2006 05:34:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The problem seems to be in the function LoadBitmapFromFile. When you set the BITMAP pointer to the loaded bitmap, it&#39;s not actually changing the pointer you passed. Instead, you should change the parameter to a BITMAP **bmp (pointer to a pointer), or return the loaded bitmap. </p><p>Try something like this:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>LoadBitmapFromFile<span class="k2">(</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> filepath, <span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span> errMSG<span class="k2">)</span> <span class="k2">{</span>
    debug<span class="k2">(</span><span class="s">"Bitmap is going to be loaded from load_bitmap"</span><span class="k2">)</span><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="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span>filepath, NULL<span class="k2">)</span><span class="k2">;</span>
    debug<span class="k2">(</span><span class="s">"bitmap has been loaded from load_bitmap"</span><span class="k2">)</span><span class="k2">;</span>

    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>bmp<span class="k2">)</span>
    <span class="k2">{</span>
        <a href="http://www.allegro.cc/manual/alert" target="_blank"><span class="a">alert</span></a><span class="k2">(</span>errMSG<span class="k2">)</span><span class="k2">;</span>
        <span class="k1">return</span> NULL<span class="k2">;</span>
    <span class="k2">}</span>

    debug<span class="k2">(</span><span class="s">"bitmap returning loaded bitmap"</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">return</span> bmp<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

This is pretty basic stuff... perhaps you should read a few C tutorials before you start such a project.</p><p>[edit]<br />Just to clear it up, a pointer is just a variable that stores the address of another variable. (And of course it has slightly different syntax).<br />If you had, lets say, variable &quot;int a&quot;, and you set it to equal, variable &quot;int b&quot; (as in a = b), later changing the value of b would not also change the value of a. That is essentially what was happening in your function.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonny Cook)</author>
		<pubDate>Sun, 09 Apr 2006 05:57:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you I shall give that one a try. <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p>[EDIT]<br />Um, in response to your edit I would like to belive I know a little bit more about allegro and programming then I led you to belive. I do know what a pointer is and how to use one, but thank you anyways, and your solution was correct. I&#39;m still not a pro at allegro but now that I have this fixed out I can go back to my first love, network programing. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ex777 Ex777)</author>
		<pubDate>Sun, 09 Apr 2006 05:59:18 +0000</pubDate>
	</item>
</rss>
