<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Flashing word + waiting for a key to be pressed</title>
		<link>http://www.allegro.cc/forums/view/617137</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 15 Nov 2017 22:52:47 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi,</p><p>I&#39;m making a game in C++ and Allegro 5 and I&#39;m having trouble with waiting for event, I think.</p><p>What I want is for a bitmap to keep flashing/blinking until the key enter is pressed.</p><p>This is what I have right now</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="k1">while</span> <span class="k2">(</span>blinks<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> events<span class="k2">;</span>
<span class="number">  4</span>  <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>queue, <span class="k3">&amp;</span>events<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  <span class="k1">if</span> <span class="k2">(</span>events.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number">  6</span>  <span class="k2">{</span>
<span class="number">  7</span>    <span class="k1">for</span> <span class="k2">(</span>alfa <span class="k3">=</span> <span class="n">255</span><span class="k2">;</span> alfa <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">30</span><span class="k2">;</span> alfa--<span class="k2">)</span>
<span class="number">  8</span>    <span class="k2">{</span>
<span class="number">  9</span>      <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>      <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>background, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>      <a href="http://www.allegro.cc/manual/al_draw_tinted_bitmap"><span class="a">al_draw_tinted_bitmap</span></a><span class="k2">(</span>press_enter_please, <a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span>alfa, alfa, alfa, alfa<span class="k2">)</span>, <span class="k2">(</span>x <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span><span class="n">171</span><span class="k2">)</span>, <span class="k2">(</span>y <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">156</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>      <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>      <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">005</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>    <span class="k2">}</span>
<span class="number"> 15</span>    <span class="k1">for</span> <span class="k2">(</span>alfa <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> alfa <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">255</span><span class="k2">;</span> alfa<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 16</span>    <span class="k2">{</span>
<span class="number"> 17</span>      <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>      <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>background, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>      <a href="http://www.allegro.cc/manual/al_draw_tinted_bitmap"><span class="a">al_draw_tinted_bitmap</span></a><span class="k2">(</span>press_enter_please, <a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span>alfa, alfa, alfa, alfa<span class="k2">)</span>, <span class="k2">(</span>x <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span><span class="n">171</span><span class="k2">)</span>, <span class="k2">(</span>y <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">156</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>      <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>      <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">001</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>    <span class="k2">}</span>
<span class="number"> 23</span>  <span class="k2">}</span>
<span class="number"> 24</span>
<span class="number"> 25</span>  <span class="k1">if</span> <span class="k2">(</span>events.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span>
<span class="number"> 26</span>  <span class="k2">{</span>
<span class="number"> 27</span>    <span class="k1">switch</span> <span class="k2">(</span>events.keyboard.keycode<span class="k2">)</span>
<span class="number"> 28</span>    <span class="k2">{</span>
<span class="number"> 29</span>    <span class="k1">case</span> ALLEGRO_KEY_ENTER:
<span class="number"> 30</span>      blinks <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 31</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 32</span>    <span class="k2">}</span>
<span class="number"> 33</span>  <span class="k2">}</span>
<span class="number"> 34</span>      
<span class="number"> 35</span><span class="k2">}</span>
</div></div><p>

The flashing and finishing the while(blinks) loop are working just fine but only <br />separately... When I play it, the bitmap just blinks forever no matter what I press.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (diverswife)</author>
		<pubDate>Wed, 15 Nov 2017 02:58:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>

Try and restructure your event loop a bit :</p><p>pseudocode :
</p><pre>
while (!quit) {
   if (redraw) {
      Draw(bitmap , al_map_rgba(alpha,alpha,alpha,alpha));
      redraw = false;
   }
   do {
      ALLEGRO_EVENT ev;
      wait_for_event(q , &amp;ev);
      if (ev.type == ALLEGRO_EVENT_TIMER) {
         redraw = true;
         if (glow) {
            alpha += 1;
            if (alpha &gt;= 255) {glow = false;}
         }
         else {
            alpha -= 1;
            if (alpha &lt; 1) {glow = true;}
         }
      }
      if (ev.type == ALLEGRO_EVENT_KEY_DOWN) {quit = true;}
   } while (HaveEvents(q));
}
</pre><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 15 Nov 2017 03:46:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks! But what function do you mean by HaveEvents? (I&#39;m new to programming, sorry)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (diverswife)</author>
		<pubDate>Wed, 15 Nov 2017 05:54:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think he means <span class="source-code"><a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a></span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (torhu)</author>
		<pubDate>Wed, 15 Nov 2017 06:36:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I mentioned it was &#39;psuedo&#39; code, not real code.</p><p>The actual function you want is <span class="source-code"><a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span><span class="k2">)</span></span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 15 Nov 2017 14:56:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I get the pseudocode part, it just wasn&#39;t super intuitive, gee.</p><p>Thanks!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (diverswife)</author>
		<pubDate>Wed, 15 Nov 2017 22:08:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Okay. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>Something that should be pointed out is that logic should be kept separate from drawing as much as possible. By moving the alpha altering (logic) code out of the drawing section, you clean it up considerably.</p><p>Welcome to Allegro! Happy coding. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 15 Nov 2017 22:52:47 +0000</pubDate>
	</item>
</rss>
