<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>What the hell is wrong with this?!?</title>
		<link>http://www.allegro.cc/forums/view/566799</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 16 Feb 2006 02:48:39 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This is driving me crazy! I can&#039;t seem to figure out why the ammo is not being changed! It is staying at 0.</p><p>Here is the code:</p><p>Shooter.h:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  2</span><span class="c">// &lt;Shooter.h&gt;</span>
<span class="number">  3</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  4</span><span class="p">#ifndef SHOOTER_H</span>
<span class="number">  5</span><span class="p">#define SHOOTER_H</span>
<span class="number">  6</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  7</span><span class="p">#include &lt;time.h&gt;</span>
<span class="number">  8</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">  9</span><span class="p">#include &lt;allegro.h&gt;</span>
<span class="number"> 10</span><span class="p">#include &lt;winalleg.h&gt;</span>
<span class="number"> 11</span><span class="p">#include &lt;winsock.h&gt;</span>
<span class="number"> 12</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 13</span><span class="p">#define MAX_AMMO      100</span>
<span class="number"> 14</span><span class="p">#define PI          3.1415926535897932384626433832795f</span>
<span class="number"> 15</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 16</span><span class="k1">int</span> InitSYS<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span><span class="k1">float</span> GetDegrees<span class="k2">(</span> <span class="k1">float</span> radians <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span><span class="k1">float</span> GetRadians<span class="k2">(</span> <span class="k1">float</span> degrees <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 20</span><span class="k1">class</span> Ammo<span class="k2">;</span>
<span class="number"> 21</span><span class="k1">class</span> Weapon<span class="k2">;</span>
<span class="number"> 22</span><span class="k1">class</span> Player<span class="k2">;</span>
<span class="number"> 23</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 24</span><span class="k1">class</span> Ammo
<span class="number"> 25</span><span class="k2">{</span>
<span class="number"> 26</span>public:
<span class="number"> 27</span>  Ammo<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>  ~Ammo<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>  <span class="k1">void</span> Update<span class="k2">(</span> Player <span class="k3">&amp;</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>  <span class="k1">void</span> Display<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pBmp <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>  <span class="k1">float</span> x, y<span class="k2">;</span>
<span class="number"> 32</span>  <span class="k1">float</span> xVel, yVel<span class="k2">;</span>
<span class="number"> 33</span>  <span class="k1">float</span> angle<span class="k2">;</span>
<span class="number"> 34</span>  <span class="k1">float</span> vel<span class="k2">;</span>
<span class="number"> 35</span>  <span class="k1">int</span> damage<span class="k2">;</span>
<span class="number"> 36</span>  <span class="k1">bool</span> bActive, bVisible, bFired<span class="k2">;</span>
<span class="number"> 37</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 38</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 39</span><span class="k1">class</span> Weapon
<span class="number"> 40</span><span class="k2">{</span>
<span class="number"> 41</span>public:
<span class="number"> 42</span>  Weapon<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span>  ~Weapon<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span>  <span class="k1">void</span> Update<span class="k2">(</span> Player <span class="k3">&amp;</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>  <span class="k1">void</span> Display<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pBmp <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>  <span class="k1">void</span> Fire<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>  <span class="k1">int</span> maxAmmo<span class="k2">;</span>
<span class="number"> 48</span>  <span class="k1">int</span> curAmmo<span class="k2">;</span>
<span class="number"> 49</span>  Ammo ammo<span class="k2">[</span>MAX_AMMO<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 50</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 51</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 52</span><span class="k1">class</span> Player
<span class="number"> 53</span><span class="k2">{</span>
<span class="number"> 54</span>public:
<span class="number"> 55</span>  Player<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span>  ~Player<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>  <span class="k1">void</span> Update<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>  <span class="k1">void</span> Display<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pBmp <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>  <span class="k1">void</span> Fire<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>  <span class="k1">float</span> x, y<span class="k2">;</span>
<span class="number"> 61</span>  <span class="k1">float</span> xVel, yVel<span class="k2">;</span>
<span class="number"> 62</span>  <span class="k1">float</span> angle<span class="k2">;</span>
<span class="number"> 63</span>  <span class="k1">float</span> vel<span class="k2">;</span>
<span class="number"> 64</span>  Weapon <span class="k3">*</span>pWeapon<span class="k2">;</span>
<span class="number"> 65</span>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pBmp<span class="k2">;</span>
<span class="number"> 66</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 67</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 68</span><span class="p">#endif // SHOOTER_H</span>
<span class="number"> 69</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
</div></div><p>
Shooter.cpp:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">   2</span><span class="c">// &lt;Shooter.cpp&gt;</span>
<span class="number">   3</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">   4</span><span class="p">#include "Shooter.h"</span>
<span class="number">   5</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">   6</span><span class="k1">int</span> InitSYS<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number">   7</span><span class="k2">{</span>
<span class="number">   8</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">   9</span>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  10</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_DIRECTX_WIN,<span class="n">400</span>,<span class="n">400</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  11</span>  <a href="http://www.allegro.cc/manual/set_color_conversion" target="_blank"><span class="a">set_color_conversion</span></a><span class="k2">(</span>COLORCONV_TOTAL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  12</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">  13</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">  14</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">  15</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  16</span><span class="k2">}</span>
<span class="number">  17</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  18</span><span class="k1">float</span> GetDegrees<span class="k2">(</span> <span class="k1">float</span> radians <span class="k2">)</span>
<span class="number">  19</span><span class="k2">{</span>
<span class="number">  20</span>  <span class="k1">return</span> <span class="k2">(</span>radians <span class="k3">*</span> <span class="n">180</span> <span class="k3">/</span> PI<span class="k2">)</span><span class="k2">;</span>
<span class="number">  21</span><span class="k2">}</span>
<span class="number">  22</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  23</span><span class="k1">float</span> GetRadians<span class="k2">(</span> <span class="k1">float</span> degrees <span class="k2">)</span>
<span class="number">  24</span><span class="k2">{</span>
<span class="number">  25</span>  <span class="k1">return</span> <span class="k2">(</span>degrees <span class="k3">*</span> PI <span class="k3">/</span> <span class="n">180</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span><span class="k2">}</span>
<span class="number">  27</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  28</span>Ammo::Ammo<span class="k2">(</span><span class="k2">)</span>
<span class="number">  29</span><span class="k2">{</span>
<span class="number">  30</span>  x <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number">  31</span>  y <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number">  32</span>  vel <span class="k3">=</span> <span class="n">0</span>.<span class="n">5f</span><span class="k2">;</span>
<span class="number">  33</span>  xVel   <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number">  34</span>  yVel   <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number">  35</span>  angle  <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number">  36</span>  damage <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  37</span>  bActive  <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  38</span>  bVisible <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  39</span>  bFired   <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  40</span><span class="k2">}</span>
<span class="number">  41</span>Ammo::~Ammo<span class="k2">(</span><span class="k2">)</span>
<span class="number">  42</span><span class="k2">{</span>
<span class="number">  43</span><span class="k2">}</span>
<span class="number">  44</span><span class="k1">void</span> Ammo::Update<span class="k2">(</span> Player <span class="k3">&amp;</span> player <span class="k2">)</span>
<span class="number">  45</span><span class="k2">{</span>
<span class="number">  46</span>  <span class="c">//if ( !bFired )</span>
<span class="number">  47</span>  <span class="c">//{</span>
<span class="number">  48</span>  <span class="c">//  x = player.x;</span>
<span class="number">  49</span>  <span class="c">//  y = player.y;</span>
<span class="number">  50</span>  <span class="c">//  xVel = 0.0f;</span>
<span class="number">  51</span>  <span class="c">//  yVel = 0.0f;</span>
<span class="number">  52</span>  <span class="c">//  angle = player.angle;</span>
<span class="number">  53</span>  <span class="c">//  return;</span>
<span class="number">  54</span>  <span class="c">//}</span>
<span class="number">  55</span>  <span class="c">//if ( !bActive )</span>
<span class="number">  56</span>  <span class="c">//  return;</span>
<span class="number">  57</span>  <span class="c">//xVel = vel * cos( GetRadians( angle ) );</span>
<span class="number">  58</span>  <span class="c">//yVel = vel * sin( GetRadians( angle ) );</span>
<span class="number">  59</span>  <span class="c">//x += xVel;</span>
<span class="number">  60</span>  <span class="c">//y += yVel;</span>
<span class="number">  61</span>  x <span class="k3">=</span> <span class="n">50</span><span class="k2">;</span>
<span class="number">  62</span>  y <span class="k3">=</span> <span class="n">50</span><span class="k2">;</span>
<span class="number">  63</span><span class="k2">}</span>
<span class="number">  64</span><span class="k1">void</span> Ammo::Display<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pDest <span class="k2">)</span>
<span class="number">  65</span><span class="k2">{</span>
<span class="number">  66</span>  <span class="c">//if ( !bVisible )</span>
<span class="number">  67</span>  <span class="c">//  return;</span>
<span class="number">  68</span>  <a href="http://www.allegro.cc/manual/circlefill" target="_blank"><span class="a">circlefill</span></a><span class="k2">(</span>pDest,x,y,<span class="n">20</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span><span class="k2">}</span>
<span class="number">  70</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  71</span>Weapon::Weapon<span class="k2">(</span><span class="k2">)</span>
<span class="number">  72</span><span class="k2">{</span>
<span class="number">  73</span>  maxAmmo <span class="k3">=</span> MAX_AMMO-1<span class="k2">;</span>
<span class="number">  74</span>  <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> maxAmmo<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span>
<span class="number">  75</span>  <span class="k2">{</span>
<span class="number">  76</span>    <span class="c">//ammo&lt;i&gt;;</span>
<span class="number">  77</span>  <span class="k2">}</span>
<span class="number">  78</span>  curAmmo <span class="k3">=</span> maxAmmo<span class="k2">;</span>
<span class="number">  79</span><span class="k2">}</span>
<span class="number">  80</span>Weapon::~Weapon<span class="k2">(</span><span class="k2">)</span>
<span class="number">  81</span><span class="k2">{</span>
<span class="number">  82</span>  <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> maxAmmo<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span>
<span class="number">  83</span>  <span class="k2">{</span>
<span class="number">  84</span>    <span class="c">//if ( pAmmo&lt;i&gt; )</span>
<span class="number">  85</span>    <span class="c">//  delete pAmmo&lt;i&gt;;    </span>
<span class="number">  86</span>    <span class="c">//pAmmo&lt;i&gt; = NULL;</span>
<span class="number">  87</span>  <span class="k2">}</span>
<span class="number">  88</span><span class="k2">}</span>
<span class="number">  89</span><span class="k1">void</span> Weapon::Update<span class="k2">(</span> Player <span class="k3">&amp;</span> player <span class="k2">)</span>
<span class="number">  90</span><span class="k2">{</span>
<span class="number">  91</span>  <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> maxAmmo<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span>
<span class="number">  92</span>  <span class="k2">{</span>
<span class="number">  93</span>    <span class="c">//if ( pAmmo&lt;i&gt; )</span>
<span class="number">  94</span>    <span class="c">//{</span>
<span class="number">  95</span>      ammo<span class="k3">&lt;</span>i&gt;.Update<span class="k2">(</span>player<span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>    <span class="c">//}</span>
<span class="number">  97</span>  <span class="k2">}</span>
<span class="number">  98</span><span class="k2">}</span>
<span class="number">  99</span><span class="k1">void</span> Weapon::Display<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pDest <span class="k2">)</span>
<span class="number"> 100</span><span class="k2">{</span>
<span class="number"> 101</span>  <span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>pDest <span class="k2">)</span>
<span class="number"> 102</span>    <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 103</span>  <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> maxAmmo<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span>
<span class="number"> 104</span>  <span class="k2">{</span>
<span class="number"> 105</span>    <span class="c">//if ( pAmmo&lt;i&gt; )</span>
<span class="number"> 106</span>    <span class="c">//{</span>
<span class="number"> 107</span>      ammo<span class="k3">&lt;</span>i&gt;.Display<span class="k2">(</span>pDest<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>    <span class="c">//}</span>
<span class="number"> 109</span>  <span class="k2">}</span>
<span class="number"> 110</span><span class="k2">}</span>
<span class="number"> 111</span><span class="k1">void</span> Weapon::Fire<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 112</span><span class="k2">{</span>
<span class="number"> 113</span>  <span class="k1">if</span> <span class="k2">(</span> curAmmo <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span>
<span class="number"> 114</span>  <span class="k2">{</span>
<span class="number"> 115</span>    curAmmo <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 116</span>    <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 117</span>  <span class="k2">}</span>
<span class="number"> 118</span>  <span class="k1">if</span> <span class="k2">(</span> curAmmo <span class="k3">&gt;</span> maxAmmo <span class="k2">)</span>
<span class="number"> 119</span>  <span class="k2">{</span>
<span class="number"> 120</span>    curAmmo <span class="k3">=</span> maxAmmo<span class="k2">;</span>
<span class="number"> 121</span>    <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 122</span>  <span class="k2">}</span>
<span class="number"> 123</span>  <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> maxAmmo<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span>
<span class="number"> 124</span>  <span class="k2">{</span>
<span class="number"> 125</span>    ammo<span class="k3">&lt;</span>i&gt;.bActive  <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 126</span>    ammo<span class="k3">&lt;</span>i&gt;.bFired   <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 127</span>    ammo<span class="k3">&lt;</span>i&gt;.bVisible <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 128</span>  <span class="k2">}</span>
<span class="number"> 129</span>  <span class="c">//pAmmo[curAmmo]-&gt;bActive  = true;</span>
<span class="number"> 130</span>  <span class="c">//pAmmo[curAmmo]-&gt;bFired   = true;</span>
<span class="number"> 131</span>  <span class="c">//pAmmo[curAmmo]-&gt;bVisible = true;</span>
<span class="number"> 132</span>  curAmmo--<span class="k2">;</span>
<span class="number"> 133</span><span class="k2">}</span>
<span class="number"> 134</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 135</span>Player::Player<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 136</span><span class="k2">{</span>
<span class="number"> 137</span>  x <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 138</span>  y <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 139</span>  vel <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 140</span>  xVel  <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 141</span>  yVel  <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span>
<span class="number"> 142</span>  angle <span class="k3">=</span> GetRadians<span class="k2">(</span><span class="n">0</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>  pWeapon <span class="k3">=</span> <span class="k1">new</span> Weapon<span class="k2">;</span>
<span class="number"> 144</span>  pBmp <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 145</span><span class="k2">}</span>
<span class="number"> 146</span>Player::~Player<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 147</span><span class="k2">{</span>
<span class="number"> 148</span>  <span class="k1">if</span> <span class="k2">(</span> pWeapon <span class="k2">)</span>
<span class="number"> 149</span>    <span class="k1">delete</span> pWeapon<span class="k2">;</span>
<span class="number"> 150</span>  pWeapon <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 151</span>  <span class="k1">if</span> <span class="k2">(</span> pBmp <span class="k2">)</span>
<span class="number"> 152</span>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>pBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 153</span>  pBmp <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 154</span><span class="k2">}</span>
<span class="number"> 155</span><span class="k1">void</span> Player::Display<span class="k2">(</span> <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pDest <span class="k2">)</span>
<span class="number"> 156</span><span class="k2">{</span>
<span class="number"> 157</span>  <span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>pBmp <span class="k2">)</span>
<span class="number"> 158</span>    <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 159</span>  <span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>pDest <span class="k2">)</span>
<span class="number"> 160</span>    <span class="k1">return</span><span class="k2">;</span>
<span class="number"> 161</span>  <a href="http://www.allegro.cc/manual/rotate_sprite" target="_blank"><span class="a">rotate_sprite</span></a><span class="k2">(</span>pDest,pBmp,x<span class="k3">+</span>pBmp-&gt;w<span class="k3">/</span><span class="n">2</span>,y<span class="k3">+</span>pBmp-&gt;h<span class="k3">/</span><span class="n">2</span>,<a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span>GetRadians<span class="k2">(</span>angle<span class="k3">*</span><span class="n">40</span>.<span class="n">743665</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span><span class="k2">}</span>
<span class="number"> 163</span><span class="k1">void</span> Player::Update<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 164</span><span class="k2">{</span>
<span class="number"> 165</span>  xVel <span class="k3">=</span> vel <span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span> GetRadians<span class="k2">(</span> angle <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 166</span>  yVel <span class="k3">=</span> vel <span class="k3">*</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span> GetRadians<span class="k2">(</span> angle <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 167</span>  x <span class="k3">+</span><span class="k3">=</span> xVel<span class="k2">;</span>
<span class="number"> 168</span>  y <span class="k3">+</span><span class="k3">=</span> yVel<span class="k2">;</span>
<span class="number"> 169</span>  pWeapon-&gt;ammo<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.x <span class="k3">=</span> x<span class="k2">;</span>
<span class="number"> 170</span>  pWeapon-&gt;ammo<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.y <span class="k3">=</span> y<span class="k2">;</span>
<span class="number"> 171</span>  <span class="c">//pWeapon-&gt;Update(*this);</span>
<span class="number"> 172</span>  xVel<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 173</span>  yVel<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 174</span><span class="k2">}</span>
<span class="number"> 175</span><span class="k1">void</span> Player::Fire<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number"> 176</span><span class="k2">{</span>
<span class="number"> 177</span>  pWeapon-&gt;Fire<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 178</span><span class="k2">}</span>
<span class="number"> 179</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
</div></div><p>
Main.cpp:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  2</span><span class="c">// &lt;Main.cpp&gt;</span>
<span class="number">  3</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  4</span><span class="p">#include "Shooter.h"</span>
<span class="number">  5</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  6</span><span class="k1">int</span> main<span class="k2">(</span> <span class="k1">void</span> <span class="k2">)</span>
<span class="number">  7</span><span class="k2">{</span>
<span class="number">  8</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  9</span>  InitSYS<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 11</span>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>pBmp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>,<a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>  <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>pBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>  Player <span class="k3">*</span>pLocalPlayer  <span class="k3">=</span> <span class="k1">new</span> Player<span class="k2">;</span>
<span class="number"> 14</span>  Player <span class="k3">*</span>pRemotePlayer <span class="k3">=</span> <span class="k1">new</span> Player<span class="k2">;</span>
<span class="number"> 15</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 16</span>  pLocalPlayer-&gt;x <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a> <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 17</span>  pLocalPlayer-&gt;y <span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a> <span class="k3">-</span> <span class="n">100</span><span class="k2">;</span>
<span class="number"> 18</span>  pLocalPlayer-&gt;angle <span class="k3">=</span> GetRadians<span class="k2">(</span><span class="n">0</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>  pLocalPlayer-&gt;pBmp <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">"ShipA.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 21</span>  pRemotePlayer-&gt;x <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a> <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">10</span><span class="k2">;</span>
<span class="number"> 22</span>  pRemotePlayer-&gt;y <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number"> 23</span>  pRemotePlayer-&gt;angle <span class="k3">=</span> <span class="n">0</span>.<span class="n">0f</span><span class="k2">;</span><span class="c">//GetRadians(180.0f);</span>
<span class="number"> 24</span>  pRemotePlayer-&gt;pBmp <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">"ShipB.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 26</span>  <span class="k1">while</span> <span class="k2">(</span> <span class="k1">true</span> <span class="k2">)</span>
<span class="number"> 27</span>  <span class="k2">{</span>
<span class="number"> 28</span>    <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 29</span>    <span class="k2">{</span>
<span class="number"> 30</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"> 31</span>      <span class="k2">{</span>
<span class="number"> 32</span>        <a href="http://www.allegro.cc/manual/clear_keybuf" target="_blank"><span class="a">clear_keybuf</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 34</span>      <span class="k2">}</span>
<span class="number"> 35</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_LEFT<span class="k2">]</span> <span class="k2">)</span>
<span class="number"> 36</span>      <span class="k2">{</span>
<span class="number"> 37</span>        pLocalPlayer-&gt;angle <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">5f</span><span class="k2">;</span>
<span class="number"> 38</span>      <span class="k2">}</span>
<span class="number"> 39</span>      <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span> <span class="k2">)</span>
<span class="number"> 40</span>      <span class="k2">{</span>
<span class="number"> 41</span>        pLocalPlayer-&gt;angle <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">5f</span><span class="k2">;</span>
<span class="number"> 42</span>      <span class="k2">}</span>
<span class="number"> 43</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_UP<span class="k2">]</span> <span class="k2">)</span>
<span class="number"> 44</span>      <span class="k2">{</span>
<span class="number"> 45</span>        pLocalPlayer-&gt;vel <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">01f</span><span class="k2">;</span>
<span class="number"> 46</span>      <span class="k2">}</span>
<span class="number"> 47</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_DOWN<span class="k2">]</span> <span class="k2">)</span>
<span class="number"> 48</span>      <span class="k2">{</span>
<span class="number"> 49</span>        pLocalPlayer-&gt;vel <span class="k3">-</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">01f</span><span class="k2">;</span>
<span class="number"> 50</span>      <span class="k2">}</span>
<span class="number"> 51</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_SPACE<span class="k2">]</span> <span class="k2">)</span>
<span class="number"> 52</span>      <span class="k2">{</span>
<span class="number"> 53</span>        pLocalPlayer-&gt;Fire<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 54</span>      <span class="k2">}</span>
<span class="number"> 55</span>    <span class="k2">}</span>
<span class="number"> 56</span>    pLocalPlayer-&gt;Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>    pRemotePlayer-&gt;Update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>    pLocalPlayer-&gt;Display<span class="k2">(</span>pBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>    pRemotePlayer-&gt;Display<span class="k2">(</span>pBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>    <span class="c">//pLocalPlayer-&gt;pWeapon-&gt;ammo[0].x = 50;</span>
<span class="number"> 61</span>    <span class="c">//pLocalPlayer-&gt;pWeapon-&gt;ammo[0].y = 50;</span>
<span class="number"> 62</span>    textprintf<span class="k2">(</span>pBmp,<a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,<span class="n">0</span>,  <span class="n">0</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>,<span class="s">"Player 1-&gt;Ammo: %i"</span>, pLocalPlayer-&gt;pWeapon-&gt;curAmmo<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 63</span>    textprintf<span class="k2">(</span>pBmp,<a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,<span class="n">0</span>, <span class="n">10</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>,<span class="s">"Player 1-&gt;Ammo-&gt;x: %d"</span>,
<span class="number"> 64</span>             pLocalPlayer-&gt;pWeapon-&gt;ammo<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.x<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 65</span>    textprintf<span class="k2">(</span>pBmp,<a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,<span class="n">0</span>, <span class="n">20</span>,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>,<span class="s">"Player 1-&gt;Ammo-&gt;y: %d"</span>,
<span class="number"> 66</span>             pLocalPlayer-&gt;pWeapon-&gt;ammo<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 67</span>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>pBmp,<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>,pBmp-&gt;w,pBmp-&gt;h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 68</span>    <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>pBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 69</span>  <span class="k2">}</span>
<span class="number"> 70</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 71</span>  <span class="k1">delete</span> pLocalPlayer<span class="k2">;</span>
<span class="number"> 72</span>  <span class="k1">delete</span> pRemotePlayer<span class="k2">;</span>
<span class="number"> 73</span>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>pBmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 74</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 75</span>  <span class="c">//////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number"> 76</span><span class="k2">}</span>
<span class="number"> 77</span><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span>
<span class="number"> 78</span><span class="c">//////////////////////////////////////////////////////////////////////////////////////////////////</span>
</div></div><p>

When I run the program, I see the two ships...like I should. I can move them around...like I should. I can &quot;fire&quot; the weapon because it allows me to see the ammo count going down. ammo[x] should be valid, but will not change! Don&#039;t mind all of those pesky // everywhere...still trying to track down the bug.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Don Freeman)</author>
		<pubDate>Tue, 14 Feb 2006 18:41:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think it&#39;s a bit unfair to let us look through all your source. You should play around with your debugger, adding in-code logging messages and reduce the code to the minimum part that causes you problems.</p><p>AFTER THAT you can post here! And please a bit more specific than &quot;the ammo is not being changed! It is staying at 0.&quot;</p><p>Sorry if I am too harsh.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Faerber)</author>
		<pubDate>Tue, 14 Feb 2006 19:21:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And use TRACE to trace the execution
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Niunio)</author>
		<pubDate>Tue, 14 Feb 2006 19:24:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I HAVE tryed to find the bug! I&#39;m not one to just post as soon as I run into problems...I would like to find this on my own, but I can&#39;t seem to think of a reason that would make it act the way it is!</p><p>To be more specific:<br />1. Player class is created in main AFTER allegro is initialized, because it holds BITMAP data.<br />2. Player class creates the Weapon class.<br />3. The Weapon class creates an array of Ammo class.<br />4. The Player class is manipulated in main to allow the user to &quot;fly&quot; around and &quot;fire&quot; it&#39;s weapons.<br />5. The Player class delegates the Update function to Weapon who delegates to Ammo.<br />6. The Player class delegates the Fire function to Weapon who delegates to Ammo.</p><p>All seems to work just fine. The Player class contains valid data. The Weapons class contains valid data. The Ammo class contains valid data. It acts as though Weapon-&gt;Update(...) and / or Weapon-&gt;Fire(...) are not calling Ammo&#39;s functions. So, to rule this out, I tryed to just manually set the values in main....still, ammo-&gt;x, ammo-&gt;y are set to 0...even thought I manually set them to 50 with:
</p><div class="source-code snippet"><div class="inner"><pre>pLocalPlayer-&gt;pWeapon-&gt;ammo<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>x <span class="k3">=</span> <span class="n">50</span>.<span class="n">0f</span><span class="k2">;</span>
pLocalPlayer-&gt;pWeapon-&gt;ammo<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>y <span class="k3">=</span> <span class="n">50</span>.<span class="n">0f</span><span class="k2">;</span>
</pre></div></div><p>

This may have been cut out of the above code...as I am still trying to solve this. I keep changing the code around to minimize the possible flaws...but I can&#39;t seem to think of WHY it is acting this way anyway! I mean, if ammo[0] is valid, pWeapon is valid, and pLocalPlayer is valid....then calling: pLocalPlayer-&gt;pWeapon-&gt;ammo[0]-&gt;x = 50.0f should actually set ammo[0]-&gt;x to 50.0f! But when I go to retreive the values of these...I get 0!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Don Freeman)</author>
		<pubDate>Tue, 14 Feb 2006 19:36:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
the ammo is not being changed! It is staying at 0
</p></div></div><p>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
it allows me to see the ammo count going down.
</p></div></div><p>
You seem to be confused.
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
ammo[x] should be valid, but will not change!
</p></div></div><p>
staying at 0, going down, or no change?</p><p>One advice: set MAX_AMMO at 1, and fix until it works with one bullet.</p><p>The most I can comment is:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>Ammo ammo<span class="k2">[</span>MAX_AMMO<span class="k2">]</span><span class="k2">;</span> <span class="c">// OK, valid indices are 0 to MAX_AMMO - 1</span></td></tr><tr><td class="number">2</td><td><span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">3</td><td>maxAmmo <span class="k3">=</span> MAX_AMMO-1<span class="k2">;</span> <span class="c">// OK, maxAmmo points to the top of your array</span></td></tr><tr><td class="number">4</td><td><span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">5</td><td>curAmmo <span class="k3">=</span> maxAmmo<span class="k2">;</span> <span class="c">// OK, curAmmo points to the top of the array too</span></td></tr><tr><td class="number">6</td><td><span class="c">// I assume value -1 is for "too many shots in air to shoot now", and 0 to maxAmmo for 'the next bullet to shoot'</span></td></tr><tr><td class="number">7</td><td><span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">8</td><td><span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> maxAmmo<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span> <span class="c">// these " i &lt; maxAmmo" are ALL off by one, you should check i &lt;= maxAmmo</span></td></tr><tr><td class="number">9</td><td><span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">10</td><td><span class="c">// in void Weapon::Fire( void )</span></td></tr><tr><td class="number">11</td><td><span class="k1">if</span> <span class="k2">(</span> curAmmo <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">12</td><td><span class="k2">{</span></td></tr><tr><td class="number">13</td><td>    curAmmo <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>  <span class="c">// is wrong: you're "recycling" ammo[0] for no reason! just don't shoot : return.</span></td></tr><tr><td class="number">14</td><td>    <span class="k1">return</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k2">}</span></td></tr><tr><td class="number">16</td><td><span class="k2">(</span>...<span class="k2">)</span></td></tr><tr><td class="number">17</td><td><span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> maxAmmo<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">18</td><td><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>    ammo<span class="k3">&lt;</span>i&gt;.bActive  <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    ammo<span class="k3">&lt;</span>i&gt;.bFired   <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    ammo<span class="k3">&lt;</span>i&gt;.bVisible <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td><span class="k2">}</span> <span class="c">// this is all wrong, I hope this is for "debugging"</span></td></tr><tr><td class="number">23</td><td><span class="c">//pAmmo[curAmmo]-&gt;bActive  = true;</span></td></tr><tr><td class="number">24</td><td><span class="c">//pAmmo[curAmmo]-&gt;bFired   = true; // this is the part to keep</span></td></tr><tr><td class="number">25</td><td><span class="c">//pAmmo[curAmmo]-&gt;bVisible = true; // but don't forget the x, y etc.</span></td></tr><tr><td class="number">26</td><td>curAmmo--<span class="k2">;</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Tue, 14 Feb 2006 19:39:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah...there is ALOT of debugging crap in that code! And I am just using one of Ammo class...pLocalPlayer-&gt;pWeapon-&gt;ammo[0] to be exact!</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Quote:<br />the ammo is not being changed! It is staying at 0</p><p>Quote:<br />it allows me to see the ammo count going down.<br />You seem to be confused.</p><p>Quote:<br />ammo[x] should be valid, but will not change!<br />staying at 0, going down, or no change?
</p></div></div><p>

No...I&#39;m not confused by WHAT is not changing! ammo count is in weapon...which IS changing! The problem I am having is with ammo. I ran the debugger...which sucks (MSVC 6), and I see that ammo[?]-&gt;x and ammo[?]-&gt;y are jumping all over the place...but in the when the code is ran...it is just 0. Confusing. I may just scrap this and start again...looks like some evil little voodoo spirit has corrupted this beast! It&#39;s just frustrating that it should NOT be acting like this....even the debugger shows that all data structures are VALID!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Don Freeman)</author>
		<pubDate>Tue, 14 Feb 2006 19:55:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I see that ammo[?]-&gt;x and ammo[?]-&gt;y are jumping all over the place...but in the when the code is ran...it is just 0.
</p></div></div><p>
Most likely memory corruption in your code, a bit too typical in pointer-oriented C code. Maybe using C++, STL and proper interfaces would help?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Fladimir da Gorf)</author>
		<pubDate>Tue, 14 Feb 2006 20:57:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
there is ALOT of debugging crap in that code
</p></div></div><p>
Well, I can&#39;t tell what is INTENDED to be debugging crap from what is the cause of your bug - honestly, it&#39;s truly hard to guess what you voluntarily cut, from  what was already missing <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" /><br />I&#39;m pretty sure it would be much more helpful to provide the code &#39;that should work perfectly&#39;. Extra printf&#39;s hurt only if you really botch them, but here you really mutilated the behaviour of your Ammo class...<br />For example, you try to hard-code x = y = 50 for ammo, but it&#39;s in Ammo::Update, which is called by Weapon::Update, which is never called... You commented out that part too.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Tue, 14 Feb 2006 21:13:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok...I&#39;ve got this worked out now! Thanks all that helped... Sorry about all the crappy code I posted...was hard to tell what was suppose to be there, since I was trying to pick away at areas I thought could cause the problem. Was something stupid and quickly overlooked...even in the debugger. It was showing int values instead of float...that&#39;s why it looked so confusing. The ammo&#39;s Display(...) function was never being called...</p><p>Anyway, if anyone is interested in seeing this demo so far...it&#39;s attached. It is a windows app. It includes the GFX and SFX that it needs to play. Has some bg music, some cheesy fire sounds, engine humm....blah blah blah. It is going to be my test engine for real time network play...the source is changing drastically, but is coming along quite nicely though! <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Don Freeman)</author>
		<pubDate>Thu, 16 Feb 2006 02:48:39 +0000</pubDate>
	</item>
</rss>
