<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>How to divide a project?</title>
		<link>http://www.allegro.cc/forums/view/558270</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 10 Jan 2006 03:08:05 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I searched but didn&#39;t found a clear answer or an example. I want to make a seperate file for inputs, so I did a INPUT() function that links to the other file (input.c als tried input.h), but always I had errors, can someone please give me an example for placing the input as a functon or some other method , witch will work.</p><p>Thanks very much.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ilyas Salman)</author>
		<pubDate>Sun, 08 Jan 2006 19:39:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Im not quite sure i understand the question. How does your file-structure look at the moment?<br />In general, afaik, it works like this:<br />The .c/cpp file contains the &quot;body&quot; of the functions, and then you include file.h in any file where you want to use test(). 
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">//file.c</span>
<span class="p">#include "file.h"</span>

<span class="k1">void</span> test<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
<a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"whatever\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>

<span class="c">//file.h</span>
<span class="k1">void</span> test<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

EDIT: ah yes, also header guards
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Sun, 08 Jan 2006 19:56:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><span class="c">/* input.h - input header */</span>

<span class="c">/* include guard, to prevend this file from being include more then once</span>
<span class="c"> * inside singe source file</span>
<span class="c"> */</span>
<span class="p">#ifndef INPUT_H</span>
<span class="p">#define INPUT_H</span>

<span class="c">/* declaration */</span>
<span class="k1">void</span> input<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span>

<span class="p">#endif</span>
</pre></div></div><p>

</p><div class="source-code snippet"><div class="inner"><pre><span class="c">/* input.c - input source file */</span>
<span class="p">#include "input.h"</span>

<span class="k1">void</span> input<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="k2">{</span>
   <span class="c">/* ... */</span>
<span class="k2">}</span>
</pre></div></div><p>

</p><div class="source-code snippet"><div class="inner"><pre><span class="c">/* main.c */</span>
<span class="p">#include "input.h"</span>

