<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Need help with input_feild();</title>
		<link>http://www.allegro.cc/forums/view/617405</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 14 May 2018 21:48:13 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I want to create a function which accepts&#39;s key presses and displays them in a rectangular box (field). <br />I tried a logic which failed because a char cannot be converted to a string.</p><p>here&#39;s the logic.<br />    char str*;<br />    str = &#39;a&#39; + event.keyboard.keycode - 1;</p><p>Here&#39;s my updated version but still not working. showing signs of memory leak,           Please Help!</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">int</span> input_field<span class="k2">(</span><span class="k1">int</span> x1, <span class="k1">int</span> y1, <span class="k1">int</span> x2, <span class="k1">int</span> y2, <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> colorU, <span class="k1">float</span> boundry, <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> boundry_color, <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> <span class="k3">&amp;</span>event, <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>ev_queue<span class="k2">)</span>
<span class="number">   2</span><span class="k2">{</span>
<span class="number">   3</span>    <span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">   4</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_rounded_rectangle"><span class="a">al_draw_filled_rounded_rectangle</span></a><span class="k2">(</span>x1, y1, x2, y2, <span class="n">10</span>, <span class="n">10</span>, colorU<span class="k2">)</span><span class="k2">;</span>
<span class="number">   5</span>    <a href="http://www.allegro.cc/manual/al_draw_rounded_rectangle"><span class="a">al_draw_rounded_rectangle</span></a><span class="k2">(</span>x1, y1, x2, y2, <span class="n">10</span>, <span class="n">10</span>, boundry_color, boundry<span class="k2">)</span><span class="k2">;</span>
<span class="number">   6</span>
<span class="number">   7</span>    <span class="k1">if</span><span class="k2">(</span>event.mouse.x <span class="k3">&gt;</span><span class="k3">=</span> x1 <span class="k3">&amp;</span><span class="k3">&amp;</span> event.mouse.x <span class="k3">&lt;</span><span class="k3">=</span> x2 <span class="k3">&amp;</span><span class="k3">&amp;</span> event.mouse.y <span class="k3">&gt;</span><span class="k3">=</span> y1 <span class="k3">&amp;</span><span class="k3">&amp;</span> event.mouse.y <span class="k3">&lt;</span><span class="k3">=</span> y2 <span class="k3">&amp;</span><span class="k3">&amp;</span> event.mouse.button <span class="k3">&amp;</span> <span class="n">1</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_DOWN<span class="k2">)</span>
<span class="number">   8</span>    <span class="k2">{</span>
<span class="number">   9</span>        <span class="k1">char</span><span class="k3">*</span> str1<span class="k2">;</span>
<span class="number">  10</span>        <span class="c">//int p=0;</span>
<span class="number">  11</span>        <span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span>
<span class="number">  12</span>        <span class="k2">{</span>
<span class="number">  13</span>            <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <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">0</span>, <span class="n">153</span>, <span class="n">0</span><span class="k2">)</span>, x1<span class="k3">+</span><span class="n">5</span><span class="k3">+</span>x, y1<span class="k3">+</span><span class="n">5</span>, <span class="n">1</span>, <span class="s">"|"</span><span class="k2">)</span><span class="k2">;</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>ev_queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  15</span>            <span class="k1">switch</span><span class="k2">(</span>event.keyboard.keycode<span class="k2">)</span>
<span class="number">  16</span>            <span class="k2">{</span>
<span class="number">  17</span>            <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span>
<span class="number">  18</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"a"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  20</span>            <span class="k1">case</span> <span class="n">2</span><span class="k2">:</span>
<span class="number">  21</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"b"</span><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> <span class="n">3</span><span class="k2">:</span>
<span class="number">  24</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"c"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  26</span>            <span class="k1">case</span> <span class="n">4</span><span class="k2">:</span>
<span class="number">  27</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"d"</span><span class="k2">)</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="k1">case</span> <span class="n">5</span><span class="k2">:</span>
<span class="number">  30</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"e"</span><span class="k2">)</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="k1">case</span> <span class="n">6</span><span class="k2">:</span>
<span class="number">  33</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"f"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  35</span>            <span class="k1">case</span> <span class="n">7</span><span class="k2">:</span>
<span class="number">  36</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"g"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  38</span>            <span class="k1">case</span> <span class="n">8</span><span class="k2">:</span>
<span class="number">  39</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"h"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  41</span>            <span class="k1">case</span> <span class="n">9</span><span class="k2">:</span>
<span class="number">  42</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"i"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  44</span>            <span class="k1">case</span> <span class="n">10</span><span class="k2">:</span>
<span class="number">  45</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"j"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  47</span>            <span class="k1">case</span> <span class="n">11</span><span class="k2">:</span>
<span class="number">  48</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"k"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  49</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  50</span>            <span class="k1">case</span> <span class="n">12</span><span class="k2">:</span>
<span class="number">  51</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"l"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  53</span>            <span class="k1">case</span> <span class="n">13</span><span class="k2">:</span>
<span class="number">  54</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"m"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  56</span>            <span class="k1">case</span> <span class="n">14</span><span class="k2">:</span>
<span class="number">  57</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  59</span>            <span class="k1">case</span> <span class="n">15</span><span class="k2">:</span>
<span class="number">  60</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"o"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  62</span>            <span class="k1">case</span> <span class="n">16</span><span class="k2">:</span>
<span class="number">  63</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"p"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  65</span>            <span class="k1">case</span> <span class="n">17</span><span class="k2">:</span>
<span class="number">  66</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"q"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  68</span>            <span class="k1">case</span> <span class="n">18</span><span class="k2">:</span>
<span class="number">  69</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"r"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  71</span>            <span class="k1">case</span> <span class="n">19</span><span class="k2">:</span>
<span class="number">  72</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"s"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  74</span>            <span class="k1">case</span> <span class="n">20</span><span class="k2">:</span>
<span class="number">  75</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"t"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  77</span>            <span class="k1">case</span> <span class="n">21</span><span class="k2">:</span>
<span class="number">  78</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"u"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  80</span>            <span class="k1">case</span> <span class="n">22</span><span class="k2">:</span>
<span class="number">  81</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"v"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  82</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  83</span>            <span class="k1">case</span> <span class="n">23</span><span class="k2">:</span>
<span class="number">  84</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"w"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  85</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  86</span>            <span class="k1">case</span> <span class="n">24</span><span class="k2">:</span>
<span class="number">  87</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"x"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  89</span>            <span class="k1">case</span> <span class="n">25</span><span class="k2">:</span>
<span class="number">  90</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"y"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number">  92</span>            <span class="k1">case</span> <span class="n">26</span><span class="k2">:</span>
<span class="number">  93</span>                <a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>str1, <span class="s">"z"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>                <span class="k1">break</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_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <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">0</span>, <span class="n">153</span>, <span class="n">0</span><span class="k2">)</span>, x1<span class="k3">+</span><span class="n">10</span>, y1<span class="k3">+</span><span class="n">5</span>, <span class="n">1</span>, str1<span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>            x<span class="k3">+</span><span class="n">5</span><span class="k2">;</span>
<span class="number">  98</span>            <span class="c">//printf("%s", str1);</span>
<span class="number">  99</span>            <span class="k1">if</span><span class="k2">(</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ENTER<span class="k2">)</span>
<span class="number"> 100</span>            <span class="k2">{</span>
<span class="number"> 101</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 102</span>            <span class="k2">}</span>
<span class="number"> 103</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"> 104</span>
<span class="number"> 105</span>        <span class="k2">}</span>
<span class="number"> 106</span>    <span class="k2">}</span>
<span class="number"> 107</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 108</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Doctor Cop)</author>
		<pubDate>Sat, 05 May 2018 21:55:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Instead of using keyboard.keycode try using keyboard.unichar</p><p>see:  <a href="http://liballeg.org/a5docs/trunk/events.html">http://liballeg.org/a5docs/trunk/events.html</a></p><p>look under the ALLEGRO_EVENT_KEY_CHAR section</p><p>then you wont need 26 case blocks...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Weiss)</author>
		<pubDate>Sat, 05 May 2018 22:10:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I want help with converting char to string also or a way to draw the unichar in al_draw_text(); function, if you can help please reply.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Doctor Cop)</author>
		<pubDate>Sat, 05 May 2018 22:33:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/617405/1037250#target">Doctor Cop</a> said:</div><div class="quote"><p> converting char to string</p></div></div><p>I would typically do that:</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;sstream&gt;</span>
