<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>sliding puck - air hockey game</title>
		<link>http://www.allegro.cc/forums/view/591687</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 05 Jun 2007 02:12:25 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How do i get a puck to slide across the screen?<br />How do i do the rebounds off of walls<br />how do i get it to go in the goal because there isnt a hole in the white bounding box?</p><p>here is my source please show what you mena if making a suggestion thanks a lot!
</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">/* RULES:</span>
<span class="number">   2</span><span class="c">Get the puck into the other players goal,</span>
<span class="number">   3</span><span class="c">the winner is the person with the most goals</span>
<span class="number">   4</span><span class="c">You Cant Leave your half of the field</span>
<span class="number">   5</span><span class="c"></span>
<span class="number">   6</span><span class="c"> */</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="p">#include &lt;allegro.h&gt;</span>
<span class="number">   9</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">  10</span>
<span class="number">  11</span><span class="k1">int</span> p1_x <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span> <span class="c">/* sets the position of the O sign of playerone(x-axis) */</span>
<span class="number">  12</span><span class="k1">int</span> p1_y <span class="k3">=</span> <span class="n">260</span><span class="k2">;</span> <span class="c">/*(y-axis)*/</span>
<span class="number">  13</span>
<span class="number">  14</span><span class="k1">int</span> width_p1 <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span>   <span class="c">/* how wide the p1's and p2's cursor is*/</span>
<span class="number">  15</span><span class="k1">int</span> height_p1 <span class="k3">=</span> <span class="n">6</span><span class="k2">;</span>  <span class="c">/* how hugh the p1's and p2's cursor is*/</span>
<span class="number">  16</span><span class="k1">int</span> width_p <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  17</span><span class="k1">int</span> height_p <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
<span class="number">  18</span>
<span class="number">  19</span><span class="k1">int</span> p1_bb_L <span class="k3">=</span> p1_x<span class="k2">;</span>  <span class="c">/*bb is bounding boox*/</span>
<span class="number">  20</span><span class="k1">int</span> p1_bb_R <span class="k3">=</span><span class="k2">(</span>p1_bb_L<span class="k3">+</span>width_p1<span class="k2">)</span><span class="k2">;</span> <span class="c">/*the right side is just a width away from the left so if we add width we have the right side*/</span>
<span class="number">  21</span><span class="k1">int</span> p1_bb_T <span class="k3">=</span> p1_y<span class="k2">;</span>
<span class="number">  22</span><span class="k1">int</span> p1_bb_B <span class="k3">=</span><span class="k2">(</span>p1_y<span class="k3">+</span>height_p1<span class="k2">)</span><span class="k2">;</span>   <span class="c">/* the same but for bottom and top*/</span>
<span class="number">  23</span>
<span class="number">  24</span><span class="k1">int</span> p2_x <span class="k3">=</span> <span class="n">530</span><span class="k2">;</span> <span class="c">/* playertwo*/</span>
<span class="number">  25</span><span class="k1">int</span> p2_y <span class="k3">=</span> <span class="n">255</span><span class="k2">;</span>
<span class="number">  26</span>
<span class="number">  27</span><span class="k1">int</span> p2_bb_L <span class="k3">=</span> p2_x<span class="k2">;</span>
<span class="number">  28</span><span class="k1">int</span> p2_bb_T <span class="k3">=</span> p2_y<span class="k2">;</span>
<span class="number">  29</span><span class="k1">int</span> p2_bb_R <span class="k3">=</span> p2_x <span class="k3">+</span> width_p1<span class="k2">;</span>
<span class="number">  30</span><span class="k1">int</span> p2_bb_B <span class="k3">=</span> p2_y <span class="k3">+</span> height_p1<span class="k2">;</span>
<span class="number">  31</span>
<span class="number">  32</span><span class="k1">int</span> outside_bb_left <span class="k3">=</span> <span class="n">60</span><span class="k2">;</span><span class="c">/* playing field boundong box*/</span>
<span class="number">  33</span><span class="k1">int</span> outside_bb_up <span class="k3">=</span> <span class="n">120</span><span class="k2">;</span>
<span class="number">  34</span><span class="k1">int</span> outside_bb_down <span class="k3">=</span> <span class="n">400</span><span class="k2">;</span>
<span class="number">  35</span><span class="k1">int</span> outside_bb_right <span class="k3">=</span> <span class="n">575</span><span class="k2">;</span>
<span class="number">  36</span><span class="k1">int</span> middle_line <span class="k3">=</span> <span class="n">322</span><span class="k2">;</span>
<span class="number">  37</span>
<span class="number">  38</span><span class="k1">int</span> puck_x <span class="k3">=</span> <span class="n">140</span><span class="k2">;</span>
<span class="number">  39</span><span class="k1">int</span> puck_y <span class="k3">=</span> <span class="n">250</span><span class="k2">;</span>
<span class="number">  40</span>
<span class="number">  41</span><span class="k1">int</span> puck_left<span class="k3">=</span>puck_x<span class="k2">;</span>  <span class="c">/* puck bounding box*/</span>
<span class="number">  42</span><span class="k1">int</span> puck_up<span class="k3">=</span>puck_y<span class="k2">;</span>
<span class="number">  43</span><span class="k1">int</span> puck_right<span class="k3">=</span>puck_x<span class="k3">+</span>width_p<span class="k2">;</span>
<span class="number">  44</span><span class="k1">int</span> puck_down<span class="k3">=</span>puck_y<span class="k3">+</span>height_p<span class="k2">;</span>
<span class="number">  45</span>
<span class="number">  46</span>
<span class="number">  47</span><span class="k1">void</span> puck<span class="k2">(</span><span class="k1">int</span> puck_left, <span class="k1">int</span> puck_up, <span class="k1">int</span> puck_right, <span class="k1">int</span> puck_down, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">)</span><span class="k2">{</span>
<span class="number">  48</span>  
<span class="number">  49</span>  <a href="http://www.allegro.cc/manual/rectfill" target="_blank"><span class="a">rectfill</span></a><span class="k2">(</span> buffer, puck_left , puck_up, puck_right, puck_down, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">255</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span><span class="c">/* puck*/</span>
<span class="number">  50</span>  
<span class="number">  51</span><span class="k2">}</span>
<span class="number">  52</span>
<span class="number">  53</span>
<span class="number">  54</span>
<span class="number">  55</span><span class="k1">void</span> playerone<span class="k2">(</span><span class="k1">int</span> p1_x, <span class="k1">int</span> p1_y, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">)</span><span class="k2">{</span>
<span class="number">  56</span>  
<span class="number">  57</span>  <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span> buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"O"</span>, p1_x, p1_y, <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">0</span>, <span class="n">0</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</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="k2">;</span>
<span class="number">  58</span>  <span class="c">/* makes a '+' sign and sets the colour as white and to start where x and y are set*/</span>
<span class="number">  59</span>  <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span> buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"O"</span>, p1_x, p1_y, <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">0</span>, <span class="n">0</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</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="k2">;</span>
<span class="number">  60</span>  <span class="c">/* create player one's cursor and make him red*/</span>
<span class="number">  61</span><span class="k2">}</span>
<span class="number">  62</span><span class="k1">void</span> playertwo<span class="k2">(</span><span class="k1">int</span> p2_x, <span class="k1">int</span> p2_y, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">)</span><span class="k2">{</span>
<span class="number">  63</span>  
<span class="number">  64</span>  
<span class="number">  65</span>  
<span class="number">  66</span>  <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"O"</span>, p2_x,p2_y , <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</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="k2">;</span>
<span class="number">  67</span>  <span class="c">/* create player two's cursor and make him blue*/</span>
<span class="number">  68</span>  <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"O"</span>, p2_x, p2_y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</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="k2">;</span>
<span class="number">  69</span><span class="k2">}</span>
<span class="number">  70</span>
<span class="number">  71</span>
<span class="number">  72</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  73</span>
<span class="number">  74</span><span class="k2">{</span>
<span class="number">  75</span>  
<span class="number">  76</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">  77</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">  78</span>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span> GFX_AUTODETECT, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>  
<span class="number">  80</span>  <span class="c">/* makes a '+' sign and sets the colour as white and to go where x and y are set*/</span>
<span class="number">  81</span>  
<span class="number">  82</span>  
<span class="number">  83</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="k2">{</span>
<span class="number">  84</span>    
<span class="number">  85</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">  86</span>    
<span class="number">  87</span>    
<span class="number">  88</span>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer <span class="k3">=</span> NULL<span class="k2">;</span><span class="c">/* Declare a BITMAP called buffer.*/</span>
<span class="number">  89</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><span class="n">640</span>,<span class="n">480</span><span class="k2">)</span><span class="k2">;</span> <span class="c">/*Create an empty bitmap the size of the screen*/</span>
<span class="number">  90</span>    
<span class="number">  91</span>    <a href="http://www.allegro.cc/manual/textout_centre_ex" target="_blank"><span class="a">textout_centre_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,<span class="s">"Air Hockey"</span> , <span class="n">320</span>, <span class="n">100</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">0</span>, <span class="n">255</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>    
<span class="number">  93</span>    <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span> buffer, <span class="n">60</span>, <span class="n">120</span>, <span class="n">580</span>, <span class="n">400</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="c">/*playing field*/</span>
<span class="number">  94</span>    <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span> buffer, <span class="n">40</span>, <span class="n">230</span>, <span class="n">60</span>, <span class="n">290</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">0</span>, <span class="n">255</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">/*player one's net to defend*/</span>
<span class="number">  95</span>    <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span> buffer, <span class="n">580</span>, <span class="n">230</span>, <span class="n">600</span>, <span class="n">290</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">255</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>   <span class="c">/*player two's net to defend*/</span>
<span class="number">  96</span>    <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">(</span> buffer, <span class="n">320</span>, <span class="n">120</span>, <span class="n">320</span>, <span class="n">400</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="c">/*half way line*/</span>
<span class="number">  97</span>    <a href="http://www.allegro.cc/manual/circle" target="_blank"><span class="a">circle</span></a><span class="k2">(</span>buffer, <span class="n">320</span>, <span class="n">260</span>, <span class="n">75</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="c">/*center circle*/</span>
<span class="number">  98</span>    <span class="c">/* makes the playing surface*/</span>
<span class="number">  99</span>    <span class="c">/* notice that all this is being drawn to the buffer to stop flickering*/</span>
<span class="number"> 100</span>    
<span class="number"> 101</span>    
<span class="number"> 102</span>    playerone<span class="k2">(</span>p1_x,p1_y,buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 103</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_W<span class="k2">]</span><span class="k2">)</span> p1_y-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_T-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_B--<span class="k2">;</span>  <span class="c">/*up when you press up*/</span>
<span class="number"> 104</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_S<span class="k2">]</span><span class="k2">)</span> p1_y<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_T<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_B<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>  <span class="c">/*down when you press down*/</span>
<span class="number"> 105</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_D<span class="k2">]</span><span class="k2">)</span> p1_x<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_R<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_L<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>  <span class="c">/*right wehn you press right*/</span>
<span class="number"> 106</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_A<span class="k2">]</span><span class="k2">)</span> p1_x-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_R-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_L--<span class="k2">;</span>  <span class="c">/*left when you press ledft*/</span>
<span class="number"> 107</span>      
<span class="number"> 108</span>    <span class="c">/* stops playerone leaving the playing field*/</span>
<span class="number"> 109</span>    
<span class="number"> 110</span>    
<span class="number"> 111</span>    <span class="k1">if</span> <span class="k2">(</span>p1_bb_L<span class="k3">=</span><span class="k3">=</span>outside_bb_left<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 112</span>      p1_bb_L<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_R<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_x<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 113</span>    <span class="k2">}</span>
<span class="number"> 114</span>    <span class="k1">if</span> <span class="k2">(</span>p1_bb_T<span class="k3">=</span><span class="k3">=</span>outside_bb_up<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 115</span>      p1_bb_T<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_B<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_y<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 116</span>    <span class="k2">}</span>
<span class="number"> 117</span>    <span class="k1">if</span> <span class="k2">(</span>p1_bb_B<span class="k3">=</span><span class="k3">=</span>outside_bb_down<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 118</span>      p1_bb_T-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_B-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_y--<span class="k2">;</span>
<span class="number"> 119</span>    <span class="k2">}</span>
<span class="number"> 120</span>    <span class="k1">if</span> <span class="k2">(</span>p1_bb_R<span class="k3">=</span><span class="k3">=</span>middle_line<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 121</span>      p1_bb_L-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_R-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_x--<span class="k2">;</span>
<span class="number"> 122</span>    <span class="k2">}</span>
<span class="number"> 123</span>    
<span class="number"> 124</span>    
<span class="number"> 125</span>    
<span class="number"> 126</span>    
<span class="number"> 127</span>    playertwo<span class="k2">(</span>p2_x,p2_y,buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 128</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> p2_y-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_B-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_T--<span class="k2">;</span>      <span class="c">/*up when you press up*/</span>
<span class="number"> 129</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> p2_y<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_B<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_T<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>    <span class="c">/*down when you press down*/</span>
<span class="number"> 130</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> p2_x<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_L<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_R<span class="k3">+</span><span class="k3">+</span> <span class="k2">;</span>   <span class="c">/*right wehn you press right*/</span>
<span class="number"> 131</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> p2_x-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_L-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_R--<span class="k2">;</span>    <span class="c">/*left when you press ledft*/</span>
<span class="number"> 132</span>      
<span class="number"> 133</span>    <span class="c">/* stops playertwo leaving the playing field*/</span>
<span class="number"> 134</span>    
<span class="number"> 135</span>    <span class="k1">if</span> <span class="k2">(</span>p2_bb_L<span class="k3">=</span><span class="k3">=</span>outside_bb_right<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 136</span>      p2_bb_L-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_R-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_x--<span class="k2">;</span>
<span class="number"> 137</span>    <span class="k2">}</span>
<span class="number"> 138</span>    <span class="k1">if</span> <span class="k2">(</span>p2_bb_T<span class="k3">=</span><span class="k3">=</span>outside_bb_up<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 139</span>      p2_bb_T<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_B<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_y<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 140</span>    <span class="k2">}</span>
<span class="number"> 141</span>    <span class="k1">if</span> <span class="k2">(</span>p2_bb_B<span class="k3">=</span><span class="k3">=</span>outside_bb_down<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 142</span>      p2_bb_T-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_B-- <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_y--<span class="k2">;</span>
<span class="number"> 143</span>    <span class="k2">}</span>
<span class="number"> 144</span>    <span class="k1">if</span> <span class="k2">(</span>p2_bb_R<span class="k3">=</span><span class="k3">=</span>middle_line<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 145</span>      p2_bb_L<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_R<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_x<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 146</span>    <span class="k2">}</span>
<span class="number"> 147</span>    
<span class="number"> 148</span>    
<span class="number"> 149</span>    
<span class="number"> 150</span>    
<span class="number"> 151</span>    puck<span class="k2">(</span>puck_left,puck_up,puck_right,puck_down,buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 152</span>    <span class="c">/* attempts to make the puck move when hit*/</span>
<span class="number"> 153</span>    
<span class="number"> 154</span>    
<span class="number"> 155</span>    <span class="c">/* this makes sure the puck doesn't leave the playing field*/</span>
<span class="number"> 156</span>    <span class="k1">if</span> <span class="k2">(</span>puck_right<span class="k3">=</span><span class="k3">=</span>outside_bb_right<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 157</span>      puck_left--<span class="k3">&amp;</span><span class="k3">&amp;</span>puck_right--<span class="k2">;</span>
<span class="number"> 158</span>    <span class="k2">}</span>
<span class="number"> 159</span>    
<span class="number"> 160</span>    <span class="k1">if</span> <span class="k2">(</span>puck_left<span class="k3">=</span><span class="k3">=</span>outside_bb_left<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 161</span>      puck_left<span class="k3">+</span><span class="k3">+</span><span class="k3">&amp;</span><span class="k3">&amp;</span>puck_right<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 162</span>    <span class="k2">}</span>
<span class="number"> 163</span>    
<span class="number"> 164</span>    <span class="k1">if</span> <span class="k2">(</span>puck_up<span class="k3">=</span><span class="k3">=</span>outside_bb_up<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 165</span>      puck_up<span class="k3">+</span><span class="k3">+</span><span class="k3">&amp;</span><span class="k3">&amp;</span>puck_down<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 166</span>    <span class="k2">}</span>
<span class="number"> 167</span>    
<span class="number"> 168</span>    <span class="k1">if</span> <span class="k2">(</span>puck_down<span class="k3">=</span><span class="k3">=</span>outside_bb_down<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 169</span>      puck_up--<span class="k3">&amp;</span><span class="k3">&amp;</span>puck_down--<span class="k2">;</span>
<span class="number"> 170</span>    <span class="k2">}</span>
<span class="number"> 171</span>    
<span class="number"> 172</span>    <span class="c">/*COLLISION &lt;--- RIGHT HERE*/</span>
<span class="number"> 173</span>    <span class="c">/*playerone and the puck*/</span>
<span class="number"> 174</span>    <span class="k1">if</span> <span class="k2">(</span>
<span class="number"> 175</span>      <span class="k2">(</span> p1_bb_L <span class="k3">&lt;</span><span class="k3">=</span> puck_left <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_R <span class="k3">=</span><span class="k3">=</span> puck_left<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 176</span>      <span class="k2">(</span> p1_bb_T <span class="k3">&gt;</span><span class="k3">=</span> puck_up <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_B <span class="k3">&lt;</span><span class="k3">=</span>puck_down<span class="k2">)</span>
<span class="number"> 177</span>    <span class="k2">)</span>
<span class="number"> 178</span>    <span class="k2">{</span>
<span class="number"> 179</span>      puck_left<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck_right<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 180</span>    <span class="k2">}</span>
<span class="number"> 181</span>    
<span class="number"> 182</span>    <span class="k1">if</span> <span class="k2">(</span>
<span class="number"> 183</span>      <span class="k2">(</span>p1_bb_R <span class="k3">&gt;</span><span class="k3">=</span> puck_right <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_L <span class="k3">=</span><span class="k3">=</span> puck_right<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 184</span>      <span class="k2">(</span>p1_bb_T <span class="k3">&gt;</span><span class="k3">=</span> puck_up <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_B <span class="k3">&lt;</span><span class="k3">=</span> puck_down<span class="k2">)</span>
<span class="number"> 185</span>    <span class="k2">)</span>
<span class="number"> 186</span>    <span class="k2">{</span>
<span class="number"> 187</span>      puck_left-- <span class="k3">&amp;</span><span class="k3">&amp;</span> puck_right--<span class="k2">;</span>
<span class="number"> 188</span>    <span class="k2">}</span>
<span class="number"> 189</span>    
<span class="number"> 190</span>    <span class="k1">if</span> <span class="k2">(</span>
<span class="number"> 191</span>      <span class="k2">(</span>p1_bb_T <span class="k3">&lt;</span><span class="k3">=</span> puck_up <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_B <span class="k3">=</span><span class="k3">=</span> puck_up<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 192</span>      <span class="k2">(</span>p1_bb_L <span class="k3">&gt;</span><span class="k3">=</span> puck_left <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_R <span class="k3">&lt;</span><span class="k3">=</span> puck_right<span class="k2">)</span>
<span class="number"> 193</span>    <span class="k2">)</span>
<span class="number"> 194</span>    <span class="k2">{</span>
<span class="number"> 195</span>      puck_up<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck_down<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 196</span>    <span class="k2">}</span>
<span class="number"> 197</span>    
<span class="number"> 198</span>    <span class="k1">if</span> <span class="k2">(</span>
<span class="number"> 199</span>      <span class="k2">(</span>p1_bb_T <span class="k3">&gt;</span><span class="k3">=</span> puck_up <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_T <span class="k3">=</span><span class="k3">=</span> puck_down<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 200</span>      <span class="k2">(</span>p1_bb_L <span class="k3">&gt;</span><span class="k3">=</span> puck_left <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_R <span class="k3">&lt;</span><span class="k3">=</span> puck_right<span class="k2">)</span>
<span class="number"> 201</span>    <span class="k2">)</span>
<span class="number"> 202</span>    <span class="k2">{</span>
<span class="number"> 203</span>      puck_up-- <span class="k3">&amp;</span><span class="k3">&amp;</span> puck_down--<span class="k2">;</span>
<span class="number"> 204</span>    <span class="k2">}</span>
<span class="number"> 205</span>    <span class="c">/*playertwo and the puck*/</span>
<span class="number"> 206</span>    
<span class="number"> 207</span>    <span class="k1">if</span> <span class="k2">(</span>
<span class="number"> 208</span>      <span class="k2">(</span> p2_bb_L <span class="k3">&lt;</span><span class="k3">=</span> puck_left <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_R <span class="k3">=</span><span class="k3">=</span> puck_left<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 209</span>      <span class="k2">(</span> p2_bb_T <span class="k3">&gt;</span><span class="k3">=</span> puck_up <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_B <span class="k3">&lt;</span><span class="k3">=</span>puck_down<span class="k2">)</span>
<span class="number"> 210</span>    <span class="k2">)</span>
<span class="number"> 211</span>    <span class="k2">{</span>
<span class="number"> 212</span>      puck_left<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck_right<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 213</span>    <span class="k2">}</span>
<span class="number"> 214</span>    
<span class="number"> 215</span>    <span class="k1">if</span> <span class="k2">(</span>
<span class="number"> 216</span>      <span class="k2">(</span>p2_bb_R <span class="k3">&gt;</span><span class="k3">=</span> puck_right <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_L <span class="k3">=</span><span class="k3">=</span> puck_right<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 217</span>      <span class="k2">(</span>p2_bb_T <span class="k3">&gt;</span><span class="k3">=</span> puck_up <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_B <span class="k3">&lt;</span><span class="k3">=</span> puck_down<span class="k2">)</span>
<span class="number"> 218</span>    <span class="k2">)</span>
<span class="number"> 219</span>    <span class="k2">{</span>
<span class="number"> 220</span>      puck_left-- <span class="k3">&amp;</span><span class="k3">&amp;</span> puck_right--<span class="k2">;</span>
<span class="number"> 221</span>    <span class="k2">}</span>
<span class="number"> 222</span>    
<span class="number"> 223</span>    <span class="k1">if</span> <span class="k2">(</span>
<span class="number"> 224</span>      <span class="k2">(</span>p2_bb_T <span class="k3">&lt;</span><span class="k3">=</span> puck_up <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_B <span class="k3">=</span><span class="k3">=</span> puck_up<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 225</span>      <span class="k2">(</span>p2_bb_L <span class="k3">&gt;</span><span class="k3">=</span> puck_left <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_R <span class="k3">&lt;</span><span class="k3">=</span> puck_right<span class="k2">)</span>
<span class="number"> 226</span>    <span class="k2">)</span>
<span class="number"> 227</span>    <span class="k2">{</span>
<span class="number"> 228</span>      puck_up<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck_down<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 229</span>    <span class="k2">}</span>
<span class="number"> 230</span>    
<span class="number"> 231</span>    <span class="k1">if</span> <span class="k2">(</span>
<span class="number"> 232</span>      <span class="k2">(</span>p2_bb_T <span class="k3">&gt;</span><span class="k3">=</span> puck_up <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_T <span class="k3">=</span><span class="k3">=</span> puck_down<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
<span class="number"> 233</span>      <span class="k2">(</span>p2_bb_L <span class="k3">&gt;</span><span class="k3">=</span> puck_left <span class="k3">&amp;</span><span class="k3">&amp;</span> p2_bb_R <span class="k3">&lt;</span><span class="k3">=</span> puck_right<span class="k2">)</span>
<span class="number"> 234</span>    <span class="k2">)</span>
<span class="number"> 235</span>    <span class="k2">{</span>
<span class="number"> 236</span>      puck_up-- <span class="k3">&amp;</span><span class="k3">&amp;</span> puck_down--<span class="k2">;</span>
<span class="number"> 237</span>    <span class="k2">}</span>
<span class="number"> 238</span>    
<span class="number"> 239</span>    <span class="c">/* SHOULD move the puck left and right and up and down when pushed*/</span>
<span class="number"> 240</span>    <span class="c">/*END OF COLLISION*/</span>
<span class="number"> 241</span>    
<span class="number"> 242</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>,<span class="n">640</span>,<span class="n">480</span><span class="k2">)</span><span class="k2">;</span><span class="c">/*Draw the buffer to the screen*/</span>
<span class="number"> 243</span>    clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span><span class="c">//Clear the buffer</span>
<span class="number"> 244</span>    
<span class="number"> 245</span>    <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">15</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 246</span>    
<span class="number"> 247</span>  <span class="k2">}</span>
<span class="number"> 248</span>  
<span class="number"> 249</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 250</span>  
<span class="number"> 251</span><span class="k2">}</span>
<span class="number"> 252</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>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (zavirax)</author>
		<pubDate>Fri, 01 Jun 2007 21:53:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
How do i get a puck to slide across the screen?
</p></div></div><p>

Create x-velocity and y-velocity values, then add these to the puck&#39;s position each iteration of the loop.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
How do i do the rebounds off of walls
</p></div></div><p>

If the puck hits the left or right wall, reverse the x-velocity. if it hits the top or bottom wall, reverse the y-velocity.</p><p>edit:  You&#39;re creating the <tt>buffer</tt> BITMAP every time your loop runs. Just create it once, before the loop.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Fri, 01 Jun 2007 22:02:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
{<br />puck_up++ &amp;&amp; puck_down++;<br />}
</p></div></div><p>
And what the fairy-tale is that supposed to do? You do realize that &amp;&amp; is a logical-and operator? The above statement does the following:<br />1. Increase puck_up by 1.<br />2. Check if puck_up is zero; if so, exit, else, continue.<br />3. Increase puck_down by 1.<br />4. Check if puck_down is zero; if so, evaluate to false, else to true.<br />5. Throw away the result of the comparison made in 4.<br />So effectively, if puck_up is -1, it increases only puck_up, otherwise it increases both puck_up and puck_down.</p><p>Then, learn what structs are and how to use them. For example, both player paddles essentially do the same thing, so they can both be of the same struct type, like this (assuming C++):
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">struct</span> PADDLE <span class="k2">{</span>
  <span class="k1">int</span> x<span class="k2">;</span>
  <span class="k1">int</span> y<span class="k2">;</span>
  <span class="k1">int</span> w<span class="k2">;</span>
  <span class="k1">int</span> h<span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>

PADDLE player<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
  <span class="k2">{</span> <span class="n">100</span>, <span class="n">100</span>, <span class="n">10</span>, <span class="n">10</span> <span class="k2">}</span>, <span class="c">// player 1</span>
  <span class="k2">{</span> <span class="n">100</span>, <span class="n">500</span>, <span class="n">10</span>, <span class="n">10</span> <span class="k2">}</span>  <span class="c">// player 2</span>
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>

Please learn some C/C++. Pick up a good (e-)book. There are even very good free ones, such as <a href="http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html">this one</a>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Fri, 01 Jun 2007 23:14:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
1. Increase puck_up by 1.<br />2. Check if puck_up is zero; if so, exit, else, continue.<br />3. Increase puck_down by 1.<br />4. Check if puck_down is zero; if so, evaluate to false, else to true.<br />5. Throw away the result of the comparison made in 4.
</p></div></div><p>

No.</p><p>1. Check if puck_up is zero<br />2. Increase puck_up by 1<br />3. Exit if puck_up was zero when 1 was executed, even if it isn&#39;t zero now<br />4. Check if puck_down is zero<br />5. Increase puck_down by 1<br />6. Throw away result from 4.</p><p>EXTRANEOUS NITPICK ENDED
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kibiz0r)</author>
		<pubDate>Fri, 01 Jun 2007 23:32:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">zaviax said:</div><div class="quote"><p>

How do i get a puck to slide across the screen?<br />How do i do the rebounds off of walls<br />how do i get it to go in the goal because there isnt a hole in the white bounding box?</p><p>here is my source please show what you mena if making a suggestion thanks a lot!
</p></div></div><p>

Some tips from someone who&#39;s also learning from these great masters:</p><p>1. Don&#39;t forget to meditate some on the things the people of this forum are &gt;giving&lt; you.</p><p>2. NEVER post your code and ask people to write big things for you, posting code that doesn&#39;t work is sometimes a must, but letting other people do your work (and don&#39;t even see tip 1) wont get you anywhere unless you don&#39;t care about &#39;cheating&#39; as long as your friends think you did it. What you asked for is pretty much the whole game..</p><p>3. there is no tip number 3.</p><p>oh: a tip to myself: read what people say before posting &quot;great&quot; tips... ^^</p><p>Have a nice day. Albin out.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Albin Engström)</author>
		<pubDate>Sat, 02 Jun 2007 01:22:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>zavirax:</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> playerone<span class="k2">(</span><span class="k1">int</span> p1_x, <span class="k1">int</span> p1_y, <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">)</span><span class="k2">{</span>
  
  <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span> buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"O"</span>, p1_x, p1_y, <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">0</span>, <span class="n">0</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</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="k2">;</span>
  <span class="c">/* makes a '+' sign and sets the colour as white and to start where x and y are set*/</span>
  <a href="http://www.allegro.cc/manual/textout_ex" target="_blank"><span class="a">textout_ex</span></a><span class="k2">(</span> buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="s">"O"</span>, p1_x, p1_y, <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">0</span>, <span class="n">0</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</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="k2">;</span>
  <span class="c">/* create player one's cursor and make him red*/</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div></div><p>

Why do you have two identical <tt>textout_ex()</tt> calls following each other? The same applies for the <tt>playertwo()</tt> function.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre>    <span class="k1">if</span> <span class="k2">(</span>
      <span class="k2">(</span> p1_bb_L <span class="k3">&lt;</span><span class="k3">=</span> puck_left <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_R <span class="k3">=</span><span class="k3">=</span> puck_left<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span>
      <span class="k2">(</span> p1_bb_T <span class="k3">&gt;</span><span class="k3">=</span> puck_up <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_B <span class="k3">&lt;</span><span class="k3">=</span>puck_down<span class="k2">)</span>
    <span class="k2">)</span>
</pre></div></div><p>
</p></div></div><p>

If, at later stages of development, you decide to move either the players or the puck at more than 1 pixel per loop, the type of collision detection you do above will no longer be effective. If player 1 is moving right towards the puck at say 3 pixels per loop, it could go from being 1 pixel to the left of the leftmost side puck to 2 pixels to the right of the leftmost side. The collision check would fail and the player would pass through the puck.</p><p>The following collision check works no matter how fast objects are traveling:</p><p><span class="source-code"><span class="k1">if</span> <span class="k2">(</span>p1_bb_L <span class="k3">&lt;</span><span class="k3">=</span> puck_right <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_T <span class="k3">&lt;</span><span class="k3">=</span> puck_down <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_R <span class="k3">&gt;</span><span class="k3">=</span> puck_left <span class="k3">&amp;</span><span class="k3">&amp;</span> p1_bb_B <span class="k3">&gt;</span><span class="k3">=</span> puck_up<span class="k2">)</span></span> <br />This won&#39;t tell you what side the collision occured from however. But you can determine the result of the collision based on the velocities of the objects colliding.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
<span class="source-code">puck_left<span class="k3">+</span><span class="k3">+</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> puck_right<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></span>
</p></div></div><p>

Even if this did what you thought it did, it&#39;s better to change <tt>puck_x</tt> and <tt>puck_y</tt> rather than the position of the bounding box.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> puck_left<span class="k3">=</span>puck_x<span class="k2">;</span>  <span class="c">/* puck bounding box*/</span>
<span class="k1">int</span> puck_up<span class="k3">=</span>puck_y<span class="k2">;</span>
<span class="k1">int</span> puck_right<span class="k3">=</span>puck_x<span class="k3">+</span>width_p<span class="k2">;</span>
<span class="k1">int</span> puck_down<span class="k3">=</span>puck_y<span class="k3">+</span>height_p<span class="k2">;</span>
</pre></div></div><p>
</p></div></div><p>

I would <tt>#define</tt> those values instead of making them variables. Now, you only need to keep track of the <tt>puck_x</tt> and <tt>puck_y</tt> values, and the bounding box values will be updated automatically.</p><p>Those who know these things:</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre>    <a href="http://www.allegro.cc/manual/textout_centre_ex" target="_blank"><span class="a">textout_centre_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>,<span class="s">"Air Hockey"</span> , <span class="n">320</span>, <span class="n">100</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">0</span>, <span class="n">255</span><span class="k2">)</span>, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>

    <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span> buffer, <span class="n">60</span>, <span class="n">120</span>, <span class="n">580</span>, <span class="n">400</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="c">/*playing field*/</span>
    <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span> buffer, <span class="n">40</span>, <span class="n">230</span>, <span class="n">60</span>, <span class="n">290</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">0</span>, <span class="n">255</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">/*player one's net to defend*/</span>
    <a href="http://www.allegro.cc/manual/rect" target="_blank"><span class="a">rect</span></a><span class="k2">(</span> buffer, <span class="n">580</span>, <span class="n">230</span>, <span class="n">600</span>, <span class="n">290</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">255</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>   <span class="c">/*player two's net to defend*/</span>
    <a href="http://www.allegro.cc/manual/line" target="_blank"><span class="a">line</span></a><span class="k2">(</span> buffer, <span class="n">320</span>, <span class="n">120</span>, <span class="n">320</span>, <span class="n">400</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="c">/*half way line*/</span>
    <a href="http://www.allegro.cc/manual/circle" target="_blank"><span class="a">circle</span></a><span class="k2">(</span>buffer, <span class="n">320</span>, <span class="n">260</span>, <span class="n">75</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="c">/*center circle*/</span>
</pre></div></div><p>
</p></div></div><p>

Would it make an improvement to speed if, instead of doing these drawing routines every redraw, they&#39;d been prerendered to a bitmap which would then be blitted to the buffer before other object were drawn?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Sat, 02 Jun 2007 02:43:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">LennyLen said:</div><div class="quote"><p>
edit: You&#39;re creating the buffer BITMAP every time your loop runs. Just create it once, before the loop.
</p></div></div><p>
I told him of that on his last identical post.
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Would it make an improvement to speed if, instead of doing these drawing routines every redraw, they&#39;d been prerendered to a bitmap which would then be blitted to the buffer before other object were drawn?
</p></div></div><p>
dam nice point.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Three Harris)</author>
		<pubDate>Sat, 02 Jun 2007 04:23:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>oculd you give an example of how i would do the velocity please and how to reverse it...i changed the buffer positioning and now it works properly thanks i wondered why it still flickered.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (zavirax)</author>
		<pubDate>Mon, 04 Jun 2007 21:41:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><span class="k1">float</span> x, y<span class="k2">;</span>
<span class="k1">float</span> xv, yv<span class="k2">;</span>

<span class="c">// move</span>
x <span class="k3">+</span><span class="k3">=</span> xv<span class="k2">;</span>
y <span class="k3">+</span><span class="k3">=</span> yv<span class="k2">;</span>
</pre></div></div><p>

I&#39;ll leave reversing a direction as an exercise to the reader. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Mon, 04 Jun 2007 21:47:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I really don&#39;t want to be rude, but it is apparent this this game is far too advanced for you. Try making some simple programs for now, like moving objects across the screen. This is far too many people wasting their time to help you create something that you wont even understand if you apply everything everyone is telling you. Again, I&#39;m not trying to be mean. I&#39;m just trying to steer you in a direction which is more likely to improve your understanding on programming. If you work on the basics, I&#39;m certain you can do a project like this in no time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Aaron Whipple)</author>
		<pubDate>Mon, 04 Jun 2007 22:11:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Learn how to use vectors, that&#39;s the key!:)</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Try making some simple programs for now,
</p></div></div><p>

Please, not another tetris and/or pong clone!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Mon, 04 Jun 2007 22:42:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://www.allegro.cc/forums/thread/591703/676879#target">Read this thread</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Tue, 05 Jun 2007 02:12:25 +0000</pubDate>
	</item>
</rss>
