<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Game Lag Windows to Linux - FPS issue?</title>
		<link>http://www.allegro.cc/forums/view/618814</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 29 Apr 2023 00:20:57 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>All, </p><p>I&#39;ve create a simple game that can use mouse or keyboard.  When I compile with a Dell Latitude with Win 10, it functions fine. When I compile on Kubuntu 22.04 on Acer Nitro it lags.  It starts out fair enough but the cursor I created starts leaving a trail.  Also as I click the cards (match game) The first set does fine, the next a little slower and eventually you can&#39;t tell if it took your command it so slow. Again, this is only on the Linux compile. </p><p>I haven&#39;t set frames per second as I&#39;ve seen on some of the tutorials.  Is this the issue?  Maybe the default FPS are different between the two machines?   Thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Mon, 24 Apr 2023 18:54:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;ll have to show code. Odd that it is slow on Linux. Are you running it in a virtual machine?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 26 Apr 2023 19:57:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks Edgar.  I was surprised as you.  I&#39;m running Kubuntu in a dual boot.  At first I thought it was a mingw32 (Windows) Vs a Linux GCC issue.  Then I remembered that the tutorials I&#39;d seen applied a frames per second command.  I haven&#39;t had a chance to try it yet.  I thought maybe by not defining FPS, the default difference between the two setups might be causing an issue. </p><p>In any case, here are the cards and drawing functions. There is a rest if the two cards / blocks don&#39;t match but thats not the lag.  Lag come in after the cards flip back over to white and I click another block.  A couple times of this and it&#39;s 1 to 3 secs waiting and I can&#39;t tell if my click was registered or not.   Plus there is the cursor trailing.  That&#39;s not critical.  I can take it out and use the system cursor only.  I just put it in to see if I could get it to work</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">bool</span> game_play<span class="k2">(</span>BLOCKS Blocks<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">   2</span>