<span class="p">#include &lt;string&gt;</span>


<span class="k1">char</span> c <span class="k3">=</span> <span class="s">'p'</span><span class="k2">;</span>
std::string result<span class="k2">;</span>

std::stringstream ss<span class="k2">;</span>
ss <span class="k3">&lt;</span><span class="k3">&lt;</span> c<span class="k2">;</span>
result <span class="k3">=</span> ss.str<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Sat, 05 May 2018 22:45:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>To convert a char to a string you could do this:</p><p>int chr = 65; // &quot;A&quot;<br />char str[256]; <br />str[0] = chr;<br />str[1] = NULL;</p><p>or </p><p>int chr = 65; // &quot;A&quot;<br />char str[256]; <br />sprintf(str, &quot;%c&quot;, chr);</p><p>There are probably better ways to do this though, I&#39;m looking forward to being corrected!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Weiss)</author>
		<pubDate>Sun, 06 May 2018 00:11:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><b>*Mark Oates</b>*.</p><p>I am using C so I can&#39;t use C++ strings!<br />and <br />thanks for help <b>*Michel Weiss</b>* but I actually thought of it earlier, it didn&#39;t work.<br />I can&#39;t convert str[256] to a char* and that&#39;s the real problem. <br />How to print different chars with exact distance replacement as in a string.</p><p>If there&#39;s a way to create an input field like some library for allegro5 or code for that, please share.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Doctor Cop)</author>
		<pubDate>Sun, 06 May 2018 00:32:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I implemented my own editable text field like this.<br />Its not pretty, but it works for me.<br />I needed a way to let the user edit the server name or IP address for netgame.</p><p>Sorry its not a simple example with only the editable text field part.</p><p>I had to include my function that shows the cursor position and my proc_controller<br />function that processes the event queue...etc</p><p>Its quite a lot of stuff, but maybe there&#39;s something in there you can use...</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">char</span> fst<span class="k2">[</span><span class="n">80</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">   3</span><span class="k1">extern</span> <span class="k1">char</span> m_serveraddress<span class="k2">[</span><span class="n">256</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">   4</span>
