<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>A program in need of analysis</title>
		<link>http://www.allegro.cc/forums/view/587074</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 18 Aug 2006 21:16:49 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>OK, I wrote a program here:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include "allegro.h"</span>
<span class="number">   2</span><span class="p">#include "nl.h"</span>
<span class="number">   3</span>
<span class="number">   4</span><span class="c">//define some convenient constants</span>
<span class="number">   5</span><span class="p">#define MODE GFX_AUTODETECT_WINDOWED</span>
<span class="number">   6</span><span class="p">#define WIDTH 640</span>
<span class="number">   7</span><span class="p">#define HEIGHT 480</span>
<span class="number">   8</span><span class="p">#define S_VOLUME 25</span>
<span class="number">   9</span><span class="p">#define BLACK makecol (0, 0, 0)</span>
<span class="number">  10</span><span class="p">#define LIGHT_BLUE makecol (64, 128, 255)</span>
<span class="number">  11</span><span class="p">#define WHITE makecol (255, 255, 255)</span>
<span class="number">  12</span><span class="p">#define GRASS makecol (0, 255, 64)</span>
<span class="number">  13</span><span class="p">#define R 0</span>
<span class="number">  14</span><span class="p">#define L 1</span>
<span class="number">  15</span><span class="p">#define SPD 2</span>
<span class="number">  16</span><span class="p">#define BLOCKS 20</span>
<span class="number">  17</span><span class="p">#define BLOCK_FALL 2</span>
<span class="number">  18</span>
<span class="number">  19</span><span class="c">//define class: Trace</span>
<span class="number">  20</span><span class="k1">class</span> trace
<span class="number">  21</span><span class="k2">{</span>
<span class="number">  22</span>public:
<span class="number">  23</span><span class="k1">int</span> x1, x2, y1, y2, active<span class="k2">;</span>
<span class="number">  24</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  25</span>
<span class="number">  26</span><span class="c">//define class: Character</span>
<span class="number">  27</span><span class="k1">class</span> character
<span class="number">  28</span><span class="k2">{</span>
<span class="number">  29</span>public:
<span class="number">  30</span><span class="k1">int</span> x, y, dir, combo, score<span class="k2">;</span>
<span class="number">  31</span><span class="k1">float</span> x_spd, y_spd<span class="k2">;</span>
<span class="number">  32</span>trace trail<span class="k2">;</span>
<span class="number">  33</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>image<span class="k2">;</span>
<span class="number">  34</span><span class="k1">void</span> move<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  36</span>
<span class="number">  37</span><span class="k1">void</span> character::move<span class="k2">(</span><span class="k2">)</span>
<span class="number">  38</span><span class="k2">{</span>
<span class="number">  39</span>x <span class="k3">+</span><span class="k3">=</span> <span class="k1">int</span><span class="k2">(</span>x_spd<span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>y <span class="k3">+</span><span class="k3">=</span> <span class="k1">int</span><span class="k2">(</span>y_spd<span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span><span class="k1">return</span><span class="k2">;</span>
<span class="number">  42</span><span class="k2">}</span>
<span class="number">  43</span>
<span class="number">  44</span><span class="c">//define classes: part and thing</span>
<span class="number">  45</span><span class="k1">class</span> part
<span class="number">  46</span><span class="k2">{</span>
<span class="number">  47</span>public:
<span class="number">  48</span><span class="k1">int</span> x, y, active<span class="k2">;</span>
<span class="number">  49</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>image<span class="k2">;</span>
<span class="number">  50</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  51</span>
<span class="number">  52</span><span class="k1">class</span> thing
<span class="number">  53</span><span class="k2">{</span>
<span class="number">  54</span>public:
<span class="number">  55</span><span class="k1">int</span> x, y, active, weight<span class="k2">;</span>
<span class="number">  56</span><span class="c">//BITMAP *image;</span>
<span class="number">  57</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  58</span>
<span class="number">  59</span><span class="c">//define class: game_timer</span>
<span class="number">  60</span><span class="k1">class</span> game_timer
<span class="number">  61</span><span class="k2">{</span>
<span class="number">  62</span>public:
<span class="number">  63</span><span class="k1">int</span> play_loop, play_sec, play_min<span class="k2">;</span>
<span class="number">  64</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  65</span>
<span class="number">  66</span><span class="c">//variables</span>
<span class="number">  67</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>aimer, <span class="k3">*</span>buffer, <span class="k3">*</span>resources, <span class="k3">*</span>player_panel, <span class="k3">*</span>block_pic<span class="k2">;</span>
<span class="number">  68</span>character player<span class="k2">;</span>
<span class="number">  69</span>thing block<span class="k2">[</span>BLOCKS<span class="k2">]</span><span class="k2">;</span>
<span class="number">  70</span>part piece<span class="k2">[</span><span class="k2">(</span>BLOCKS<span class="k3">+</span><span class="n">1</span><span class="k2">)</span><span class="k3">*</span><span class="n">2</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  71</span><span class="k1">int</span> mouseisdown, dash_delay, gravity, till_next, next_block <span class="k3">=</span> <span class="n">50</span><span class="k2">;</span>
<span class="number">  72</span>game_timer play_time, time_left<span class="k2">;</span>
<span class="number">  73</span>
<span class="number">  74</span><span class="c">//it does what it says!</span>
<span class="number">  75</span><span class="k1">void</span> set_direction<span class="k2">(</span><span class="k1">int</span> goto_x, <span class="k1">int</span> goto_y<span class="k2">)</span>
<span class="number">  76</span><span class="k2">{</span>
<span class="number">  77</span><span class="c">//left</span>
<span class="number">  78</span><span class="k1">if</span> <span class="k2">(</span>goto_x <span class="k3">&lt;</span> player.x <span class="k3">+</span> <span class="n">12</span><span class="k2">)</span>
<span class="number">  79</span><span class="k2">{</span>
<span class="number">  80</span>player.x_spd <span class="k3">=</span> <span class="k3">-</span>SPD<span class="k2">;</span>
<span class="number">  81</span><span class="k2">}</span>
<span class="number">  82</span><span class="c">//right</span>
<span class="number">  83</span><span class="k1">if</span> <span class="k2">(</span>goto_x <span class="k3">&gt;</span> player.x <span class="k3">-</span> <span class="n">12</span><span class="k2">)</span>
<span class="number">  84</span><span class="k2">{</span>
<span class="number">  85</span>player.x_spd <span class="k3">=</span> SPD<span class="k2">;</span>
<span class="number">  86</span><span class="k2">}</span>
<span class="number">  87</span><span class="c">//up</span>
<span class="number">  88</span><span class="k1">if</span> <span class="k2">(</span>goto_y <span class="k3">&lt;</span> player.y <span class="k3">+</span> <span class="n">12</span><span class="k2">)</span>
<span class="number">  89</span><span class="k2">{</span>
<span class="number">  90</span>player.y_spd <span class="k3">=</span> <span class="k3">-</span>SPD<span class="k2">;</span>
<span class="number">  91</span><span class="k2">}</span>
<span class="number">  92</span><span class="c">//down</span>
<span class="number">  93</span><span class="k1">if</span> <span class="k2">(</span>goto_y <span class="k3">&gt;</span> player.y <span class="k3">-</span> <span class="n">12</span><span class="k2">)</span>
<span class="number">  94</span><span class="k2">{</span>
<span class="number">  95</span>player.y_spd <span class="k3">=</span> SPD<span class="k2">;</span>
<span class="number">  96</span><span class="k2">}</span>
<span class="number">  97</span><span class="c">//got diagonal?</span>
<span class="number">  98</span><span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>player.y_spd <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>player.x_spd <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  99</span><span class="k2">{</span>
<span class="number"> 100</span>player.y_spd <span class="k3">=</span> player.y_spd<span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number"> 101</span>player.x_spd <span class="k3">=</span> player.x_spd<span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number"> 102</span><span class="k2">}</span>
<span class="number"> 103</span><span class="k1">return</span><span class="k2">;</span>
<span class="number"> 104</span><span class="k2">}</span>
<span class="number"> 105</span>
<span class="number"> 106</span><span class="c">//check for collisions</span>
<span class="number"> 107</span><span class="k1">int</span> is_cut<span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>obj_layer ,<span class="k1">int</span> obj_x, <span class="k1">int</span> obj_y, <span class="k1">int</span> obj_size<span class="k2">)</span>
<span class="number"> 108</span><span class="k2">{</span>
<span class="number"> 109</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>clip_board <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>obj_size, obj_size<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 110</span><span class="k1">int</span> scan_x <span class="k3">=</span> <span class="n">0</span>, scan_y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 111</span><a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>obj_layer, clip_board, obj_x <span class="k3">-</span> obj_size<span class="k3">/</span><span class="n">2</span>, obj_y <span class="k3">-</span> obj_size<span class="k3">/</span><span class="n">2</span>, <span class="n">0</span>, <span class="n">0</span>, obj_size, obj_size<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span><span class="k1">while</span> <span class="k2">(</span>scan_y <span class="k3">&lt;</span> obj_size-1<span class="k2">)</span>
<span class="number"> 113</span><span class="k2">{</span>
<span class="number"> 114</span>    <span class="k1">while</span> <span class="k2">(</span>scan_x<span class="k3">&lt;</span> obj_size-1<span class="k2">)</span>
<span class="number"> 115</span>    <span class="k2">{</span>
<span class="number"> 116</span>        <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/getpixel" target="_blank"><span class="a">getpixel</span></a><span class="k2">(</span>clip_board, scan_x, scan_y<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> LIGHT_BLUE<span class="k2">)</span>
<span class="number"> 117</span>        <span class="k2">{</span>
<span class="number"> 118</span>                <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>clip_board<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 119</span>                <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 120</span>        <span class="k2">}</span>
<span class="number"> 121</span>        scan_x <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 122</span>    <span class="k2">}</span>
<span class="number"> 123</span>    scan_y <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 124</span>    scan_x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 125</span><span class="k2">}</span>
<span class="number"> 126</span><a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>clip_board<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span><span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 128</span><span class="k2">}</span>
<span class="number"> 129</span>
<span class="number"> 130</span><span class="c">//main function</span>
<span class="number"> 131</span><span class="k1">void</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 132</span><span class="k2">{</span>
<span class="number"> 133</span>    <span class="c">//initialize allegro</span>
<span class="number"> 134</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"> 135</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"> 136</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"> 137</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"> 138</span>    <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">24</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 139</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"> 140</span>    <span class="k2">{</span>
<span class="number"> 141</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_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>
<span class="number"> 142</span>        <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>
<span class="number"> 143</span>        <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 144</span>    <span class="k2">}</span>
<span class="number"> 145</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="number"> 146</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="k2">;</span>
<span class="number"> 147</span>    <span class="c">//initialize HawkNL</span>
<span class="number"> 148</span>    nlInit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 149</span>    
<span class="number"> 150</span>    <span class="c">//load graphics</span>
<span class="number"> 151</span>    resources <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">"ninja.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 152</span>    
<span class="number"> 153</span>    <span class="c">//load sounds</span>
<span class="number"> 154</span>
<span class="number"> 155</span>    <span class="c">//initalize settings</span>
<span class="number"> 156</span>    player_panel <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><span class="n">192</span>, <span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>    player.image <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><span class="n">64</span>, <span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>    block_pic <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><span class="n">64</span>, <span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</span>    <a href="http://www.allegro.cc/manual/stretch_blit" target="_blank"><span class="a">stretch_blit</span></a><span class="k2">(</span>resources, block_pic, <span class="n">0</span>, <span class="n">32</span>, <span class="n">32</span>, <span class="n">32</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">64</span>, <span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 160</span>    <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 161</span>    <span class="c">//while (i &lt; 42)</span>
<span class="number"> 162</span>    <span class="c">//{</span>
<span class="number"> 163</span>    <span class="c">//piece&lt;i&gt;.image = create_bitmap(64, 64);</span>
<span class="number"> 164</span>    <span class="c">//i += 1;</span>
<span class="number"> 165</span>    <span class="c">//}</span>
<span class="number"> 166</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"> 167</span>    aimer <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><span class="n">32</span>, <span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>resources, aimer, <span class="n">96</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">32</span>, <span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 169</span>    <a href="http://www.allegro.cc/manual/stretch_blit" target="_blank"><span class="a">stretch_blit</span></a><span class="k2">(</span>resources, player_panel, <span class="n">0</span>, <span class="n">0</span>, <span class="n">96</span>, <span class="n">32</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">192</span>, <span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 170</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>player_panel, player.image, <span class="n">64</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">64</span>, <span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 171</span>    <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>buffer, <span class="n">0</span>, <span class="n">0</span>, WIDTH, HEIGHT, WHITE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 172</span>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>resources<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 173</span>
<span class="number"> 174</span>
<span class="number"> 175</span>    <span class="c">//main loop</span>
<span class="number"> 176</span>    <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 177</span>    <span class="k2">{</span>
<span class="number"> 178</span>    
<span class="number"> 179</span>    <span class="c">//dashing</span>
<span class="number"> 180</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span><span class="k3">!</span>mouseisdown<span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span>dash_delay <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">12</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 181</span>    <span class="k2">{</span>
<span class="number"> 182</span>    <span class="c">//new image</span>
<span class="number"> 183</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>player_panel, player.image, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">64</span>, <span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 184</span>    <span class="c">//change direction</span>
<span class="number"> 185</span>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">&gt;</span> player.x<span class="k2">)</span>
<span class="number"> 186</span>        player.dir <span class="k3">=</span> R<span class="k2">;</span>
<span class="number"> 187</span>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a> <span class="k3">&lt;</span> player.x<span class="k2">)</span>
<span class="number"> 188</span>        player.dir <span class="k3">=</span> L<span class="k2">;</span>
<span class="number"> 189</span>    <span class="c">//make the trail</span>
<span class="number"> 190</span>    player.trail.x1 <span class="k3">=</span> player.x<span class="k2">;</span>
<span class="number"> 191</span>    player.trail.y1 <span class="k3">=</span> player.y<span class="k2">;</span>
<span class="number"> 192</span>    player.trail.x2 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a><span class="k2">;</span>
<span class="number"> 193</span>    player.trail.y2 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a><span class="k2">;</span>
<span class="number"> 194</span>    player.trail.active <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 195</span>    <span class="c">//move player</span>
<span class="number"> 196</span>    set_direction<span class="k2">(</span><a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a>, <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 197</span>    player.x <span class="k3">=</span> <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a><span class="k2">;</span>
<span class="number"> 198</span>    player.y <span class="k3">=</span> <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a><span class="k2">;</span>
<span class="number"> 199</span>    <span class="c">//reset</span>
<span class="number"> 200</span>    dash_delay <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 201</span>    mouseisdown <span class="k3">=</span> TRUE<span class="k2">;</span>
<span class="number"> 202</span>    gravity <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 203</span>    <span class="k2">}</span>
<span class="number"> 204</span>    
<span class="number"> 205</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/mouse_b" target="_blank"><span class="a">mouse_b</span></a> <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 206</span>        mouseisdown <span class="k3">=</span> FALSE<span class="k2">;</span>
<span class="number"> 207</span>    
<span class="number"> 208</span>    dash_delay <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 209</span>
<span class="number"> 210</span>    <span class="c">//trail vanishes... now!</span>
<span class="number"> 211</span>    <span class="k1">if</span> <span class="k2">(</span>dash_delay <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">18</span><span class="k2">)</span>
<span class="number"> 212</span>        player.trail.active <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 213</span>    
<span class="number"> 214</span>    player.move<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 215</span>    
<span class="number"> 216</span>    <span class="c">//fall</span>
<span class="number"> 217</span>    <span class="k1">if</span> <span class="k2">(</span>dash_delay <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">15</span><span class="k2">)</span>
<span class="number"> 218</span>    <span class="k2">{</span>
<span class="number"> 219</span>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>player_panel, player.image, <span class="n">128</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">64</span>, <span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 220</span>        gravity <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 221</span>        player.y <span class="k3">+</span><span class="k3">=</span> gravity<span class="k3">/</span><span class="n">3</span><span class="k2">;</span>
<span class="number"> 222</span>        player.x_spd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 223</span>        player.y_spd <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 224</span>    <span class="k2">}</span>
<span class="number"> 225</span>    
<span class="number"> 226</span>    till_next <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 227</span>    <span class="c">//drop blocks</span>
<span class="number"> 228</span>    i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 229</span>    <span class="k1">while</span> <span class="k2">(</span>i <span class="k3">&lt;</span> BLOCKS<span class="k2">)</span>
<span class="number"> 230</span>    <span class="k2">{</span>
<span class="number"> 231</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">!</span><span class="k2">(</span>block<span class="k3">&lt;</span>i&gt;.active<span class="k2">)</span><span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span>till_next <span class="k3">&gt;</span><span class="k3">=</span> next_block <span class="k3">-</span> play_time.play_min<span class="k3">*</span><span class="n">5</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 232</span>    <span class="k2">{</span>
<span class="number"> 233</span>        block<span class="k3">&lt;</span>i&gt;.active <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 234</span>        block<span class="k3">&lt;</span>i&gt;.x <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_637.html" target="_blank">rand</a><span class="k2">(</span><span class="k2">)</span>%<span class="n">17</span><span class="k2">)</span><span class="k3">*</span><span class="n">32</span><span class="k2">)</span><span class="k3">+</span><span class="n">64</span><span class="k2">;</span>
<span class="number"> 235</span>        block<span class="k3">&lt;</span>i&gt;.y <span class="k3">=</span> <span class="k3">-</span><span class="n">32</span><span class="k2">;</span>
<span class="number"> 236</span>        block<span class="k3">&lt;</span>i&gt;.weight <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="k3">+</span> BLOCK_FALL<span class="k2">;</span>
<span class="number"> 237</span>        till_next <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 238</span>        i <span class="k3">=</span> BLOCKS<span class="k2">;</span>
<span class="number"> 239</span>    <span class="k2">}</span>
<span class="number"> 240</span>    <span class="k1">else</span>
<span class="number"> 241</span>        i <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 242</span>    <span class="k2">}</span>
<span class="number"> 243</span>    <span class="c">//blocks fall</span>
<span class="number"> 244</span>    i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 245</span>    <span class="k1">while</span> <span class="k2">(</span>i <span class="k3">&lt;</span> BLOCKS<span class="k2">)</span>
<span class="number"> 246</span>    <span class="k2">{</span>
<span class="number"> 247</span>    block<span class="k3">&lt;</span>i&gt;.y <span class="k3">+</span><span class="k3">=</span> block<span class="k3">&lt;</span>i&gt;.weight<span class="k2">;</span>
<span class="number"> 248</span>    <span class="k1">if</span> <span class="k2">(</span>block<span class="k3">&lt;</span>i&gt;.y <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">400</span><span class="k2">)</span>
<span class="number"> 249</span>    <span class="k2">{</span>
<span class="number"> 250</span>        block<span class="k3">&lt;</span>i&gt;.active <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 251</span>    <span class="k2">}</span>
<span class="number"> 252</span>    i <span class="k3">+</span><span class="k3">=</span> <span class="n">1</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">//cut blocks</span>
<span class="number"> 256</span>    i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 257</span>    <span class="k1">if</span> <span class="k2">(</span>dash_delay <span class="k3">&lt;</span> <span class="n">3</span><span class="k2">)</span>
<span class="number"> 258</span>    <span class="k2">{</span>
<span class="number"> 259</span>    <span class="k1">while</span> <span class="k2">(</span>i <span class="k3">&lt;</span> BLOCKS<span class="k2">)</span>
<span class="number"> 260</span>    <span class="k2">{</span>
<span class="number"> 261</span>    <span class="k1">if</span> <span class="k2">(</span>is_cut<span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, block<span class="k3">&lt;</span>i&gt;.x, block<span class="k3">&lt;</span>i&gt;.y, <span class="n">64</span><span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span>block<span class="k3">&lt;</span>i&gt;.active <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span>block<span class="k3">&lt;</span>i&gt;.y <span class="k3">&gt;</span> <span class="n">16</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 262</span>    <span class="k2">{</span>
<span class="number"> 263</span>        player.combo <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 264</span>        block<span class="k3">&lt;</span>i&gt;.active <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 265</span>    <span class="k2">}</span>
<span class="number"> 266</span>    i <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 267</span>    <span class="k2">}</span>
<span class="number"> 268</span>    <span class="k2">}</span>
<span class="number"> 269</span>    player.score <span class="k3">+</span><span class="k3">=</span> player.combo<span class="k3">*</span>player.combo<span class="k2">;</span>
<span class="number"> 270</span>    player.combo <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 271</span>    
<span class="number"> 272</span>    <span class="c">//bottom</span>
<span class="number"> 273</span>    <span class="k1">if</span> <span class="k2">(</span>player.y <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">400</span><span class="k2">)</span>
<span class="number"> 274</span>    <span class="k2">{</span>
<span class="number"> 275</span>        player.y <span class="k3">=</span> <span class="n">400</span><span class="k2">;</span>
<span class="number"> 276</span>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>player_panel, player.image, <span class="n">64</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">64</span>, <span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 277</span>    <span class="k2">}</span>
<span class="number"> 278</span>    
<span class="number"> 279</span>    <span class="c">//setup the buffer</span>
<span class="number"> 280</span>    <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span>buffer, <span class="n">0</span>, <span class="n">0</span>, WIDTH, HEIGHT, WHITE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 281</span>    <span class="c">//draw blocks</span>
<span class="number"> 282</span>    i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 283</span>    <span class="k1">while</span> <span class="k2">(</span>i <span class="k3">&lt;</span> BLOCKS<span class="k2">)</span>
<span class="number"> 284</span>    <span class="k2">{</span>
<span class="number"> 285</span>    <span class="k1">if</span> <span class="k2">(</span>block<span class="k3">&lt;</span>i&gt;.active <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 286</span>        <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, block_pic, block<span class="k3">&lt;</span>i&gt;.x-32, block<span class="k3">&lt;</span>i&gt;.y-32<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 287</span>    i <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 288</span>    <span class="k2">}</span>
<span class="number"> 289</span>    <span class="c">//draw player trail</span>
<span class="number"> 290</span>    <span class="k1">if</span> <span class="k2">(</span>player.trail.active <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 291</span>        <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">(</span>buffer, player.trail.x1, player.trail.y1, player.trail.x2, player.trail.y2, LIGHT_BLUE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 292</span>    <span class="c">//draw player</span>
<span class="number"> 293</span>    <span class="k1">if</span> <span class="k2">(</span>player.dir <span class="k3">=</span><span class="k3">=</span> R<span class="k2">)</span>
<span class="number"> 294</span>        <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, player.image, player.x-32, player.y-32<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 295</span>    <span class="k1">else</span>
<span class="number"> 296</span>        <a href="http://www.allegro.cc/manual/draw_sprite_h_flip" target="_blank"><span class="a">draw_sprite_h_flip</span></a><span class="k2">(</span>buffer, player.image, player.x-32, player.y-32<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 297</span>
<span class="number"> 298</span>    <span class="c">//text</span>
<span class="number"> 299</span>    textprintf<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">100</span>, <span class="n">460</span>, BLACK, <span class="s">"Score:%i"</span>, player.score<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 300</span>    textprintf<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">260</span>, <span class="n">460</span>, BLACK, <span class="s">"%i' "</span>, play_time.play_min<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 301</span>    textprintf<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">280</span>, <span class="n">460</span>, BLACK, <span class="s">"%i'' "</span>, play_time.play_sec<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 302</span>    textprintf<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">310</span>, <span class="n">460</span>, BLACK, <span class="s">"%i"</span>, play_time.play_loop<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 303</span>    
<span class="number"> 304</span>    <span class="c">//draw the mouse</span>
<span class="number"> 305</span>    <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, aimer, <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a>, <a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 306</span>    
<span class="number"> 307</span>    <span class="c">//draw the screen</span>
<span class="number"> 308</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>, WIDTH, HEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 309</span>    
<span class="number"> 310</span>    <span class="c">//timer</span>
<span class="number"> 311</span>    play_time.play_loop <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 312</span>    <span class="k1">if</span> <span class="k2">(</span>play_time.play_loop <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">39</span><span class="k2">)</span>
<span class="number"> 313</span>    <span class="k2">{</span>
<span class="number"> 314</span>        play_time.play_sec <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 315</span>        play_time.play_loop <span class="k3">-</span><span class="k3">=</span> <span class="n">39</span><span class="k2">;</span>
<span class="number"> 316</span>    <span class="k2">}</span>
<span class="number"> 317</span>    <span class="k1">if</span> <span class="k2">(</span>play_time.play_sec <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">60</span><span class="k2">)</span>
<span class="number"> 318</span>    <span class="k2">{</span>
<span class="number"> 319</span>        play_time.play_min <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 320</span>        play_time.play_sec <span class="k3">-</span><span class="k3">=</span> <span class="n">60</span><span class="k2">;</span>
<span class="number"> 321</span>    <span class="k2">}</span>
<span class="number"> 322</span>    
<span class="number"> 323</span>    <span class="c">//delay</span>
<span class="number"> 324</span>    <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">25</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 325</span>    <span class="k2">}</span>
<span class="number"> 326</span>    
<span class="number"> 327</span>    <span class="c">//shut down HawkNL</span>
<span class="number"> 328</span>    nlShutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 329</span>    <span class="c">//clean up</span>
<span class="number"> 330</span>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>player_panel<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 331</span>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>aimer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 332</span>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 333</span>    <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 334</span><span class="k2">}</span>
<span class="number"> 335</span>
<span class="number"> 336</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 the linker set and everything works fine, only sometimes you kill an object when its up near the top. It ONLY happens when a block is near the top. anyone see what&#039;s causing it? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kikaru)</author>
		<pubDate>Wed, 16 Aug 2006 22:56:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
only sometimes you kill an object when its up near the top
</p></div></div><p>
What do you mean? I don&#39;t understand the problem.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Wed, 16 Aug 2006 23:12:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m sorry, but I also don&#39;t know what the problem is. Could you elaborate on:
</p><ul><li><p> What&#39;s happening?</p></li><li><p> How is it reproducable?</p></li><li><p> What should happen if the code was well-formed?</p></li></ul><p>

Following are a few <b>suggestions</b>, which <s>as I always point out</s> are meant as suggestions, and are of course neither mandatory nor objective, so add a &quot;imho&quot; to everything I say <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>A construct like this:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="k1">while</span> <span class="k2">(</span> i <span class="k3">&lt;</span> SOMETHING <span class="k2">)</span> <span class="k2">{</span>
  <span class="c">/* do something */</span>
  i <span class="k3">+</span><span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Is better expressed with a <tt>for</tt> loop, like here:
</p><div class="source-code snippet"><div class="inner"><pre><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> SOMETHING<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i <span class="k2">)</span> <span class="k2">{</span>
  <span class="c">/* do something */</span>
<span class="k2">}</span>
</pre></div></div><p>

It&#39;s not wrong, mind you, both work just fine.</p><p>On a similar note, assuming you won&#39;t need <tt>i</tt> to be a specific value later on, this could be rewritten:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="k1">while</span> <span class="k2">(</span> i <span class="k3">&lt;</span> SOMETHING <span class="k2">)</span> <span class="k2">{</span>
  <span class="c">/* break out of loop */</span>
  i <span class="k3">=</span> SOMETHING<span class="k2">;</span> <span class="c">// &lt;-- this line I'm talking about</span>
  ...
</pre></div></div><p>

Breaking out of the loop can be achieved by making its condition <tt>false</tt>, but what I saw in your code, you don&#39;t need to execute the rest of the loop body, and you also don&#39;t access <tt>i</tt> in any way that it&#39;d be important that it had the value <tt>SOMETHING</tt>.<br />There&#39;s a keyword for exactly that situation, namely <tt>break</tt>, which I find fits better here. There&#39;s another side of the coin, though, as <tt>break</tt> tends to make analysis of program flow somewhat more complex a task, which is why you&#39;ll find some programmers opposing its use. I don&#39;t want to get political about that, so I leave it up to you to decide - just pointing out another way (if you already knew that, you can ignore this comment <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />).</p><p>Some of the formatting might have been lost somewhere during the copy &amp; paste, however I feel obliged to point out to follow at least basic indentation rules. I&#39;m sure Google will know something about them.</p><p>In your class <tt>part</tt>, the member <tt>active</tt> is declared as <tt>int</tt>, however it is used like a boolean variable. I suggest using <tt>bool</tt> instead, because that&#39;s the data type you really want here.</p><p><i>edit:</i> Fixed a typo.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Indeterminatus)</author>
		<pubDate>Thu, 17 Aug 2006 01:56:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sorry, I was rushed when I wrote that. During the game, blocks fall from the top of the screen. You need to draw lines through them using the mouse to cut them. For the blocks to be hit, the line needs to actually cross through the object&#39;s on-screen image. Right now, attacks will sometimes hit blocks near the top of the screen, even if the are on the opposite side of the screen form where you drew the line. </p><p>P.S. I might get a copy of the program up later.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kikaru)</author>
		<pubDate>Thu, 17 Aug 2006 03:08:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>From what i can see, your is_cut function does the following:
</p><ul><li><p>Creates a bitmap of the same size as the object.
</p></li><li><p>Blits a piece of the screen to the clipboard.
</p></li></ul><p>    If obj_x &gt; obj_size*3/2 or obj_y &gt; obj_size*3/2 then this will be a white<br />    square from outside the screen buffer.
</p><ul><li><p>Then check if <i>any</i> pixel in the buffer except those on the right or
</p></li></ul><p>    bottom are light blue.</p><p>This doesn&#39;t seem to have anything to do with checking if a line cuts an object.  My advice would be to start is_cut from scratch after asking how to do so in this thread. Try looking up do_line, it might be a good start.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Erkle)</author>
		<pubDate>Thu, 17 Aug 2006 06:13:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The is_cut function does the following: using its arguments, it grabs a portion of the bitmap (obj_layer), and scans it for LIGHT_BLUE pixels. LIGHT_BLUE is a color used ONLY in the slash lines. The -1 to obj_size are because position starts counting at zero. (If you have a bitmap 100 pixels wide, the far left will be 0, the far right will be 99)</p><p>However, thank you for pointing out about the size error. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>EDIT: I changed the size, and it works now! thank you very much</p><p>EDIT2: How would do_line help at all? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kikaru)</author>
		<pubDate>Thu, 17 Aug 2006 19:20:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My bad, I got the source_x/y and dest_x/y back to front again:-[.  Good thing 4.3 has a better format.  I also assumed you wanted to check the line to see if an object was under it rather than check each object to see if the line is on it.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The -1 to obj_size are because position starts counting at zero.
</p></div></div><p>
Then you want:<br /><span class="source-code">obj_y <span class="k3">&lt;</span><span class="k3">=</span> obj_size-1</span><br />but:<br /><span class="source-code">obj_y <span class="k3">&lt;</span> obj_size</span><br />will be slightly more efficient.</p><p>On a side note: It would probably be more efficient to create clip_board in main() and pass it to is_cut so it doesn&#39;t have to be created and destroyed for every check.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Erkle)</author>
		<pubDate>Fri, 18 Aug 2006 08:36:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I worked out a way to use a do_line to eliminate the need for that. Suprise suprise? <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kikaru)</author>
		<pubDate>Fri, 18 Aug 2006 21:16:49 +0000</pubDate>
	</item>
</rss>