<span class="number">   3</span><span class="k1">int</span> iChoiceCount <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">   4</span><span class="k1">bool</span> bQuit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">   5</span><span class="k1">int</span> iFirstChoice <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">   6</span><span class="k1">int</span> iSecondChoice <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">   7</span><span class="k1">int</span> iKey <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">   8</span><span class="k1">int</span> pos_x <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number">   9</span><span class="k1">int</span> pos_y <span class="k3">=</span> <span class="n">100</span><span class="k2">;</span>
<span class="number">  10</span>
<span class="number">  11</span><span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>bQuit<span class="k2">)</span>
<span class="number">  12</span><span class="k2">{</span>
<span class="number">  13</span>
<span class="number">  14</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>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  15</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>COLOR::BLACK<span class="k2">)</span><span class="k2">;</span>
<span class="number">  16</span>    <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, COLOR::BR_CYAN, <span class="n">10</span>, <span class="n">20</span>, <span class="n">0</span>, <span class="s">"Solly's Matches %i %i"</span>,pos_x,pos_y<span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span>
<span class="number">  18</span>
<span class="number">  19</span>    <span class="k1">switch</span><span class="k2">(</span>iChoiceCount<span class="k3">&lt;</span><span class="n">2</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  20</span>      <span class="k1">case</span> true:
<span class="number">  21</span>          draw_cards<span class="k2">(</span>Blocks,<span class="n">0</span>.<span class="n">0</span>,pos_x,pos_y<span class="k2">)</span><span class="k2">;</span>
<span class="number">  22</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number">  23</span>      <span class="k1">case</span> false:
<span class="number">  24</span>        <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> count <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>count<span class="k3">&lt;</span>CQTY<span class="k2">;</span>count<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  25</span>            <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>Blocks<span class="k2">[</span>count<span class="k2">]</span>.bMatched<span class="k2">)</span>
<span class="number">  26</span>                 Blocks<span class="k2">[</span>count<span class="k2">]</span>.bFlipped <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span><span class="k2">}</span> <span class="c">// Card Flip Cleared</span>
<span class="number">  27</span>          iChoiceCount<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  28</span>        <span class="k1">break</span><span class="k2">;</span>
<span class="number">  29</span>     <span class="k2">}</span> <span class="c">//end switch for iChoiceCount</span>
<span class="number">  30</span>
<span class="number">  31</span>
<span class="number">  32</span>    <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span>
<span class="number">  33</span>  <span class="k2">{</span>
<span class="number">  34</span>      iKey <span class="k3">=</span> event.keyboard.keycode-1<span class="k2">;</span>
<span class="number">  35</span>
<span class="number">  36</span>    <span class="k1">if</span><span class="k2">(</span>event.keyboard.keycode <span class="k3">&gt;</span><span class="k3">=</span> ALLEGRO_KEY_A <span class="k3">&amp;</span><span class="k3">&amp;</span> event.keyboard.keycode <span class="k3">&lt;</span><span class="k3">=</span> ALLEGRO_KEY_X <span class="k2">)</span><span class="k2">{</span>
<span class="number">  37</span>       Blocks<span class="k2">[</span>iKey<span class="k2">]</span>.bFlipped <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  38</span>        <span class="k1">if</span><span class="k2">(</span>iChoiceCount <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> iFirstChoice <span class="k3">=</span> iKey<span class="k2">;</span>
<span class="number">  39</span>        <span class="k1">if</span><span class="k2">(</span>iChoiceCount <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> iSecondChoice <span class="k3">=</span> iKey<span class="k2">;</span>
<span class="number">  40</span>        iChoiceCount<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  41</span>    <span class="k2">}</span>  <span class="c">// end if for block choice</span>
<span class="number">  42</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span>
<span class="number">  43</span>      bQuit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  44</span>    <span class="k1">if</span><span class="k2">(</span>iChoiceCount <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  45</span>    <span class="k1">if</span><span class="k2">(</span>Blocks<span class="k2">[</span>iFirstChoice<span class="k2">]</span>.iValue <span class="k3">=</span><span class="k3">=</span> Blocks<span class="k2">[</span>iSecondChoice<span class="k2">]</span>.iValue <span class="k2">)</span><span class="k2">{</span>
<span class="number">  46</span>      Blocks<span class="k2">[</span>iFirstChoice<span class="k2">]</span>.bMatched <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  47</span>      Blocks<span class="k2">[</span>iSecondChoice<span class="k2">]</span>.bMatched <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span> <span class="k2">}</span><span class="k2">}</span>
<span class="number">  48</span>
<span class="number">  49</span>    <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>Blocks<span class="k2">[</span>iFirstChoice<span class="k2">]</span>.bFlipped <span class="k3">&amp;</span><span class="k3">&amp;</span> Blocks<span class="k2">[</span>iSecondChoice<span class="k2">]</span>.bFlipped <span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span>Blocks<span class="k2">[</span>iFirstChoice<span class="k2">]</span>.iValue <span class="k3">!</span><span class="k3">=</span> Blocks<span class="k2">[</span>iSecondChoice<span class="k2">]</span>.iValue <span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  50</span>     draw_cards<span class="k2">(</span>Blocks,<span class="n">2</span>.<span class="n">0</span>,pos_x,pos_y<span class="k2">)</span><span class="k2">;</span>
<span class="number">  51</span>      <span class="k2">}</span>
<span class="number">  52</span>  <span class="k2">}</span><span class="c">// end if event.type</span>
<span class="number">  53</span>
<span class="number">  54</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_AXES<span class="k2">)</span>
<span class="number">  55</span>    <span class="k2">{</span> pos_y <span class="k3">=</span> event.mouse.y<span class="k2">;</span>
<span class="number">  56</span>      pos_x <span class="k3">=</span> event.mouse.x<span class="k2">;</span>
<span class="number">  57</span>    <span class="k2">}</span> <span class="c">// end mouse axis</span>
<span class="number">  58</span>
<span class="number">  59</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_DOWN<span class="k2">)</span><span class="k2">{</span>
<span class="number">  60</span>      <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> count <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>count<span class="k3">&lt;</span>CQTY<span class="k2">;</span>count<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  61</span>        <span class="k1">if</span><span class="k2">(</span>pos_x <span class="k3">&gt;</span><span class="k3">=</span> Blocks<span class="k2">[</span>count<span class="k2">]</span>.fTX <span class="k3">&amp;</span><span class="k3">&amp;</span> pos_y <span class="k3">&gt;</span><span class="k3">=</span> Blocks<span class="k2">[</span>count<span class="k2">]</span>.fTY<span class="k2">)</span><span class="k2">{</span>
<span class="number">  62</span>          <span class="k1">if</span><span class="k2">(</span>pos_x <span class="k3">&lt;</span><span class="k3">=</span> Blocks<span class="k2">[</span>count<span class="k2">]</span>.fBX <span class="k3">&amp;</span><span class="k3">&amp;</span> pos_y <span class="k3">&lt;</span><span class="k3">=</span> Blocks<span class="k2">[</span>count<span class="k2">]</span>.fBY<span class="k2">)</span><span class="k2">{</span>
<span class="number">  63</span>            Blocks<span class="k2">[</span>count<span class="k2">]</span>.bFlipped <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  64</span>            <span class="k1">if</span><span class="k2">(</span>iChoiceCount <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> iFirstChoice <span class="k3">=</span> count<span class="k2">;</span>
<span class="number">  65</span>            <span class="k1">if</span><span class="k2">(</span>iChoiceCount <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> iSecondChoice <span class="k3">=</span> count<span class="k2">;</span>
<span class="number">  66</span>            iChoiceCount<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  67</span>          <span class="k2">}</span><span class="k2">}</span><span class="k2">}</span><span class="c">// end for</span>
<span class="number">  68</span>     <span class="k1">if</span><span class="k2">(</span>iChoiceCount <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  69</span>        <span class="k1">if</span><span class="k2">(</span>Blocks<span class="k2">[</span>iFirstChoice<span class="k2">]</span>.iValue <span class="k3">=</span><span class="k3">=</span> Blocks<span class="k2">[</span>iSecondChoice<span class="k2">]</span>.iValue <span class="k2">)</span><span class="k2">{</span>
<span class="number">  70</span>          Blocks<span class="k2">[</span>iFirstChoice<span class="k2">]</span>.bMatched <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  71</span>          Blocks<span class="k2">[</span>iSecondChoice<span class="k2">]</span>.bMatched <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span> <span class="k2">}</span><span class="k2">}</span>
<span class="number">  72</span>
<span class="number">  73</span>        <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>Blocks<span class="k2">[</span>iFirstChoice<span class="k2">]</span>.bFlipped <span class="k3">&amp;</span><span class="k3">&amp;</span> Blocks<span class="k2">[</span>iSecondChoice<span class="k2">]</span>.bFlipped <span class="k2">)</span><span class="k3">&amp;</span><span class="k3">&amp;</span><span class="k2">(</span>Blocks<span class="k2">[</span>iFirstChoice<span class="k2">]</span>.iValue <span class="k3">!</span><span class="k3">=</span> Blocks<span class="k2">[</span>iSecondChoice<span class="k2">]</span>.iValue <span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  74</span>         draw_cards<span class="k2">(</span>Blocks,<span class="n">2</span>.<span class="n">0</span>,pos_x,pos_y<span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</span>        <span class="k2">}</span>
<span class="number">  76</span>         <span class="k2">}</span><span class="c">// end button down</span>
<span class="number">  77</span>
<span class="number">  78</span>    <span class="k1">else</span> <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span>
<span class="number">  79</span>      bQuit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  80</span>
<span class="number">  81</span>    draw_cards<span class="k2">(</span>Blocks,<span class="n">0</span>.<span class="n">0</span>, pos_x,pos_y<span class="k2">)</span><span class="k2">;</span>
<span class="number">  82</span><span class="k2">}</span><span class="c">// end while()</span>
<span class="number">  83</span>
<span class="number">  84</span>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  85</span>
<span class="number">  86</span><span class="k2">}</span> <span class="c">//end game_play()</span>
<span class="number">  87</span>
<span class="number">  88</span><span class="k1">void</span> draw_cards<span class="k2">(</span>BLOCKS Blocks<span class="k2">[</span><span class="k2">]</span>,<span class="k1">float</span> fStall,<span class="k1">int</span> pos_x, <span class="k1">int</span> pos_y<span class="k2">)</span><span class="k2">{</span>
<span class="number">  89</span>   <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> count <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>count<span class="k3">&lt;</span>CQTY<span class="k2">;</span>count<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  90</span>           <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>Blocks<span class="k2">[</span>count<span class="k2">]</span>.bFlipped<span class="k2">)</span><span class="k2">{</span>
<span class="number">  91</span>            <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span>Blocks<span class="k2">[</span>count<span class="k2">]</span>.fTX, Blocks<span class="k2">[</span>count<span class="k2">]</span>.fTY, Blocks<span class="k2">[</span>count<span class="k2">]</span>.fBX, Blocks<span class="k2">[</span>count<span class="k2">]</span>.fBY, Blocks<span class="k2">[</span>count<span class="k2">]</span>.aBackColor<span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>              <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, COLOR::BLACK, Blocks<span class="k2">[</span>count<span class="k2">]</span>.fCX,Blocks<span class="k2">[</span>count<span class="k2">]</span>.fCY, ALLEGRO_ALIGN_CENTRE, <span class="s">"%c"</span>,<span class="s">'A'</span><span class="k3">+</span>count<span class="k2">)</span><span class="k2">;</span><span class="k2">}</span><span class="c">//end if flipped</span>
<span class="number">  93</span>           <span class="k1">else</span>
<span class="number">  94</span>               <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span>Blocks<span class="k2">[</span>count<span class="k2">]</span>.fTX, Blocks<span class="k2">[</span>count<span class="k2">]</span>.fTY, Blocks<span class="k2">[</span>count<span class="k2">]</span>.fBX, Blocks<span class="k2">[</span>count<span class="k2">]</span>.fBY, Blocks<span class="k2">[</span>count<span class="k2">]</span>.aFrontColor<span class="k2">)</span><span class="k2">;</span>
<span class="number">  95</span>           <span class="k2">}</span>
<span class="number">  96</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span>pos_x, pos_y, pos_x<span class="k3">+</span><span class="n">10</span>,pos_y<span class="k3">+</span><span class="n">10</span>, COLOR::YELLOW<span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</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">  98</span>         <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span>fStall<span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span><span class="k2">}</span> <span class="c">// end draw_cards()</span>
</div></div><p>