<span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="k2">{</span>
   <span class="c">/* ... */</span>
   input<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
   <span class="c">/* ... */</span>
   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>

<span class="k2">}</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>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Hrvoje Ban)</author>
		<pubDate>Sun, 08 Jan 2006 19:56:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I still have errors, INCREDEMENT_X undeclared,...</p><p>my codes:<br />/////////////////////////////////////////////////////<br />#ifndef <u>INPUT_C</u><br />#define <u>INPUT_C</u><br />void INPUT(){<br />while (game_time &gt; 0) {<br />if (key[KEY_LEFT])<br />sprite_position.x -= INCREMENT_X;<br />if (key[KEY_RIGHT])<br />sprite_position.x += INCREMENT_X;<br />if (key[KEY_UP])<br />sprite_position.y -= INCREMENT_Y;<br />if (key[KEY_DOWN])<br />sprite_position.y += INCREMENT_Y;<br />if (key[KEY_SPACE])<br />sprite_position.y += 0.30;</p><p>if (key[KEY_ESC])<br />user_wants_to_quit = TRUE;<br />--game_time;<br />}<br />#endif<br />//////////////////////////////////////////////////////<br />#include &lt;allegro.h&gt;<br />#include &quot;input_now.c&quot;<br />#define INCREMENT_X 0.25<br />#define INCREMENT_Y 0.25<br />volatile int game_time;<br />volatile int sec_counter;<br />typedef struct{<br />double x,y;<br />}VECTOR;<br />int init_timer(void);<br />void game_timer(void) {<br />game_time++;<br />}<br />END_OF_FUNCTION(game_timer);<br />void game_sec_timer(void) {<br />sec_counter++;<br />}<br />END_OF_FUNCTION(game_sec_timer);<br />int init_timer(void) {<br />install_timer();<br />if (install_int(game_timer, 1) &lt; 0)<br />return 1;<br />if (install_int(game_sec_timer, 1000) &lt; 0)<br />return 1;<br />sec_counter = 0;<br />game_time = 0;<br />LOCK_VARIABLE(game_time);<br />LOCK_VARIABLE(sec_counter);<br />LOCK_FUNCTION(game_timer);<br />LOCK_FUNCTION(game_sec_timer);<br />return 0;<br />}<br />int main() {<br />int current_fps = 0;<br />int fps = 0;<br />int user_wants_to_quit = FALSE;<br />BITMAP* le_sprite;<br />BITMAP* buffer;<br />unsigned long last_sec_counter = 0;<br />VECTOR sprite_position;<br />allegro_init();<br />install_keyboard();<br />if (init_timer() != 0) {<br />allegro_message(&quot;Erreur lors de l&#39;initialisation des timers!&quot;);<br />return 1;<br />}<br />install_mouse();<br />set_color_depth(16);<br />if (set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640,480, 0, 0) != 0) {<br />allegro_message(&quot;Impossible d&#39;initialiser le mode vidéo!&quot;);<br />return 1;<br />}<br />le_sprite = load_bitmap(&quot;ship105.bmp&quot;, NULL);<br />if (!le_sprite) {<br />set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);<br />allegro_message (&quot;Erreur : imposible de charger le bitmap!&quot;);<br />return 1;<br />}<br />buffer = create_bitmap(SCREEN_W, SCREEN_H);<br />if (!buffer) {<br />set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);<br />allegro_message (&quot;Erreur : imposible de créer le buffer!&quot;);<br />return 1;<br />}<br />sprite_position.x = SCREEN_W / 2;<br />sprite_position.y = SCREEN_H / 2;<br />/* Boucle principale du jeu */<br />while (user_wants_to_quit == FALSE) {<br />INPUT();<br />}<br />if (sec_counter != last_sec_counter) {<br />fps = current_fps;<br />last_sec_counter = sec_counter;<br />current_fps = 0;<br />}<br />current_fps++;<br />clear_bitmap(buffer);<br />draw_sprite(buffer, le_sprite, sprite_position.x, sprite_position.y);<br />text_mode(-1);<br />textprintf_centre(buffer, font, SCREEN_W / 2, 0, makecol(195,125,255), &quot;FPS : %d&quot;, fps);<br />textprintf_centre(buffer, font, SCREEN_W / 2, 20, makecol(195,125,255), &quot;Mouse coordinates : %d,%d&quot;, mouse_x,mouse_y);<br />blit(buffer, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);<br />}<br />destroy_bitmap(le_sprite);<br />destroy_bitmap(buffer);<br />return 0;<br />}<br />END_OF_MAIN();<br />//////////////////////////////////////////////////////
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ilyas Salman)</author>
		<pubDate>Sun, 08 Jan 2006 22:05:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Please use the code tags. Until then i can tell you straight away that it&#39;s bad practice to include c files. it&#39;s just EVIL.<br />As we said, have a header file (.h) with the declaration (ie, void INPUT();, header guards and such) and a c file which you compile naturally. And then include the header file in any file you want to use INPUT().  You should also consider using a more ... normal namning convention, all-cap names are usualy macros or typedefs.</p><p>Also, you add increment_x after you include the file, so it never sees them.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Sun, 08 Jan 2006 22:17:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You should use something like this:</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// input.h</span>
<span class="p">#ifndef INPUT_H</span>
<span class="p">#define INPUT_H</span>

<span class="p">#define INCREMENT_X 0.25</span>
<span class="p">#define INCREMENT_Y 0.25</span>

<span class="k1">typedef</span> <span class="k1">struct</span><span class="k2">{</span>
    <span class="k1">double</span> x,y<span class="k2">;</span>
<span class="k2">}</span>VECTOR<span class="k2">;</span>

<span class="k1">extern</span> <span class="k1">int</span> user_wants_to_quit<span class="k2">;</span>
<span class="k1">extern</span> <span class="k1">volatile</span> <span class="k1">int</span> game_time<span class="k2">;</span>

<span class="p">#endif</span>
</pre></div></div><p>