<span class="number">   5</span><span class="k1">void</span> edit_server_name<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">   6</span><span class="k2">{</span>
<span class="number">   7</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_756.html" target="_blank">strcpy</a><span class="k2">(</span>fst, m_serveraddress<span class="k2">)</span><span class="k2">;</span>
<span class="number">   8</span>   <span class="k1">int</span> char_count <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_764.html" target="_blank">strlen</a><span class="k2">(</span>fst<span class="k2">)</span><span class="k2">;</span>
<span class="number">   9</span>   <span class="k1">int</span> cursor_pos<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  10</span>   <span class="k1">int</span> old_cp<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  11</span>   <span class="k1">int</span> blink_count <span class="k3">=</span> <span class="n">3</span><span class="k2">;</span>
<span class="number">  12</span>   <span class="k1">int</span> blink_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  13</span>   <span class="k1">while</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_ENTER<span class="k2">]</span><span class="k2">)</span> proc_controllers<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  14</span>   <span class="k1">int</span> quit <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  15</span>   <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>quit<span class="k2">)</span>
<span class="number">  16</span>   <span class="k2">{</span>
<span class="number">  17</span>      <span class="k1">int</span> tx <span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a><span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number">  18</span>      <span class="k1">int</span> ty <span class="k3">=</span> <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a><span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number">  19</span>      <span class="k1">int</span> tw <span class="k3">=</span> <span class="k2">(</span>char_count<span class="k3">+</span><span class="n">1</span><span class="k2">)</span><span class="k3">*</span><span class="n">4</span><span class="k2">;</span>
<span class="number">  20</span>
<span class="number">  21</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">  22</span>      <span class="c">// clear text background</span>
<span class="number">  23</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>tx-tw-8, ty-4-2, tx<span class="k3">+</span>tw<span class="k3">+</span><span class="n">18</span>, ty<span class="k3">+</span><span class="n">4</span><span class="k3">+</span><span class="n">3</span>, <a href="http://www.allegro.cc/manual/palette_color"><span class="a">palette_color</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span>
<span class="number">  25</span>      <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/palette_color"><span class="a">palette_color</span></a><span class="k2">[</span><span class="n">15</span><span class="k2">]</span>, tx, ty-14, ALLEGRO_ALIGN_CENTER, <span class="s">"Set Server IP or Hostname"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>      <span class="c">// frame text</span>
<span class="number">  27</span>      <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a>       <span class="k2">(</span>tx-tw-1, ty-4-1, tx<span class="k3">+</span>tw<span class="k3">+</span><span class="n">6</span>, ty<span class="k3">+</span><span class="n">6</span>, <a href="http://www.allegro.cc/manual/palette_color"><span class="a">palette_color</span></a><span class="k2">[</span><span class="n">15</span><span class="k2">]</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>
<span class="number">  29</span>      rtextout_centre<span class="k2">(</span>NULL, fst, tx, ty<span class="k3">+</span><span class="n">1</span>, <span class="n">15</span>, <span class="n">1</span>, <span class="n">0</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>
<span class="number">  31</span>      <span class="k1">if</span> <span class="k2">(</span>blink_counter<span class="k3">+</span><span class="k3">+</span> <span class="k3">&lt;</span> blink_count<span class="k2">)</span> show_cursor<span class="k2">(</span>fst, cursor_pos, tx, ty-3, <span class="n">15</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  32</span>      <span class="k1">else</span> show_cursor<span class="k2">(</span>fst, cursor_pos, tx, ty-3, <span class="n">15</span>, <span class="n">1</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span>      <span class="k1">if</span> <span class="k2">(</span>blink_counter&gt; blink_count<span class="k3">*</span><span class="n">2</span><span class="k2">)</span> blink_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  34</span>
<span class="number">  35</span>      <span class="k1">if</span> <span class="k2">(</span>cursor_pos <span class="k3">!</span><span class="k3">=</span> old_cp<span class="k2">)</span>
<span class="number">  36</span>      <span class="k2">{</span>
<span class="number">  37</span>         show_cursor<span class="k2">(</span>fst, old_cp, tx, ty-3, <span class="n">15</span>, <span class="n">1</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// erase old blinking cursor if moved</span>
<span class="number">  38</span>         old_cp <span class="k3">=</span> cursor_pos<span class="k2">;</span>
<span class="number">  39</span>         blink_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  40</span>      <span class="k2">}</span>
<span class="number">  41</span>
<span class="number">  42</span>      <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span>.<span class="n">08</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>      <span class="k1">int</span> k <span class="k3">=</span> proc_controllers<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_RIGHT<span class="k2">]</span><span class="k2">)</span>
<span class="number">  45</span>      <span class="k2">{</span>
<span class="number">  46</span>         <span class="k1">if</span> <span class="k2">(</span><span class="k3">+</span><span class="k3">+</span>cursor_pos <span class="k3">&gt;</span> char_count<span class="k2">)</span> cursor_pos <span class="k3">=</span> char_count<span class="k2">;</span>
<span class="number">  47</span>      <span class="k2">}</span>
<span class="number">  48</span>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_LEFT<span class="k2">]</span><span class="k2">)</span>
<span class="number">  49</span>      <span class="k2">{</span>
<span class="number">  50</span>         <span class="k1">if</span> <span class="k2">(</span><span class="k3">-</span><span class="k3">-</span>cursor_pos <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> cursor_pos <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  51</span>      <span class="k2">}</span>
<span class="number">  52</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_DELETE<span class="k2">]</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>cursor_pos <span class="k3">&lt;</span> char_count<span class="k2">)</span><span class="k2">)</span>
<span class="number">  53</span>      <span class="k2">{</span>
<span class="number">  54</span>         <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> a <span class="k3">=</span> cursor_pos<span class="k2">;</span> a <span class="k3">&lt;</span> char_count<span class="k2">;</span> a<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  55</span>           fst<span class="k2">[</span>a<span class="k2">]</span><span class="k3">=</span>fst<span class="k2">[</span>a<span class="k3">+</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  56</span>         <span class="k3">-</span><span class="k3">-</span>char_count<span class="k2">;</span>
<span class="number">  57</span>         fst<span class="k2">[</span>char_count<span class="k2">]</span> <span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>NULL<span class="k2">;</span> <span class="c">// set last to NULL</span>
<span class="number">  58</span>      <span class="k2">}</span>
<span class="number">  59</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_BACKSPACE<span class="k2">]</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>cursor_pos <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  60</span>      <span class="k2">{</span>
<span class="number">  61</span>         cursor_pos--<span class="k2">;</span>
<span class="number">  62</span>         <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> a <span class="k3">=</span> cursor_pos<span class="k2">;</span> a <span class="k3">&lt;</span> char_count<span class="k2">;</span> a<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  63</span>           fst<span class="k2">[</span>a<span class="k2">]</span><span class="k3">=</span>fst<span class="k2">[</span>a<span class="k3">+</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  64</span>         char_count--<span class="k2">;</span>
<span class="number">  65</span>         fst<span class="k2">[</span>char_count<span class="k2">]</span> <span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>NULL<span class="k2">;</span> <span class="c">// set last to NULL</span>
<span class="number">  66</span>      <span class="k2">}</span>
<span class="number">  67</span>
<span class="number">  68</span>      k <span class="k3">=</span> Key_pressed_ASCII<span class="k2">;</span>
<span class="number">  69</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>k&gt;31<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>k<span class="k3">&lt;</span><span class="n">127</span><span class="k2">)</span><span class="k2">)</span> <span class="c">// insert if alphanumeric or return</span>
<span class="number">  70</span>      <span class="k2">{</span>
<span class="number">  71</span>         <span class="c">// move over to make room</span>
<span class="number">  72</span>         <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> a <span class="k3">=</span> char_count<span class="k2">;</span> a&gt;<span class="k3">=</span>cursor_pos<span class="k2">;</span> a--<span class="k2">)</span>
<span class="number">  73</span>            fst<span class="k2">[</span>a<span class="k3">+</span><span class="n">1</span><span class="k2">]</span><span class="k3">=</span>fst<span class="k2">[</span>a<span class="k2">]</span><span class="k2">;</span>
<span class="number">  74</span>
<span class="number">  75</span>         <span class="c">// set char</span>
<span class="number">  76</span>         fst<span class="k2">[</span>cursor_pos<span class="k2">]</span> <span class="k3">=</span> k<span class="k2">;</span>
<span class="number">  77</span>
<span class="number">  78</span>         <span class="c">// inc both</span>
<span class="number">  79</span>         cursor_pos<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  80</span>         char_count<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number">  81</span>
<span class="number">  82</span>         fst<span class="k2">[</span>char_count<span class="k2">]</span> <span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>NULL<span class="k2">;</span> <span class="c">// set last to NULL</span>
<span class="number">  83</span>      <span class="k2">}</span>
<span class="number">  84</span>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_ENTER<span class="k2">]</span><span class="k2">)</span>
<span class="number">  85</span>      <span class="k2">{</span>
<span class="number">  86</span>         <span class="k1">while</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_ENTER<span class="k2">]</span><span class="k2">)</span> proc_controllers<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_756.html" target="_blank">strcpy</a><span class="k2">(</span>m_serveraddress, fst<span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>         quit <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  89</span>      <span class="k2">}</span>
<span class="number">  90</span>
<span class="number">  91</span>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_ESCAPE<span class="k2">]</span><span class="k2">)</span>
<span class="number">  92</span>      <span class="k2">{</span>
<span class="number">  93</span>         <span class="k1">while</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_ESCAPE<span class="k2">]</span><span class="k2">)</span> proc_controllers<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>         quit <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  95</span>      <span class="k2">}</span>
<span class="number">  96</span>   <span class="k2">}</span>
<span class="number">  97</span><span class="k2">}</span>
<span class="number">  98</span>
<span class="number">  99</span>
<span class="number"> 100</span><span class="k1">void</span> show_cursor<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>f, <span class="k1">int</span> cursor_pos, <span class="k1">int</span> xpos_c, <span class="k1">int</span> ypos, <span class="k1">int</span> cursor_color, <span class="k1">int</span> restore, <span class="k1">int</span> rot<span class="k2">)</span>
<span class="number"> 101</span><span class="k2">{</span>
<span class="number"> 102</span>   <span class="k1">int</span> len <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_764.html" target="_blank">strlen</a><span class="k2">(</span>f<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 103</span>   <span class="k1">char</span> dt<span class="k2">[</span><span class="n">40</span><span class="k2">]</span><span class="k2">[</span><span class="n">120</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 104</span>   <span class="k1">int</span> row<span class="k3">=</span><span class="n">0</span>, col<span class="k3">=</span><span class="n">0</span>, cursor_row<span class="k3">=</span><span class="n">0</span>, cursor_col<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 105</span>   <span class="c">// get cursor row and column and fill dt</span>
<span class="number"> 106</span>   <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> a<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> a<span class="k3">&lt;</span>len<span class="k3">+</span><span class="n">1</span><span class="k2">;</span> a<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 107</span>   <span class="k2">{</span>
<span class="number"> 108</span>      <span class="k1">if</span> <span class="k2">(</span>a <span class="k3">=</span><span class="k3">=</span> cursor_pos<span class="k2">)</span>
<span class="number"> 109</span>      <span class="k2">{</span>
<span class="number"> 110</span>         cursor_row <span class="k3">=</span> row<span class="k2">;</span>
<span class="number"> 111</span>         cursor_col <span class="k3">=</span> col<span class="k2">;</span>
<span class="number"> 112</span>      <span class="k2">}</span>
<span class="number"> 113</span>      <span class="k1">if</span> <span class="k2">(</span>f<span class="k2">[</span>a<span class="k2">]</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">13</span><span class="k2">)</span> <span class="c">// line break</span>
<span class="number"> 114</span>      <span class="k2">{</span>
<span class="number"> 115</span>         row<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 116</span>         col<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 117</span>         dt<span class="k2">[</span>row<span class="k2">]</span><span class="k2">[</span>col<span class="k2">]</span> <span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>NULL<span class="k2">;</span> <span class="c">// in case len = 0</span>
<span class="number"> 118</span>      <span class="k2">}</span>
<span class="number"> 119</span>      <span class="k1">else</span>  <span class="c">// regular char</span>
<span class="number"> 120</span>      <span class="k2">{</span>
<span class="number"> 121</span>         dt<span class="k2">[</span>row<span class="k2">]</span><span class="k2">[</span>col<span class="k2">]</span> <span class="k3">=</span> f<span class="k2">[</span>a<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 122</span>         col<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 123</span>         dt<span class="k2">[</span>row<span class="k2">]</span><span class="k2">[</span>col<span class="k2">]</span> <span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>NULL<span class="k2">;</span>
<span class="number"> 124</span>      <span class="k2">}</span>
<span class="number"> 125</span>   <span class="k2">}</span>
<span class="number"> 126</span>
<span class="number"> 127</span>   <span class="c">// make a string from the cursor text char</span>
<span class="number"> 128</span>   msg<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> f<span class="k2">[</span>cursor_pos<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 129</span>   msg<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 130</span>
<span class="number"> 131</span>   <span class="k1">int</span> x, y<span class="k2">;</span>
<span class="number"> 132</span>   x <span class="k3">=</span> cursor_col<span class="k3">*</span><span class="n">8</span><span class="k3">+</span>xpos_c <span class="k3">-</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_764.html" target="_blank">strlen</a><span class="k2">(</span>dt<span class="k2">[</span>cursor_row<span class="k2">]</span><span class="k2">)</span><span class="k3">*</span><span class="n">4</span><span class="k2">;</span>
<span class="number"> 133</span>   y <span class="k3">=</span> ypos<span class="k3">+</span>cursor_row<span class="k3">*</span><span class="n">8</span><span class="k2">;</span>
<span class="number"> 134</span>
<span class="number"> 135</span>   <span class="k1">if</span> <span class="k2">(</span>restore<span class="k2">)</span> <span class="c">// black background, text color text</span>
<span class="number"> 136</span>   <span class="k2">{</span>
<span class="number"> 137</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>x, y, x<span class="k3">+</span><span class="n">8</span>, y<span class="k3">+</span><span class="n">8</span>, <a href="http://www.allegro.cc/manual/palette_color"><span class="a">palette_color</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 138</span>      <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/palette_color"><span class="a">palette_color</span></a><span class="k2">[</span>cursor_color<span class="k2">]</span>, x, y, <span class="n">0</span>, msg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 139</span>   <span class="k2">}</span>
<span class="number"> 140</span>
<span class="number"> 141</span>   <span class="k1">else</span> <span class="c">// red background, black text</span>
<span class="number"> 142</span>   <span class="k2">{</span>
<span class="number"> 143</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>x, y, x<span class="k3">+</span><span class="n">8</span>, y<span class="k3">+</span><span class="n">8</span>, <a href="http://www.allegro.cc/manual/palette_color"><span class="a">palette_color</span></a><span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>      <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/palette_color"><span class="a">palette_color</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, x, y, <span class="n">0</span>, msg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 145</span>   <span class="k2">}</span>
<span class="number"> 146</span><span class="k2">}</span>
<span class="number"> 147</span>
<span class="number"> 148</span>
<span class="number"> 149</span>
<span class="number"> 150</span><span class="k1">int</span> proc_events<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev, <span class="k1">int</span> ret<span class="k2">)</span>
<span class="number"> 151</span><span class="k2">{</span>
<span class="number"> 152</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> fast_exit<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 153</span>   <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_WARPED<span class="k2">)</span>
<span class="number"> 154</span>   <span class="k2">{</span>
<span class="number"> 155</span>      <a href="http://www.allegro.cc/manual/mouse_x"><span class="a">mouse_x</span></a> <span class="k3">=</span> ev.mouse.x <span class="k3">/</span> les<span class="k2">;</span>
<span class="number"> 156</span>      <a href="http://www.allegro.cc/manual/mouse_y"><span class="a">mouse_y</span></a> <span class="k3">=</span> ev.mouse.y <span class="k3">/</span> les<span class="k2">;</span>
<span class="number"> 157</span>   <span class="k2">}</span>
<span class="number"> 158</span>   <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_AXES<span class="k2">)</span>
<span class="number"> 159</span>   <span class="k2">{</span>
<span class="number"> 160</span>      <a href="http://www.allegro.cc/manual/mouse_x"><span class="a">mouse_x</span></a> <span class="k3">=</span> ev.mouse.x <span class="k3">/</span> les<span class="k2">;</span>
<span class="number"> 161</span>      <a href="http://www.allegro.cc/manual/mouse_y"><span class="a">mouse_y</span></a> <span class="k3">=</span> ev.mouse.y <span class="k3">/</span> les<span class="k2">;</span>
<span class="number"> 162</span>      <a href="http://www.allegro.cc/manual/mouse_z"><span class="a">mouse_z</span></a> <span class="k3">=</span> ev.mouse.z <span class="k3">/</span> les<span class="k2">;</span>
<span class="number"> 163</span>      mouse_dx <span class="k3">=</span> ev.mouse.dx<span class="k2">;</span>
<span class="number"> 164</span>      mouse_dy <span class="k3">=</span> ev.mouse.dy<span class="k2">;</span>
<span class="number"> 165</span>      mouse_dz <span class="k3">=</span> ev.mouse.dz<span class="k2">;</span>
<span class="number"> 166</span>   <span class="k2">}</span>
<span class="number"> 167</span>   <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_DOWN<span class="k2">)</span>
<span class="number"> 168</span>   <span class="k2">{</span>
<span class="number"> 169</span>      <span class="k1">if</span> <span class="k2">(</span>ev.mouse.button <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> mouse_b1 <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 170</span>      <span class="k1">if</span> <span class="k2">(</span>ev.mouse.button <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span> mouse_b2 <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 171</span>      <span class="k1">if</span> <span class="k2">(</span>ev.mouse.button <span class="k3">=</span><span class="k3">=</span> <span class="n">3</span><span class="k2">)</span> mouse_b3 <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 172</span>      <span class="k1">if</span> <span class="k2">(</span>ev.mouse.button <span class="k3">=</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span> mouse_b4 <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 173</span>   <span class="k2">}</span>
<span class="number"> 174</span>   <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_UP<span class="k2">)</span>
<span class="number"> 175</span>   <span class="k2">{</span>
<span class="number"> 176</span>      <span class="k1">if</span> <span class="k2">(</span>ev.mouse.button <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> mouse_b1 <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 177</span>      <span class="k1">if</span> <span class="k2">(</span>ev.mouse.button <span class="k3">=</span><span class="k3">=</span> <span class="n">2</span><span class="k2">)</span> mouse_b2 <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 178</span>      <span class="k1">if</span> <span class="k2">(</span>ev.mouse.button <span class="k3">=</span><span class="k3">=</span> <span class="n">3</span><span class="k2">)</span> mouse_b3 <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 179</span>      <span class="k1">if</span> <span class="k2">(</span>ev.mouse.button <span class="k3">=</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span> mouse_b4 <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 180</span>   <span class="k2">}</span>
<span class="number"> 181</span>   <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span>
<span class="number"> 182</span>   <span class="k2">{</span>
<span class="number"> 183</span>      <span class="k1">int</span> k <span class="k3">=</span> ev.keyboard.keycode<span class="k2">;</span>
<span class="number"> 184</span>      <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>k<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 185</span>      ret <span class="k3">=</span> k<span class="k2">;</span>
<span class="number"> 186</span>   <span class="k2">}</span>
<span class="number"> 187</span>   <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_UP<span class="k2">)</span>
<span class="number"> 188</span>   <span class="k2">{</span>
<span class="number"> 189</span>      <span class="k1">int</span> k <span class="k3">=</span> ev.keyboard.keycode<span class="k2">;</span>
<span class="number"> 190</span>      <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>k<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 191</span>      <span class="k1">if</span> <span class="k2">(</span>k <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_PRINTSCREEN<span class="k2">)</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>k<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span> <span class="c">// special exception to make PRINTSCREEN work</span>
<span class="number"> 192</span>   <span class="k2">}</span>
<span class="number"> 193</span>   <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR<span class="k2">)</span>
<span class="number"> 194</span>   <span class="k2">{</span>
<span class="number"> 195</span>      Key_pressed_ASCII <span class="k3">=</span> ev.keyboard.unichar<span class="k2">;</span>
<span class="number"> 196</span>   <span class="k2">}</span>
<span class="number"> 197</span>   <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_JOYSTICK_AXIS<span class="k2">)</span>
<span class="number"> 198</span>   <span class="k2">{</span>
<span class="number"> 199</span>      <span class="k1">int</span> jy <span class="k3">=</span> getJoystickNum<span class="k2">(</span>ev.joystick.id<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 200</span>      <span class="k1">int</span> jo <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// offset</span>
<span class="number"> 201</span>      <span class="k1">if</span> <span class="k2">(</span>jy <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> jo <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 202</span>      <span class="k1">if</span> <span class="k2">(</span>jy <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> jo <span class="k3">=</span> <span class="n">20</span><span class="k2">;</span>
<span class="number"> 203</span>      <span class="k1">int</span> ax <span class="k3">=</span> ev.joystick.axis<span class="k2">;</span>
<span class="number"> 204</span>      <span class="k1">float</span> pos <span class="k3">=</span> ev.joystick.pos<span class="k2">;</span>
<span class="number"> 205</span>      <span class="k1">if</span> <span class="k2">(</span>ax <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="c">// x axis</span>
<span class="number"> 206</span>      <span class="k2">{</span>
<span class="number"> 207</span>         <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span><span class="n">130</span><span class="k3">+</span>jo<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 208</span>         <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span><span class="n">131</span><span class="k3">+</span>jo<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 209</span>         <span class="k1">if</span> <span class="k2">(</span>pos <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span><span class="n">131</span><span class="k3">+</span>jo<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 210</span>         <span class="k1">if</span> <span class="k2">(</span>pos <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span><span class="n">130</span><span class="k3">+</span>jo<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 211</span>      <span class="k2">}</span>
<span class="number"> 212</span>      <span class="k1">if</span> <span class="k2">(</span>ax <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> <span class="c">// y axis</span>
<span class="number"> 213</span>      <span class="k2">{</span>
<span class="number"> 214</span>         <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span><span class="n">128</span><span class="k3">+</span>jo<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 215</span>         <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span><span class="n">129</span><span class="k3">+</span>jo<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 216</span>         <span class="k1">if</span> <span class="k2">(</span>pos <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span><span class="n">129</span><span class="k3">+</span>jo<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 217</span>         <span class="k1">if</span> <span class="k2">(</span>pos <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span><span class="n">128</span><span class="k3">+</span>jo<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 218</span>      <span class="k2">}</span>
<span class="number"> 219</span>   <span class="k2">}</span>
<span class="number"> 220</span>   <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_JOYSTICK_BUTTON_DOWN<span class="k2">)</span>
<span class="number"> 221</span>   <span class="k2">{</span>
<span class="number"> 222</span>      <span class="k1">int</span> jy <span class="k3">=</span> getJoystickNum<span class="k2">(</span>ev.joystick.id<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 223</span>      <span class="k1">int</span> sc <span class="k3">=</span> get_scan_code_from_joystick<span class="k2">(</span>jy, <span class="n">1</span>, ev.joystick.button<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 224</span>      <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>sc<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 225</span>   <span class="k2">}</span>
<span class="number"> 226</span>   <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_JOYSTICK_BUTTON_UP<span class="k2">)</span>
<span class="number"> 227</span>   <span class="k2">{</span>
<span class="number"> 228</span>      <span class="k1">int</span> jy <span class="k3">=</span> getJoystickNum<span class="k2">(</span>ev.joystick.id<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 229</span>      <span class="k1">int</span> sc <span class="k3">=</span> get_scan_code_from_joystick<span class="k2">(</span>jy, <span class="n">1</span>, ev.joystick.button<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 230</span>      <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>sc<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 231</span>   <span class="k2">}</span>
<span class="number"> 232</span>   <span class="k1">return</span> ret<span class="k2">;</span>
<span class="number"> 233</span><span class="k2">}</span>
<span class="number"> 234</span>
<span class="number"> 235</span>
<span class="number"> 236</span>
<span class="number"> 237</span>
<span class="number"> 238</span>
<span class="number"> 239</span>
<span class="number"> 240</span><span class="k1">int</span> proc_controllers<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 241</span><span class="k2">{</span>
<span class="number"> 242</span>   <span class="k1">int</span> ret <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 243</span>   <span class="k1">int</span> done <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 244</span>   <span class="k1">int</span> menu_timer_wait <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 245</span>
<span class="number"> 246</span>   <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_PRINTSCREEN<span class="k2">]</span><span class="k2">)</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_PRINTSCREEN<span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// special exception to make PRINTSCREEN work</span>
<span class="number"> 247</span>   Key_pressed_ASCII <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 248</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>fullscreen<span class="k2">)</span> <span class="c">// detect if window was moved</span>
<span class="number"> 249</span>   <span class="k2">{</span>
<span class="number"> 250</span>      <a href="http://www.allegro.cc/manual/al_get_window_position"><span class="a">al_get_window_position</span></a><span class="k2">(</span>display, <span class="k3">&amp;</span>l_spx, <span class="k3">&amp;</span>l_spy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 251</span>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>l_spx <span class="k3">!</span><span class="k3">=</span> disp_x_curr<span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <span class="k2">(</span>l_spy <span class="k3">!</span><span class="k3">=</span> disp_y_curr<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 252</span>      proc_screen_change<span class="k2">(</span>disp_w_curr, disp_h_curr, l_spx, l_spy, fullscreen<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 253</span>   <span class="k2">}</span>
<span class="number"> 254</span>   <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span>
<span class="number"> 255</span>   <span class="k2">{</span>
<span class="number"> 256</span>      done <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="c">// default</span>
<span class="number"> 257</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>event_queue<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 258</span>      <span class="k2">{</span>
<span class="number"> 259</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"> 260</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> menu_timer_wait <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 261</span>
<span class="number"> 262</span>         <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_next_event"><span class="a">al_get_next_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 263</span>         <span class="k2">{</span>
<span class="number"> 264</span>            <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_RESIZE<span class="k2">)</span>
<span class="number"> 265</span>            <span class="k2">{</span>
<span class="number"> 266</span>               <span class="c">// check to see if we have more resize events piling up</span>
<span class="number"> 267</span>               <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev2<span class="k2">;</span>
<span class="number"> 268</span>
<span class="number"> 269</span>               <span class="k1">while</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_next_event"><span class="a">al_get_next_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev2<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 270</span>               <span class="k2">{</span>
<span class="number"> 271</span>                  <span class="k1">if</span> <span class="k2">(</span>ev2.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_RESIZE<span class="k2">)</span> ev <span class="k3">=</span> ev2<span class="k2">;</span>
<span class="number"> 272</span>                  <span class="k1">else</span> ret <span class="k3">=</span> proc_events<span class="k2">(</span>ev2, ret<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 273</span>               <span class="k2">}</span>
<span class="number"> 274</span>               proc_screen_change<span class="k2">(</span>ev.display.width, ev.display.height, disp_x_curr, disp_y_curr, fullscreen<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 275</span>            <span class="k2">}</span>
<span class="number"> 276</span>            <span class="k1">else</span> ret <span class="k3">=</span> proc_events<span class="k2">(</span>ev, ret<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 277</span>         <span class="k2">}</span>
<span class="number"> 278</span>      <span class="k2">}</span>
<span class="number"> 279</span>
<span class="number"> 280</span>      <span class="k1">if</span> <span class="k2">(</span>game_exit<span class="k2">)</span> <span class="c">// if called from menu only do key check for active local player</span>
<span class="number"> 281</span>      <span class="k2">{</span>
<span class="number"> 282</span>          clear_keys<span class="k2">(</span>active_local_player<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 283</span>          player_key_check<span class="k2">(</span>active_local_player<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 284</span>          function_key_check<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 285</span>          <span class="k1">if</span> <span class="k2">(</span>menu_timer_wait<span class="k2">)</span> done <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 286</span>      <span class="k2">}</span>
<span class="number"> 287</span>      <span class="k1">else</span> <span class="c">// this is run if a game is in progress</span>
<span class="number"> 288</span>      <span class="k2">{</span>
<span class="number"> 289</span>         function_key_check<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 290</span>         <span class="k1">extern</span> <span class="k1">int</span> level_done<span class="k2">;</span>
<span class="number"> 291</span>
<span class="number"> 292</span>         <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> p<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> p<span class="k3">&lt;</span>NUM_PLAYERS<span class="k2">;</span> p<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 293</span>            <span class="k1">if</span> <span class="k2">(</span>players<span class="k2">[</span>p<span class="k2">]</span>.active<span class="k2">)</span> <span class="c">// cycle all active players</span>
<span class="number"> 294</span>            <span class="k2">{</span>
<span class="number"> 295</span>               <span class="k1">if</span> <span class="k2">(</span>players<span class="k2">[</span>p<span class="k2">]</span>.control_method <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="c">// local single player control</span>
<span class="number"> 296</span>               <span class="k2">{</span>
<span class="number"> 297</span>                  <span class="k1">if</span> <span class="k2">(</span>level_done<span class="k2">)</span> add_game_move<span class="k2">(</span>passcount, <span class="n">6</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// insert level done into game move</span>
<span class="number"> 298</span>                  clear_keys<span class="k2">(</span>p<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 299</span>                  player_key_check<span class="k2">(</span>p<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 300</span>                  set_comp_move_from_controls<span class="k2">(</span>p<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 301</span>                  <span class="k1">if</span> <span class="k2">(</span>players1<span class="k2">[</span>p<span class="k2">]</span>.comp_move <span class="k3">!</span><span class="k3">=</span> players1<span class="k2">[</span>p<span class="k2">]</span>.old_comp_move<span class="k2">)</span>
<span class="number"> 302</span>                  <span class="k2">{</span>
<span class="number"> 303</span>                     players1<span class="k2">[</span>p<span class="k2">]</span>.old_comp_move <span class="k3">=</span> players1<span class="k2">[</span>p<span class="k2">]</span>.comp_move<span class="k2">;</span>
<span class="number"> 304</span>                     add_game_move<span class="k2">(</span>passcount, <span class="n">5</span>, p, players1<span class="k2">[</span>p<span class="k2">]</span>.comp_move<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 305</span>                  <span class="k2">}</span>
<span class="number"> 306</span>               <span class="k2">}</span>
<span class="number"> 307</span>               <span class="k1">if</span> <span class="k2">(</span>players<span class="k2">[</span>p<span class="k2">]</span>.control_method <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> rungame_key_check<span class="k2">(</span>p, ret<span class="k2">)</span><span class="k2">;</span> <span class="c">// run game from file</span>
<span class="number"> 308</span>               <span class="p">#ifdef NETPLAY</span>
<span class="number"> 309</span>               <span class="k1">if</span> <span class="k2">(</span>players<span class="k2">[</span>p<span class="k2">]</span>.control_method <span class="k3">=</span><span class="k3">=</span> <span class="n">3</span><span class="k2">)</span> server_local_control<span class="k2">(</span>p<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 310</span>               <span class="k1">if</span> <span class="k2">(</span>players<span class="k2">[</span>p<span class="k2">]</span>.control_method <span class="k3">=</span><span class="k3">=</span> <span class="n">4</span><span class="k2">)</span> client_local_control<span class="k2">(</span>p<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 311</span>               <span class="p">#endif</span>
<span class="number"> 312</span>               set_controls_from_game_move<span class="k2">(</span>p<span class="k2">)</span><span class="k2">;</span> <span class="c">// common for all players</span>
<span class="number"> 313</span>            <span class="k2">}</span>   <span class="c">// end of active player iterate</span>
<span class="number"> 314</span>         proc_game_move<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">// run once per frame to process system messages from game_move</span>
<span class="number"> 315</span>      <span class="k2">}</span> <span class="c">// end of if (!game_exit)</span>
<span class="number"> 316</span>   <span class="k2">}</span>
<span class="number"> 317</span>   <span class="c">//printf("ret:%d\n", ret);</span>
<span class="number"> 318</span>   <span class="k1">return</span> ret<span class="k2">;</span>
<span class="number"> 319</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Weiss)</author>
		<pubDate>Sun, 06 May 2018 03:24:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/617405/1037254#target">Doctor Cop</a> said:</div><div class="quote"><p> I am using C so I can&#39;t use C++ strings!</p></div></div><p>Ah, okie dokie.  👍
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Sun, 06 May 2018 04:47:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You said: I can&#39;t convert str[256] to a char* and that&#39;s the real problem. </p><p>Why can&#39;t you convert str[256] to a char* ?</p><p>Are you trying to get a string to pass to &#39;al_draw_text()&#39; ?</p><p>Can you post some code that shows what you are trying to convert to what?<br />Or more specifically what you tried that didn&#39;t work?</p><p>Are you trying to build a string from char&#39;s returned from events?<br />That should be very simple to do.</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="c">// setup</span>
<span class="number">  3</span><span class="k1">char</span> str<span class="k2">[</span><span class="n">256</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  4</span>str<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  5</span>pos <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="c">// get a char from events and add it to the string</span>
<span class="number">  8</span>str<span class="k2">[</span>pos<span class="k2">]</span> <span class="k3">=</span> event.keyboard.unichar<span class="k2">;</span>
<span class="number">  9</span>pos<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 10</span>str<span class="k2">[</span>pos<span class="k2">]</span> <span class="k3">=</span> NULL<span class="k2">;</span> <span class="c">// make sure to terminate the string with NULL</span>
<span class="number"> 11</span>
<span class="number"> 12</span><span class="c">// display the string</span>
<span class="number"> 13</span><a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, color, x, y, <span class="n">0</span>, str<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

this will work, I&#39;ve done it many times.</p><p>char str[256] is an array of char<br />str is a pointer to the first element (just like any array)</p><p>Maybe I&#39;m missing something and you&#39;re trying to do something else, let us know.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Weiss)</author>
		<pubDate>Sun, 06 May 2018 05:50:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/617405/1037248#target">Doctor Cop</a> said:</div><div class="quote"><p>
I want to create a function which accepts&#39;s key presses and displays them in a rectangular box (field).<br />I tried a logic which failed because a char cannot be converted to a string.</p><p>here&#39;s the logic.<br />char str*;<br />str = &#39;a&#39; + event.keyboard.keycode - 1;</p><p>Here&#39;s my updated version but still not working. showing signs of memory leak, Please Help!</p><p>...
</p><div class="source-code snippet"><div class="inner"><pre> <span class="k1">char</span><span class="k3">*</span> str1<span class="k2">;</span>
</pre></div></div><p>
</p></div></div><p>
You&#39;re missing some fundamentals of C programming. First of all, &#39;str1&#39; in your code there is just a pointer. It is NOT a string. It&#39;s a pointer of type char. That means it points to a char value. You have to allocate memory for the string somewhere. Second of all you didn&#39;t initialize the value of &#39;str1&#39;. Which means it could hold ANY value.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/617405/1037254#target">Doctor Cop</a> said:</div><div class="quote"><p>
I can&#39;t convert str[256] to a char* and that&#39;s the real problem. 
</p></div></div><p>
Uh, why not? Did your compiler output an error? It shouldn&#39;t.</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">const</span> <span class="k1">int</span> BUFSIZE <span class="k3">=</span> <span class="n">1024</span><span class="k2">;</span>
<span class="number">  2</span><span class="k1">char</span> buf<span class="k2">[</span>BUFSIZE<span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">0</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="c">/// Option one, direct memory access</span>
<span class="number">  5</span>buf<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="s">'a'</span><span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="c">/// Option two, string concatenation</span>
<span class="number">  8</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_752.html" target="_blank">strcat</a><span class="k2">(</span>buf , <span class="s">"a"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="c">/// Option three, format string</span>
<span class="number"> 11</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span>buf , <span class="s">"%c"</span> , <span class="s">'a'</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span><span class="k1">char</span><span class="k3">*</span> alias <span class="k3">=</span> <span class="k3">&amp;</span>buf<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span><span class="c">/// Take the address of the first element of the char array</span>
<span class="number"> 14</span><span class="k1">char</span><span class="k3">*</span> alias2 <span class="k3">=</span> buf<span class="k2">;</span><span class="c">/// direct assignment works</span>
</div></div><p>

</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
If there&#39;s a way to create an input field like some library for allegro5 or code for that, please share. 
</p></div></div><p>

Here&#39;s an example of how to use an ALLEGRO_EVENT_KEY_CHAR event to create an input field :</p><p><a href="https://github.com/EdgarReynaldo/EagleGUI/blob/master/TINS2017/src/Game.cpp#L380-L443">https://github.com/EdgarReynaldo/EagleGUI/blob/master/TINS2017/src/Game.cpp#L380-L443</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 06 May 2018 08:00:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><b>Edgar Reynaldo</b>:-<br />Thank you for your advice and I was told that char* is a new way to initialize a string so that&#39;s why it happened. </p><p>You said and I quote &quot;Uh, why not? Did your compiler output an error? It shouldn&#39;t.&quot;,<br />Yes my compiler throws an error:- C++11 doesn&#39;t support conversion from char to a string.</p><p>Thanx for your link:- <a href="https://github.com/EdgarReynaldo/EagleGUI/blob/master/TINS2017/src/Game.cpp#L380-L443">https://github.com/EdgarReynaldo/EagleGUI/blob/master/TINS2017/src/Game.cpp#L380-L443</a>, I will make utilization of your code in future but for now, I want to know what I am doing wrong.</p><p><b>Michael Weiss</b>:-<br />Thank you for your suggestion but I already tried it and it successfully compiled but it produces a runtime error.<br />I am posting my compleat code so please read it, it&#39;s in attachments.<br />It just stops working when I click in my input_field() box.</p><p>For now, I replaced my code with your code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Doctor Cop)</author>
		<pubDate>Sun, 06 May 2018 10:02:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/617405/1037268#target">Doctor Cop</a> said:</div><div class="quote"><p>
Thank you for your advice and I was told that char* is a new way to initialize a string so that&#39;s why it happened. 
</p></div></div><p>
You have to understand what is happening when you declare a char* like that.</p><p>This code :
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">char</span><span class="k3">*</span> str <span class="k3">=</span> <span class="s">"some_text_goes_here"</span><span class="k2">;</span>
</pre></div></div><p>

actually translates to :
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">static</span> <span class="k1">char</span> str_array<span class="k2">[</span><span class="n">20</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="s">'s'</span>,<span class="s">'o'</span>,<span class="s">'m'</span>,<span class="s">'e'</span>,<span class="s">'_'</span>,<span class="s">'t'</span>,<span class="s">'e'</span>,<span class="s">'x'</span>,<span class="s">'t'</span>,<span class="s">'_'</span>,
                   <span class="s">'g'</span>,<span class="s">'o'</span>,<span class="s">'e'</span>,<span class="s">'s'</span>,<span class="s">'_'</span>,<span class="s">'h'</span>,<span class="s">'e'</span>,<span class="s">'r'</span>,<span class="s">'e'</span>,<span class="s">'\0'</span><span class="k2">}</span><span class="k2">;</span>
<span class="k1">char</span><span class="k3">*</span> str <span class="k3">=</span> <span class="k3">&amp;</span>str_array<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
</pre></div></div><p>

The compiler declares a static string and gives you a pointer to it.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Yes my compiler throws an error:- C++11 doesn&#39;t support conversion from char to a string.
</p></div></div><p>
You said you&#39;re using C, not C++11. Make up your mind. It makes a difference.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Thank you for your suggestion but I already tried it and it successfully compiled but it produces a runtime error.<br />I am posting my compleat code so please read it, it&#39;s in attachments.<br />It just stops working when I click in my input_field() box.
</p></div></div><p>
You&#39;re not using events properly at all. You HAVE to check the event type before you access the event union or else you will get complete garbage.</p><p>Try reading the manual. <a href="http://liballeg.org/a5docs/trunk/events.html">http://liballeg.org/a5docs/trunk/events.html</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 06 May 2018 10:36:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I want to make a GUI input field function which I can use for c and c++ both.</p><p>If I use any GUI API for my game instead of trying to create my own, will it be the optimal solution, I mean will my game become large by adding additional library just for GUI purpose.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Doctor Cop)</author>
		<pubDate>Sun, 06 May 2018 14:30:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In C++, you can&#39;t assign the value of a const char* (a string in C++) to a char*. It&#39;s illegal because the memory isn&#39;t yours. You have to declare your own buffer.</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">char</span><span class="k3">*</span> str <span class="k3">=</span> <span class="s">"abc"</span><span class="k2">;</span><span class="c">/// Illegal in C++, deprecated in C</span>
                  <span class="c">/// "abc" is a static const char array</span>
                  <span class="c">/// and it is illegal to remove the const without a cast</span>
</pre></div></div><p>

You don&#39;t need a GUI library for a single widget.</p><p>Check the event type first, and then access the union.</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>ev.type <span class="k3">=</span><span class="k3">=</span> EAGLE_EVENT_KEY_CHAR<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  2</span>   <span class="k1">int</span> kc <span class="k3">=</span> ev.keyboard.keycode<span class="k2">;</span>
<span class="number">  3</span>   <span class="k1">int</span> ascii <span class="k3">=</span> ev.keyboard.unichar<span class="k2">;</span>
<span class="number">  4</span>   <span class="k1">if</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_504.html" target="_blank">isalpha</a><span class="k2">(</span>ascii<span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> isnum<span class="k2">(</span>ascii<span class="k2">)</span> <span class="k3">|</span><span class="k3">|</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_514.html" target="_blank">isspace</a><span class="k2">(</span>ascii<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  5</span>      buf<span class="k2">[</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k3">+</span><span class="k3">+</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>ascii<span class="k2">;</span>
<span class="number">  6</span>   <span class="k2">}</span>
<span class="number">  7</span>   <span class="k1">else</span> <span class="k2">{</span>
<span class="number">  8</span>
<span class="number">  9</span>   <span class="k1">switch</span> <span class="k2">(</span>kc<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 10</span>      <span class="k1">case</span> ALLEGRO_KEY_LEFT <span class="k2">:</span>
<span class="number"> 11</span>         <span class="k3">-</span><span class="k3">-</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">;</span>
<span class="number"> 12</span>         <span class="k1">if</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span><span class="k2">}</span> 
<span class="number"> 13</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 14</span>      <span class="k1">case</span> ALLEGRO_KEY_RIGHT <span class="k2">:</span>
<span class="number"> 15</span>         <span class="k3">+</span><span class="k3">+</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a><span class="k2">;</span>
<span class="number"> 16</span>         <span class="k1">if</span> <span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">&gt;</span><span class="k3">=</span> BUFSIZE<span class="k2">)</span> <span class="k2">{</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_470.html" target="_blank">index</a> <span class="k3">=</span> BUFSIZE <span class="k3">-</span> <span class="n">1</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 17</span>      <span class="k1">case</span> ALLEGRO_KEY_ENTER <span class="k2">:</span> finish<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 18</span>      <span class="k1">case</span> ALLEGRO_KEY_BACKSPACE <span class="k2">:</span> erase_current<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 19</span>      <span class="k1">case</span> ETC <span class="k2">:</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 20</span>      <span class="k1">default</span> <span class="k2">:</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 21</span>   <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 22</span><span class="k2">}</span>
</div></div><p>
This should give you an idea of how to monitor keyboard events.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 06 May 2018 20:43:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for your help and now I am going to use your library for GUI - (EAGLE5).<br />again thanks for your advice.</p><p>What is SantaHack2016?<br />is it a game?</p><p>again thanks and especially because of EAGLE5.cbp. I love code blocks builds.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Doctor Cop)</author>
		<pubDate>Mon, 07 May 2018 15:04:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Eagle5 doesn&#39;t have an input widget yet. Eagle4 has integer, floating, and string entry widgets.</p><p>But you can write one very easily. I can help you write an input widget if you want.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 07 May 2018 15:12:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Something that was hinted at, but not fully explained, is the difference between `char []` and `char *` and what they&#39;re used for.</p><p>An array, which is indicated by the square brackets `[]` allocates a sequence of bytes on the program&#39;s call stack. This is just like other local variables that you define, like int and char. It exists until the function returns, and is automatically released.</p><p>A <span class="source-code"><span class="k1">char</span></span> pointer can either point to a single character, or to an array of characters, or NULL which signifies that memory has not been allocated yet, or garbage if you forget to initialize it (never do this because it&#39;s an obscure crash waiting to happen). The character or characters that you point to can either be on the stack or on the heap.</p><p>The heap is like a pool of memory that you can allocate that survives even when a function returns. It is accessible from anywhere in the program as long as you know its address in memory. In C, you use the <span class="source-code"><a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a></span> family of functions to allocate memory on the heap, and in C++ you use the <span class="source-code"><span class="k1">new</span></span> and <span class="source-code"><span class="k1">new</span><span class="k2">[</span><span class="k2">]</span></span> operators. Anything that you allocate in this way must be cleaned up after using <span class="source-code"><a href="http://www.delorie.com/djgpp/doc/libc/libc_350.html" target="_blank">free</a><span class="k2">(</span><span class="k2">)</span></span> for <span class="source-code"><a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k2">)</span></span> style allocations and the <span class="source-code"><span class="k1">delete</span></span> or <span class="source-code"><span class="k1">delete</span><span class="k2">[</span><span class="k2">]</span></span> operators for <span class="source-code"><span class="k1">new</span></span> allocations. A memory leak is said to have occurred when you forget to do this.</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="p">#include &lt;assert.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;stdlib.h&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;string.h&gt;</span>
<span class="number">  5</span>
<span class="number">  6</span><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> argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span>
<span class="number">  7</span><span class="k2">{</span>
<span class="number">  8</span>    <span class="k1">char</span> c <span class="k3">=</span> <span class="s">'A'</span><span class="k2">;</span>
<span class="number">  9</span>    <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span> <span class="k1">const</span> cs <span class="k3">=</span> <span class="s">"static string of characters"</span><span class="k2">;</span>
<span class="number"> 10</span>    <span class="k1">char</span> s<span class="k2">[</span><span class="n">255</span><span class="k2">]</span> <span class="k3">=</span> <span class="s">"string of characters"</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span>    <span class="k1">char</span> <span class="k3">*</span> pc <span class="k3">=</span> <span class="k3">&amp;</span>c<span class="k2">;</span> <span class="c">// pc points to c, which contains 'A'.</span>
<span class="number"> 13</span>    <span class="k1">char</span> <span class="k3">*</span> ps <span class="k3">=</span> s<span class="k2">;</span> <span class="c">// ps points to s, which contains "string of characters" (which is nul-byte terminated).</span>
<span class="number"> 14</span>
<span class="number"> 15</span>    <span class="c">// dc is a single character (not a string!) allocated on the heap.</span>
<span class="number"> 16</span>    <span class="c">// It is initially pointing to garbage, but then I assign 'B' to its memory slot.</span>
<span class="number"> 17</span>    <span class="k1">char</span> <span class="k3">*</span> dc <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_48.html" target="_blank">assert</a><span class="k2">(</span>dc<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>    <span class="k3">*</span>dc <span class="k3">=</span> <span class="s">'B'</span><span class="k2">;</span>
<span class="number"> 20</span>
<span class="number"> 21</span>    <span class="c">// ds is a character array allocated on the heap with a maximum length of 512</span>
<span class="number"> 22</span>    <span class="c">// characters. If this is used as a C string then it can only store 511 characters</span>
<span class="number"> 23</span>    <span class="c">// plus the nul-terminating character. The actual string is garbage right now.</span>
<span class="number"> 24</span>    <span class="c">// We have allocated the memory, but not initialized it yet.</span>
<span class="number"> 25</span>    <span class="k1">char</span> <span class="k3">*</span> ds <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">512</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_48.html" target="_blank">assert</a><span class="k2">(</span>ds<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>
<span class="number"> 28</span>    <span class="c">// This is one way to initialize it. You can also use `calloc` instead which does</span>
<span class="number"> 29</span>    <span class="c">// this for you. This makes it an empty string "" (in a 512 character array).</span>
<span class="number"> 30</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_569.html" target="_blank">memset</a><span class="k2">(</span>ds, <span class="n">0</span>, <span class="n">512</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>
<span class="number"> 32</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_732.html" target="_blank">snprintf</a><span class="k2">(</span>ds, <span class="n">512</span>,
<span class="number"> 33</span>             <span class="s">"c='%c' cs='%c' s=\"%s\", pc='%c', ps=\"%s\", dc='%c', ds=\"%s\""</span>,
<span class="number"> 34</span>             c, <span class="k3">*</span>cs, s, <span class="k3">*</span>pc, ps, <span class="k3">*</span>dc, ds<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span>
<span class="number"> 36</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_631.html" target="_blank">puts</a><span class="k2">(</span>ds<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>
<span class="number"> 38</span>    <span class="c">// Must release the memory when we're done with it.</span>
<span class="number"> 39</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_350.html" target="_blank">free</a><span class="k2">(</span>dc<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_350.html" target="_blank">free</a><span class="k2">(</span>ds<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>
<span class="number"> 42</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 43</span><span class="k2">}</span>
</div></div><p>

In the snippet above I&#39;ve tried to demonstrate the basic ways that character arrays and pointers are used. The thing that you were forgetting to do was allocate memory for the string. Whether you should do this on the stack or heap depends on how big it will be and whether you need it only temporarily or you need to be able to return it from a function. This is all about memory management. C and to an extent C++ put this burden on you do manage it. It&#39;s fun to do, but it&#39;s also hard to do perfectly. You definitely should try to understand these concepts now because it&#39;ll take a while to really get full control of this.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Tue, 08 May 2018 20:57:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><b>bamccaig</b>: Thanks for this information, I can&#39;t express how glad I am!<br />Is there any site where I can find more programming knowledge like this?</p><p><b>Edgar Reynaldo</b>: Thanks man, I really appreciate that but I already ripped off the logic from SDL&#39;s &quot;TextInput&quot; function.<br />Thanks for your help!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Doctor Cop)</author>
		<pubDate>Mon, 14 May 2018 21:48:13 +0000</pubDate>
	</item>
</rss>