It might help to have the structure code.</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="c">/**********************************</span>
<span class="number">  2</span><span class="c">**  matches.h          * 04/25/23**</span>
<span class="number">  3</span><span class="c">**                     ************</span>
<span class="number">  4</span><span class="c">**  Matches game data            **</span>
<span class="number">  5</span><span class="c">***********************************/</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="p">#ifndef MATCHES_H_</span>
<span class="number">  8</span><span class="p">#define MATCHES_H_</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="p">#define STX 25</span>
<span class="number"> 11</span><span class="p">#define STY 75</span>
<span class="number"> 12</span><span class="p">#define CQTY 24</span>
<span class="number"> 13</span>
<span class="number"> 14</span><span class="k1">struct</span> BLOCKS <span class="k2">{</span>
<span class="number"> 15</span>  <span class="k1">float</span> fTX<span class="k2">;</span>
<span class="number"> 16</span>  <span class="k1">float</span> fTY<span class="k2">;</span>
<span class="number"> 17</span>  <span class="k1">float</span> fBX<span class="k2">;</span>
<span class="number"> 18</span>  <span class="k1">float</span> fBY<span class="k2">;</span>
<span class="number"> 19</span>  <span class="k1">bool</span> bMatched<span class="k2">;</span>
<span class="number"> 20</span>  <span class="k1">bool</span> bFlipped<span class="k2">;</span>
<span class="number"> 21</span>  <span class="k1">int</span> iValue<span class="k2">;</span>
<span class="number"> 22</span>  <span class="k1">float</span> fCX<span class="k2">;</span>
<span class="number"> 23</span>  <span class="k1">float</span> fCY<span class="k2">;</span>
<span class="number"> 24</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> aFrontColor<span class="k2">;</span>
<span class="number"> 25</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> aBackColor<span class="k2">;</span>
<span class="number"> 26</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 27</span>
<span class="number"> 28</span><span class="p">#endif /* MATCHES_H_ */</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Wed, 26 Apr 2023 20:53:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>don&#39;t know if this will help or not but</p><p>Take the al_flip_display out of the draw_cards and put in main loop. You call draw_cards twice during one loop.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Wed, 26 Apr 2023 21:15:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks Daniel, I&#39;ll give it a shot.  I&#39;ll let you know what happens.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Wed, 26 Apr 2023 22:54:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Actually I see 5 times you have draw_cards. five times the display gets flipped. But you only clear the screen at the beginning.</p><p>Might but hello with lag, but your trailing graphics.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Thu, 27 Apr 2023 00:30:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks Daniel. Times like these I miss the old days of MS Quick C.   It had a step function that treated your code like a BASIC line interpreter.  You could execute your code line at a time.  It allowed you to watch the values of listed variables as well as seeing if your code made it in to loops or functions as expected.  Was a big help in trouble shooting.   Now I have to pepper in print statements to monitor variable and position in the code.   But I digress. Thanks again.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Thu, 27 Apr 2023 01:27:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can always put in some breakpoints and step through the code checking variables and each step as you go!!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Thu, 27 Apr 2023 03:53:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;ve really got to format your code better with proper indentation and a single brace style. It makes it hard to read.</p><p>Also, your event loop needs a little work. Wait for an event as long as the queue is not empty (it will be an instant wait). Draw once. Do logic once for each tick of the system timer.</p><p>Finally, learn to use gdb, the gnu debugger. It will let you step through code and print out values of variables. Check out my debugging guide on the wiki here : </p><p><a href="https://github.com/liballeg/allegro_wiki/wiki/Debugging-and-logging-with-A5#debugging-with-gdb">https://github.com/liballeg/allegro_wiki/wiki/Debugging-and-logging-with-A5#debugging-with-gdb</a></p><p><img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 27 Apr 2023 16:43:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the recommendation Dizzy and Edgar.  I&#39;ll check them out.  Being able to step through would be a big help.</p><p>As for code, I agree it&#39;s a little sketchy.  First off, I wasn&#39;t planning on sharing <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=";D" border="0" />.  My original question was about the possible impact of not using FPS.  I usually do a better job of cleaning up  once the program is going into final phase.  As for this code, I&#39;ve patch worked it together.  Recently I moved it into the game_play function.  It was all in one function (main).  I&#39;ve been adding aspects (letter location, mouse use) as I went just to see if I could do it.</p><p>Plus I&#39;m primarily self taught, I&#39;m sure I&#39;ve developed poor habits.  I need to read other&#39;s code for template ideas.</p><p>Thanks All.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Thu, 27 Apr 2023 19:46:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No time to learn like the present. That GDB guide has most all the commands I use anyway.</p><p>Look up style guides for tips on formatting your code. I use something like this :
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc , <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span> argv<span class="k2">)</span> <span class="k2">{</span><span class="c">// braces go on the end of the line</span>
   <span class="c">// 3 space indent for new block, eliminates the need for braces (in Python)</span>
   <span class="k1">if</span> <span class="k2">(</span>condition1<span class="k2">)</span> <span class="k2">{</span>
      dothis<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>condition2<span class="k2">)</span> <span class="k2">{</span><span class="c">/// all ifs and elses in the same clause go at the same indentation</span>
      dothat<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k2">}</span> <span class="k1">else</span> <span class="k2">{</span>
      stop<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k2">}</span>
<span class="k2">}</span><span class="c">// closing brace goes on the same indentation level with the line of the starting brace</span>
</pre></div></div><p>
This is typical C++ style. C users probably want the opening brace on its own line.</p><p>As for an event loop, you need to exhaust all events. You were drawing something like 5 times per event, which would make it horribly slow and back up the event queue.</p><p>This is a typical event loop for me :</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">bool</span> quit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  2</span><span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  3</span><span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>quit<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  4</span>   <span class="k1">if</span> <span class="k2">(</span>redraw<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  5</span>      Draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  7</span>   <span class="k2">}</span>
<span class="number">  8</span>   <span class="k1">do</span> <span class="k2">{</span>
<span class="number">  9</span>      <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number"> 10</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>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>      <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span> <span class="k2">{</span>quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 12</span>      <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 13</span>         Logic<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>         redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 15</span>      <span class="k2">}</span>
<span class="number"> 16</span>   <span class="k2">}</span> <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><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>queue<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 27 Apr 2023 20:34:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><b>Don&#39;t listen to these heathens!</b></p><p>Open curly brace on new line!! <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p>There are arguments both ways. There is no &#39;correct&#39; way to do it. </p><p>But yes, break those coding habits early. Proper indentation. Separate input from logic from drawing.</p><p>1. process input (events)<br />2. run logic based on that input<br />3. draw</p><p>You can draw every time pass through the loop or draw only when something happened. That is why Edgar had a redraw boolean. It only triggered a redraw because logic processing occurred.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Thu, 27 Apr 2023 21:09:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Bah. You&#39;re just artificially boosting your LOC. Compensate much? <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /> XD
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 27 Apr 2023 21:44:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s as bad as people who pronounce gif as gift without the &#39;t&#39; instead of jif!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Thu, 27 Apr 2023 22:54:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I use same line opening brace in Java and new line opening brace in C/C++, mainly because my enforced gradle tasks demand I do! </p><p>Just to add to the debate 😎
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Thu, 27 Apr 2023 23:11:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Edgar said:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre>   <span class="k1">if</span> <span class="k2">(</span>condition1<span class="k2">)</span> <span class="k2">{</span>
      dothis<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>condition2<span class="k2">)</span> <span class="k2">{</span><span class="c">/// all ifs and elses in the same clause go at the same indentation</span>
      dothat<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k2">}</span>
</pre></div></div><p>
</p></div></div><p>

Close your braces. <img src="http://www.allegro.cc/forums/smileys/angry.gif" alt="&gt;:(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Polybios)</author>
		<pubDate>Fri, 28 Apr 2023 01:40:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok to carry it further. In Edgar&#39;s example that Polybios referred to, should we use  braces for ease of reading when they aren&#39;t needed? </p><p>With a single statement after the if condition, couldn&#39;t you do this? </p><p>if (condition1) <br />      dothis();<br />else if (condition2)<br />      dothat();</p><p>I can&#39;t get the proper formatting.  I have the dothis and do that indented.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Fri, 28 Apr 2023 18:34:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In my opinion, using brackets is always preferred, it just makes it easier to read and means you&#39;ll make less mistakes when coming back to add code etc.</p><p>When you say you couldn&#39;t get proper formatting, did you mean on here? Just wrap it in code tags to get formatting. Ie, I would do:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span>condition1<span class="k2">)</span>
<span class="k2">{</span>
    dothis<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
<span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>condition2<span class="k2">)</span>
<span class="k2">{</span>
    dothat<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

It will also mean anyone else looking at your code will have an easier time!!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Fri, 28 Apr 2023 19:26:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok Dizzy, which formatting are you referring to?  If I just add spaces the site ignores them,  If I do the code format it put the code in a separate box. Thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Fri, 28 Apr 2023 20:40:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmm, yeah just code tags....I&#39;m not sure why it sometimes puts it in a box!? Maybe over a certain number of lines? Let me test it!</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">if</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span><span class="k2">}</span>
<span class="number">  4</span><span class="k1">if</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span>
<span class="number">  5</span><span class="k2">{</span>
<span class="number">  6</span><span class="k2">}</span>
<span class="number">  7</span><span class="k1">if</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span>
<span class="number">  8</span><span class="k2">{</span>
<span class="number">  9</span><span class="k2">}</span>
<span class="number"> 10</span><span class="k1">if</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span>
<span class="number"> 11</span><span class="k2">{</span>
<span class="number"> 12</span><span class="k2">}</span>
<span class="number"> 13</span><span class="k1">if</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span>
<span class="number"> 14</span><span class="k2">{</span>
<span class="number"> 15</span><span class="k2">}</span>
<span class="number"> 16</span><span class="k1">if</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span>
<span class="number"> 17</span><span class="k2">{</span>
<span class="number"> 18</span><span class="k2">}</span>
<span class="number"> 19</span><span class="k1">if</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span>
<span class="number"> 20</span><span class="k2">{</span>
<span class="number"> 21</span><span class="k2">}</span>
</div></div><p>

</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">if</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span>
<span class="k2">{</span>
<span class="k2">}</span>
</pre></div></div><p>

Yeah I think it&#39;s just if you have too many lines it puts it in a box!!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Fri, 28 Apr 2023 20:54:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ace - click formatting help right next to preview in reply to post.</p><p>&lt;code&gt;code goes here&lt;/code&gt; code tags
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 28 Apr 2023 21:16:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks Edgar, I&#39;ve use the Formatting help box several times.  I thought it put everything in a code box not just format it.</p><p>So Dizzy your saying </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">if</span><span class="k2">(</span>COL <span class="k3">&gt;</span> LIMIT<span class="k2">)</span>
<span class="number"> 2</span>   codebox<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 3</span><span class="k1">else</span>
<span class="number"> 4</span>   textbox<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>

See no matter how few lines I get the box.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Fri, 28 Apr 2023 21:23:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, that&#39;s bad in my opinion. Too easy to add a line and have a dangling if.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 28 Apr 2023 21:48:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh that’s odd! I only seem to get a box of add lots of lines! Maybe a newline/carriage return OS thingy…
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Fri, 28 Apr 2023 22:00:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I agree Edgar.  I was minimizing to see if I got the correct formatting.  </p><p>I also agree the braces are clearer.  I&#39;ve had a few times where the indention gets messed up in copy/paste and shifting code around.  With a single line if/else, followed by a mis-indented line, it&#39;s easy to forget what goes with what.</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="number">  2</span><span class="k1">if</span><span class="k2">(</span><span class="k1">this</span> <span class="k3">=</span><span class="k3">=</span> that<span class="k2">)</span>
<span class="number">  3</span><span class="k2">{</span> 
<span class="number">  4</span>  BunchOfStuff<span class="k2">(</span>Do<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span><span class="k2">}</span>
<span class="number">  6</span><span class="k1">else</span>
<span class="number">  7</span>  DoNothing<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>  WhoAmI<span class="k2">(</span><span class="k1">else</span> <span class="k3">|</span><span class="k3">|</span> NDependent<span class="k2">)</span><span class="k2">;</span>  <span class="c">// easy to forget this isn't associated with the else</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AceBlkwell)</author>
		<pubDate>Sat, 29 Apr 2023 00:20:57 +0000</pubDate>
	</item>
</rss>