</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">// input.c</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include "input.h"</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="k1">int</span> user_wants_to_quit <span class="k3">=</span> FALSE<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">void</span> INPUT<span class="k2">(</span>VECTOR <span class="k3">*</span>sprite_position<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">while</span> <span class="k2">(</span>game_time <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>        <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></td></tr><tr><td class="number">10</td><td>            sprite_position-&gt;x <span class="k3">-</span><span class="k3">=</span> INCREMENT_X<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>        <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></td></tr><tr><td class="number">12</td><td>            sprite_position-&gt;x <span class="k3">+</span><span class="k3">=</span> INCREMENT_X<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>        <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></td></tr><tr><td class="number">14</td><td>            sprite_position-&gt;y <span class="k3">-</span><span class="k3">=</span> INCREMENT_Y<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>        <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></td></tr><tr><td class="number">16</td><td>            sprite_position-&gt;y <span class="k3">+</span><span class="k3">=</span> INCREMENT_Y<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">18</td><td>            sprite_position-&gt;y <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">30</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td>        <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></td></tr><tr><td class="number">21</td><td>            user_wants_to_quit <span class="k3">=</span> TRUE<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>        <span class="k3">-</span><span class="k3">-</span>game_time<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">24</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">// main.c</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include "input.h"</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="k1">volatile</span> <span class="k1">int</span> game_time<span class="k2">;</span></td></tr><tr><td class="number">6</td><td><span class="k1">volatile</span> <span class="k1">int</span> sec_counter<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="k1">int</span> init_timer<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <span class="k1">void</span> game_timer<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>    game_time<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k2">}</span></td></tr><tr><td class="number">12</td><td><a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>game_timer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="k1">void</span> game_sec_timer<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>    sec_counter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span></td></tr><tr><td class="number">17</td><td><a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>game_sec_timer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="k1">int</span> init_timer<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">20</td><td>    <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/install_int" target="_blank"><span class="a">install_int</span></a><span class="k2">(</span>game_timer, <span class="n">1</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">22</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/install_int" target="_blank"><span class="a">install_int</span></a><span class="k2">(</span>game_sec_timer, <span class="n">1000</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">25</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>    sec_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    game_time <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>game_time<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>sec_counter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>game_timer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>    <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>game_sec_timer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td><span class="k2">}</span></td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">38</td><td>    <span class="k1">int</span> current_fps <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>    <span class="k1">int</span> fps <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> le_sprite<span class="k2">;</span></td></tr><tr><td class="number">42</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> buffer<span class="k2">;</span></td></tr><tr><td class="number">43</td><td>    <span class="k1">unsigned</span> <span class="k1">long</span> last_sec_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>    VECTOR sprite_position<span class="k2">;</span></td></tr><tr><td class="number">45</td><td>    <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>    <span class="k1">if</span> <span class="k2">(</span>init_timer<span class="k2">(</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">48</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Erreur lors de l'initialisation des timers!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">51</td><td>    <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>    <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">640</span>,<span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">54</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Impossible d'initialiser le mode vidéo!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">57</td><td>    le_sprite <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">"ship105.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>le_sprite<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">59</td><td>        <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a> <span class="k2">(</span><span class="s">"Erreur : imposible de charger le bitmap!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">61</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">63</td><td>    buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>buffer<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">65</td><td>        <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a> <span class="k2">(</span><span class="s">"Erreur : imposible de créer le buffer!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">69</td><td>&#160;</td></tr><tr><td class="number">70</td><td>    sprite_position.x <span class="k3">=</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></td></tr><tr><td class="number">71</td><td>    sprite_position.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">2</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>    <span class="c">/* Boucle principale du jeu */</span></td></tr><tr><td class="number">73</td><td>    <span class="k1">while</span> <span class="k2">(</span>user_wants_to_quit <span class="k3">=</span><span class="k3">=</span> FALSE<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">74</td><td>        INPUT<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>&#160;</td></tr><tr><td class="number">76</td><td>        <span class="k1">if</span> <span class="k2">(</span>sec_counter <span class="k3">!</span><span class="k3">=</span> last_sec_counter<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">77</td><td>            fps <span class="k3">=</span> current_fps<span class="k2">;</span></td></tr><tr><td class="number">78</td><td>            last_sec_counter <span class="k3">=</span> sec_counter<span class="k2">;</span></td></tr><tr><td class="number">79</td><td>            current_fps <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">81</td><td>&#160;</td></tr><tr><td class="number">82</td><td>        current_fps<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>        <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">84</td><td>        <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, le_sprite, sprite_position.x, sprite_position.y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">85</td><td>        text_mode<span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">86</td><td>        textprintf_centre<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <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="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">195</span>,<span class="n">125</span>,<span class="n">255</span><span class="k2">)</span>, <span class="s">"FPS : %d"</span>, fps<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">87</td><td>        textprintf_centre<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <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="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">195</span>,<span class="n">125</span>,<span class="n">255</span><span class="k2">)</span>, <span class="s">"Mouse coordinates : %d,%d"</span>, <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a>,<a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">90</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>le_sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">91</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">92</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">93</td><td><span class="k2">}</span></td></tr><tr><td class="number">94</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">95</td><td><span class="c">//////////////////////////////////////////////////////</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Sun, 08 Jan 2006 22:29:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://www.allegro.cc/mockup">If you don&#39;t know how to use the code tags, look here.</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Faerber)</author>
		<pubDate>Sun, 08 Jan 2006 22:30:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You know, your life would be so much easier if you just used STL and OpenLayer.</p><p><img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul Pridham)</author>
		<pubDate>Sun, 08 Jan 2006 22:44:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Now, I made paste what ReyBrujo wrote, I had only one error (and few warnings), it didn&#39;t recognize the input function, I made the function extern void INPUT(); in main.cpp. Now the program begins but without input. What is the cause?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ilyas Salman)</author>
		<pubDate>Mon, 09 Jan 2006 02:16:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You don&#39;t make function by using extern (or just ending it with semicolon without body), you tell compiler that it&#39;s placed in another file.</p><p>In ReyBrujo code, in input.h INPUT takes pointer to VECTOR, but in main.cpp it&#39;s used without parameters.</p><p>EDIT: You need to change this in main.cpp
</p><div class="source-code snippet"><div class="inner"><pre>    <span class="k1">while</span> <span class="k2">(</span>user_wants_to_quit <span class="k3">=</span><span class="k3">=</span> FALSE<span class="k2">)</span> <span class="k2">{</span>
        INPUT<span class="k2">(</span><span class="k3">&amp;</span>sprite_position<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Hrvoje Ban)</author>
		<pubDate>Mon, 09 Jan 2006 02:49:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oops! Sorry <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Mon, 09 Jan 2006 02:53:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I made the correction, but I have the same problem, I rewrite the code:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">// main.cpp</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include "Input.h"</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="k1">volatile</span> <span class="k1">int</span> game_time<span class="k2">;</span></td></tr><tr><td class="number">6</td><td><span class="k1">volatile</span> <span class="k1">int</span> sec_counter<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="k1">int</span> init_timer<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    <span class="k1">void</span> game_timer<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>    game_time<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k2">}</span></td></tr><tr><td class="number">12</td><td><a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>game_timer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="k1">void</span> game_sec_timer<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>    sec_counter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span></td></tr><tr><td class="number">17</td><td><a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>game_sec_timer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="k1">int</span> init_timer<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">20</td><td>    <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/install_int" target="_blank"><span class="a">install_int</span></a><span class="k2">(</span>game_timer, <span class="n">1</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">22</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/install_int" target="_blank"><span class="a">install_int</span></a><span class="k2">(</span>game_sec_timer, <span class="n">1000</span><span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">25</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>    sec_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    game_time <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>game_time<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>sec_counter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>game_timer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>    <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>game_sec_timer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td><span class="k2">}</span></td></tr><tr><td class="number">36</td><td>&#160;</td></tr><tr><td class="number">37</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">38</td><td>    <span class="k1">int</span> current_fps <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>    <span class="k1">int</span> fps <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> le_sprite<span class="k2">;</span></td></tr><tr><td class="number">42</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> buffer<span class="k2">;</span></td></tr><tr><td class="number">43</td><td>    <span class="k1">unsigned</span> <span class="k1">long</span> last_sec_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>    VECTOR sprite_position<span class="k2">;</span></td></tr><tr><td class="number">45</td><td>    <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>    <span class="k1">if</span> <span class="k2">(</span>init_timer<span class="k2">(</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">48</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Erreur lors de l'initialisation des timers!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">51</td><td>    <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>    <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">640</span>,<span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">54</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Impossible d'initialiser le mode vidéo!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">57</td><td>    le_sprite <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">"ship105.bmp"</span>, NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>le_sprite<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">59</td><td>        <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a> <span class="k2">(</span><span class="s">"Erreur : imposible de charger le bitmap!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">61</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">63</td><td>    buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>buffer<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">65</td><td>        <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>        <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a> <span class="k2">(</span><span class="s">"Erreur : imposible de créer le buffer!"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">67</td><td>        <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">69</td><td>&#160;</td></tr><tr><td class="number">70</td><td>    sprite_position.x <span class="k3">=</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></td></tr><tr><td class="number">71</td><td>    sprite_position.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">2</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>    <span class="c">/* Boucle principale du jeu */</span></td></tr><tr><td class="number">73</td><td>     <span class="k1">while</span> <span class="k2">(</span>user_wants_to_quit <span class="k3">=</span><span class="k3">=</span> FALSE<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">74</td><td>        INPUT<span class="k2">(</span><span class="k3">&amp;</span>sprite_position<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td>&#160;</td></tr><tr><td class="number">76</td><td>        <span class="k1">if</span> <span class="k2">(</span>sec_counter <span class="k3">!</span><span class="k3">=</span> last_sec_counter<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">77</td><td>            fps <span class="k3">=</span> current_fps<span class="k2">;</span></td></tr><tr><td class="number">78</td><td>            last_sec_counter <span class="k3">=</span> sec_counter<span class="k2">;</span></td></tr><tr><td class="number">79</td><td>            current_fps <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">81</td><td>&#160;</td></tr><tr><td class="number">82</td><td>        current_fps<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>        <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">84</td><td>        <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span>buffer, le_sprite, sprite_position.x, sprite_position.y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">85</td><td>        text_mode<span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">86</td><td>        textprintf_centre<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <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="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">195</span>,<span class="n">125</span>,<span class="n">255</span><span class="k2">)</span>, <span class="s">"FPS : %d"</span>, fps<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">87</td><td>        textprintf_centre<span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <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="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">195</span>,<span class="n">125</span>,<span class="n">255</span><span class="k2">)</span>, <span class="s">"Mouse coordinates : %d,%d"</span>, <a href="http://www.allegro.cc/manual/mouse_x" target="_blank"><span class="a">mouse_x</span></a>,<a href="http://www.allegro.cc/manual/mouse_y" target="_blank"><span class="a">mouse_y</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td>        <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">90</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>le_sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">91</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">92</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">93</td><td><span class="k2">}</span></td></tr><tr><td class="number">94</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">// input.c</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include "input.h"</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="k1">int</span> user_wants_to_quit <span class="k3">=</span> FALSE<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">void</span> INPUT<span class="k2">(</span>VECTOR <span class="k3">*</span>sprite_position<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">while</span> <span class="k2">(</span>game_time <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>        <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></td></tr><tr><td class="number">10</td><td>            sprite_position-&gt;x <span class="k3">-</span><span class="k3">=</span> INCREMENT_X<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>        <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></td></tr><tr><td class="number">12</td><td>            sprite_position-&gt;x <span class="k3">+</span><span class="k3">=</span> INCREMENT_X<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>        <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></td></tr><tr><td class="number">14</td><td>            sprite_position-&gt;y <span class="k3">-</span><span class="k3">=</span> INCREMENT_Y<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>        <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></td></tr><tr><td class="number">16</td><td>            sprite_position-&gt;y <span class="k3">+</span><span class="k3">=</span> INCREMENT_Y<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">18</td><td>            sprite_position-&gt;y <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">30</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>        <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></td></tr><tr><td class="number">20</td><td>            user_wants_to_quit <span class="k3">=</span> TRUE<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>        <span class="k3">-</span><span class="k3">-</span>game_time<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">23</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
 	</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// input.h</span>
<span class="p">#ifndef INPUT_H</span>
<span class="p">#define INPUT_H</span>

<span class="p">#define INCREMENT_X 0.25</span>
<span class="p">#define INCREMENT_Y 0.25</span>

<span class="k1">typedef</span> <span class="k1">struct</span><span class="k2">{</span>
    <span class="k1">double</span> x,y<span class="k2">;</span>
<span class="k2">}</span>VECTOR<span class="k2">;</span>

<span class="k1">extern</span> <span class="k1">int</span> user_wants_to_quit<span class="k2">;</span>
<span class="k1">extern</span> <span class="k1">volatile</span> <span class="k1">int</span> game_time<span class="k2">;</span>

<span class="p">#endif   </span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ilyas Salman)</author>
		<pubDate>Mon, 09 Jan 2006 22:13:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Add <i>void INPUT(VECTOR *);</i> to input.h.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Mon, 09 Jan 2006 23:24:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Where exactly? I placed iy before, in the vector and at the end of the vector but I had warnings at the compiler couldn&#39;t make an .exe.</p><p>Thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ilyas Salman)</author>
		<pubDate>Tue, 10 Jan 2006 00:03:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>After the VECTOR. Remember to link against Allegro libraries.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 10 Jan 2006 00:10:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have the same problem:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#ifndef INPUT_H</span></td></tr><tr><td class="number">2</td><td><span class="p">#define INPUT_H</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="p">#define INCREMENT_X 0.25</span></td></tr><tr><td class="number">7</td><td><span class="p">#define INCREMENT_Y 0.25</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td><span class="k1">typedef</span> <span class="k1">struct</span><span class="k2">{</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>    <span class="k1">double</span> x,y<span class="k2">;</span></td></tr><tr><td class="number">13</td><td><span class="k2">}</span>VECTOR<span class="k2">;</span></td></tr><tr><td class="number">14</td><td><span class="k1">void</span> INPUT<span class="k2">(</span>VECTOR <span class="k3">*</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td><span class="k1">extern</span> <span class="k1">int</span> user_wants_to_quit<span class="k2">;</span></td></tr><tr><td class="number">17</td><td><span class="k1">extern</span> <span class="k1">volatile</span> <span class="k1">int</span> game_time<span class="k2">;</span></td></tr><tr><td class="number">18</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ilyas Salman)</author>
		<pubDate>Tue, 10 Jan 2006 01:16:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Don&#39;t forget to do a full recompile after you (only) change a header file.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jonatan Hedborg)</author>
		<pubDate>Tue, 10 Jan 2006 01:18:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yet, I have the same problem, can you please try to compile it on your system?<br />I have: no new line at end of file.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ilyas Salman)</author>
		<pubDate>Tue, 10 Jan 2006 01:21:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That is not an error, but a warning. Put a ENTER at the end of all your files.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 10 Jan 2006 02:28:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I did what you said, without succes, then I saw that I forgot in input.c the ifndefs, so:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#ifndef INPUT_C</span></td></tr><tr><td class="number">2</td><td><span class="p">#define INPUT_C</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">5</td><td><span class="p">#include "input.h"</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">int</span> user_wants_to_quit <span class="k3">=</span> FALSE<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td><span class="k1">void</span> INPUT<span class="k2">(</span>VECTOR <span class="k3">*</span>sprite_position<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">10</td><td>    <span class="k1">while</span> <span class="k2">(</span>game_time <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>        <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></td></tr><tr><td class="number">12</td><td>            sprite_position-&gt;x <span class="k3">-</span><span class="k3">=</span> INCREMENT_X<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>        <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></td></tr><tr><td class="number">14</td><td>            sprite_position-&gt;x <span class="k3">+</span><span class="k3">=</span> INCREMENT_X<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>        <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></td></tr><tr><td class="number">16</td><td>            sprite_position-&gt;y <span class="k3">-</span><span class="k3">=</span> INCREMENT_Y<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">18</td><td>            sprite_position-&gt;y <span class="k3">+</span><span class="k3">=</span> INCREMENT_Y<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>        <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></td></tr><tr><td class="number">20</td><td>            sprite_position-&gt;y <span class="k3">+</span><span class="k3">=</span> <span class="n">0</span>.<span class="n">30</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>        <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></td></tr><tr><td class="number">22</td><td>            user_wants_to_quit <span class="k3">=</span> TRUE<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>        <span class="k3">-</span><span class="k3">-</span>game_time<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span></td></tr><tr><td class="number">26</td><td><a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>INPUT<span class="k2">)</span></td></tr><tr><td class="number">27</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>
I also recompiled all (with and without the addition of ifndefs to input.c), I have: undefined reference to `INPUT(VECTOR*)&#39;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ilyas Salman)</author>
		<pubDate>Tue, 10 Jan 2006 02:38:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You don&#39;t need the ifdef/endif in the C files, only in the headers (H files). As for the error, have you compiled the input.cpp too? The INPUT(VECTOR *) function is inside input.cpp, if you don&#39;t compile it, you will get that undefined error. And remove that <i>END_OF_FUNCTION(INPUT)</i>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 10 Jan 2006 02:40:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t even have a input.cpp, only the main.cpp, how must it be written?<br />Thanks very very much.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ilyas Salman)</author>
		<pubDate>Tue, 10 Jan 2006 02:49:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your input.cpp file is the one you posted <a href="http://www.allegro.cc/forums/thread/558617#target">here</a>. Just add it to your project (I am guessing you are using MSVC6).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ReyBrujo)</author>
		<pubDate>Tue, 10 Jan 2006 02:57:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The input.c I changed to input.cpp, and it worked. Thanks!!<br />(I use codeblocks)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ilyas Salman)</author>
		<pubDate>Tue, 10 Jan 2006 03:08:05 +0000</pubDate>
	</item>
</rss>
