<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>advice on creating textmode like interface</title>
		<link>http://www.allegro.cc/forums/view/589496</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 09 Jan 2007 22:00:17 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My goal is to create a game very similar to BEAST by Dan Baker. if you&#39;d like me to send you a copy, let me know. it can be freely distributed. the game can be slowed down using its settings on my 1 GHZ machine to where one can actually see what is going on kinda, but it is unplayable. i also want to mess around with allegro and this gives me a good excuse. </p><p>i was thinking of making a set of 2d arrays that would deal with the textmode like interface. one would hold blit coordinates, the other, what goes where on screen. then on timeout or user input the screen refreshes to what is in the 2d array. i want to make it more flexible eventually to take advantage of the graphical environment, but it should play like BEAST does. </p><p>is this a good way to go about it, or should i try another route?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Nuklear Zelph)</author>
		<pubDate>Tue, 09 Jan 2007 13:28:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You mean, you&#39;ll be using an array/list/vector of { int x, int y, int what_to_draw }, even for walls?</p><p>A more classic method would be a 2D array for the playfield, each cell containing an enumerated value for what is there (wall, player, beast, etc).</p><p>Additionally, you&#39;ll use a list/array/vector of creatures: this will be more handy when you need to update each beast once (without scanning the whole board)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Tue, 09 Jan 2007 16:25:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This is what I used in my <a href="http://www.dharmon.cc/games/index.php?gid=11">Castle Adventure</a> Game. You can download the source and check it out.</p><p>Instead of redrawing a buffer everytime, I just redrew the character at that location with a text_mode of 0.</p><p>However, there was only one color.</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">//castle.h</span></td></tr><tr><td class="number">2</td><td><span class="p">#define GRID_WIDTH      40</span></td></tr><tr><td class="number">3</td><td><span class="p">#define GRID_HEIGHT     25</span></td></tr><tr><td class="number">4</td><td><span class="p">#define GRID_TOTAL      1000 // 40 x 25</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">unsigned</span> <span class="k1">char</span>    sbuffer<span class="k2">[</span> GRID_TOTAL <span class="k2">]</span><span class="k2">;</span> </td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="c">//crt.cpp</span></td></tr><tr><td class="number">9</td><td><span class="k1">static</span> <span class="k1">int</span> ofx <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k1">static</span> <span class="k1">int</span> ofy <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k1">static</span> <a href="http://www.allegro.cc/manual/FONT" target="_blank"><span class="a">FONT</span></a> <span class="k3">*</span>bfont <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td><span class="k1">void</span> setup_crt<span class="k2">(</span> <a href="http://www.allegro.cc/manual/FONT" target="_blank"><span class="a">FONT</span></a> <span class="k3">*</span>_font <span class="k2">)</span></td></tr><tr><td class="number">14</td><td><span class="k2">{</span>    </td></tr><tr><td class="number">15</td><td>    bfont <span class="k3">=</span> _font<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    ofx <span class="k3">=</span> ofy <span class="k3">=</span> <a href="http://www.allegro.cc/manual/text_height" target="_blank"><span class="a">text_height</span></a><span class="k2">(</span> bfont <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td><span class="k2">}</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="k1">void</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_108.html" target="_blank">clrscr</a><span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">20</td><td><span class="k2">{</span></td></tr><tr><td class="number">21</td><td>    cursor <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>    <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td>    <span class="k1">for</span> <span class="k2">(</span> <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> GRID_TOTAL<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">26</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">27</td><td>        sbuffer<span class="k2">[</span> i <span class="k2">]</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">29</td><td><span class="k2">}</span></td></tr><tr><td class="number">30</td><td>&#160;</td></tr><tr><td class="number">31</td><td><span class="k1">unsigned</span> <span class="k1">char</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_642.html" target="_blank">read</a><span class="k2">(</span> <span class="k1">int</span> x, <span class="k1">int</span> y <span class="k2">)</span></td></tr><tr><td class="number">32</td><td><span class="k2">{</span></td></tr><tr><td class="number">33</td><td>    <span class="k1">return</span> sbuffer<span class="k2">[</span> x <span class="k3">+</span> <span class="k2">(</span> y <span class="k3">*</span> GRID_WIDTH <span class="k2">)</span> <span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td><span class="k2">}</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td><span class="k1">void</span> gotoXY<span class="k2">(</span> <span class="k1">int</span> x, <span class="k1">int</span> y <span class="k2">)</span></td></tr><tr><td class="number">37</td><td><span class="k2">{</span></td></tr><tr><td class="number">38</td><td>    cursor <span class="k3">=</span> x <span class="k3">+</span> <span class="k2">(</span> y <span class="k3">*</span> GRID_WIDTH <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td><span class="k2">}</span></td></tr><tr><td class="number">40</td><td>&#160;</td></tr><tr><td class="number">41</td><td><span class="k1">int</span> whereX<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">42</td><td><span class="k2">{</span></td></tr><tr><td class="number">43</td><td>    <span class="k1">return</span> cursor % GRID_WIDTH<span class="k2">;</span></td></tr><tr><td class="number">44</td><td><span class="k2">}</span></td></tr><tr><td class="number">45</td><td>&#160;</td></tr><tr><td class="number">46</td><td><span class="k1">int</span> whereY<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">47</td><td><span class="k2">{</span></td></tr><tr><td class="number">48</td><td>    <span class="k1">return</span> cursor <span class="k3">/</span> GRID_WIDTH<span class="k2">;</span></td></tr><tr><td class="number">49</td><td><span class="k2">}</span></td></tr><tr><td class="number">50</td><td>&#160;</td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td><span class="k1">void</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_866.html" target="_blank">write</a><span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">char</span> c <span class="k2">)</span></td></tr><tr><td class="number">53</td><td><span class="k2">{</span></td></tr><tr><td class="number">54</td><td>    <span class="k1">static</span> <span class="k1">unsigned</span> <span class="k1">char</span> t<span class="k2">[</span> <span class="n">2</span> <span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span> <span class="n">0</span>, <span class="n">0</span> <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">55</td><td>    <span class="k1">static</span> <span class="k1">char</span> t2<span class="k2">[</span> <span class="n">8</span> <span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>    <span class="k1">static</span> <span class="k1">char</span> <span class="k3">*</span>buf<span class="k2">;</span></td></tr><tr><td class="number">57</td><td>&#160;</td></tr><tr><td class="number">58</td><td>    buf <span class="k3">=</span> t2<span class="k2">;</span></td></tr><tr><td class="number">59</td><td>&#160;</td></tr><tr><td class="number">60</td><td>    <span class="k1">if</span> <span class="k2">(</span> c <span class="k3">=</span><span class="k3">=</span> <span class="s">'~'</span> <span class="k2">)</span></td></tr><tr><td class="number">61</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">62</td><td>        c <span class="k3">=</span> <span class="s">' '</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">64</td><td>    </td></tr><tr><td class="number">65</td><td>    <span class="k1">if</span> <span class="k2">(</span> c <span class="k3">=</span><span class="k3">=</span> <span class="s">'\n'</span> <span class="k2">)</span></td></tr><tr><td class="number">66</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">67</td><td>        <span class="k1">if</span> <span class="k2">(</span> cursor % GRID_WIDTH <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">68</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">69</td><td>            cursor <span class="k3">+</span><span class="k3">=</span> GRID_WIDTH<span class="k2">;</span></td></tr><tr><td class="number">70</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">71</td><td>        <span class="k1">else</span></td></tr><tr><td class="number">72</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">73</td><td>            cursor <span class="k3">+</span><span class="k3">=</span> <span class="k2">(</span> GRID_WIDTH <span class="k3">-</span> <span class="k2">(</span> cursor % GRID_WIDTH <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">74</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">75</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">76</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">77</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">78</td><td>        <span class="k1">if</span> <span class="k2">(</span> c <span class="k3">!</span><span class="k3">=</span> sbuffer<span class="k2">[</span> cursor <span class="k2">]</span> <span class="k2">)</span></td></tr><tr><td class="number">79</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">80</td><td>            <span class="k1">if</span> <span class="k2">(</span> c <span class="k3">=</span><span class="k3">=</span> <span class="n">255</span> <span class="k2">)</span></td></tr><tr><td class="number">81</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">82</td><td>                c <span class="k3">=</span> <span class="s">' '</span><span class="k2">;</span></td></tr><tr><td class="number">83</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">84</td><td>            t<span class="k2">[</span> <span class="n">0</span> <span class="k2">]</span> <span class="k3">=</span> c<span class="k2">;</span></td></tr><tr><td class="number">85</td><td>&#160;</td></tr><tr><td class="number">86</td><td>            <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/need_uconvert" target="_blank"><span class="a">need_uconvert</span></a><span class="k2">(</span> <span class="k2">(</span><span class="k1">char</span><span class="k3">*</span><span class="k2">)</span>t, U_ASCII, U_CURRENT <span class="k2">)</span> <span class="k2">)</span></td></tr><tr><td class="number">87</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">88</td><td>                <a href="http://www.allegro.cc/manual/uconvert" target="_blank"><span class="a">uconvert</span></a><span class="k2">(</span> <span class="k2">(</span><span class="k1">char</span><span class="k3">*</span><span class="k2">)</span>t, U_ASCII, buf, U_CURRENT, <span class="k1">sizeof</span><span class="k2">(</span> buf <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">90</td><td>            <span class="k1">else</span></td></tr><tr><td class="number">91</td><td>            <span class="k2">{</span></td></tr><tr><td class="number">92</td><td>                buf <span class="k3">=</span> <span class="k2">(</span><span class="k1">char</span><span class="k3">*</span><span class="k2">)</span>t<span class="k2">;</span></td></tr><tr><td class="number">93</td><td>            <span class="k2">}</span></td></tr><tr><td class="number">94</td><td>&#160;</td></tr><tr><td class="number">95</td><td>            textout<span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, </td></tr><tr><td class="number">96</td><td>                     bfont, </td></tr><tr><td class="number">97</td><td>                     buf, </td></tr><tr><td class="number">98</td><td>                     <span class="k2">(</span> cursor % GRID_WIDTH <span class="k2">)</span> <span class="k3">*</span> ofx, </td></tr><tr><td class="number">99</td><td>                     <span class="k2">(</span> cursor <span class="k3">/</span> GRID_WIDTH <span class="k2">)</span> <span class="k3">*</span> ofy, </td></tr><tr><td class="number">100</td><td>                     <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">102</td><td>            </td></tr><tr><td class="number">103</td><td>        sbuffer<span class="k2">[</span> cursor<span class="k3">+</span><span class="k3">+</span> <span class="k2">]</span> <span class="k3">=</span> c<span class="k2">;</span>        </td></tr><tr><td class="number">104</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">105</td><td>&#160;</td></tr><tr><td class="number">106</td><td>    <span class="k1">if</span> <span class="k2">(</span> cursor <span class="k3">&gt;</span><span class="k3">=</span> GRID_TOTAL <span class="k2">)</span></td></tr><tr><td class="number">107</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">108</td><td>        cursor <span class="k3">-</span><span class="k3">=</span> GRID_TOTAL<span class="k2">;</span></td></tr><tr><td class="number">109</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">110</td><td><span class="k2">}</span></td></tr><tr><td class="number">111</td><td>&#160;</td></tr><tr><td class="number">112</td><td><span class="k1">void</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_866.html" target="_blank">write</a><span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">char</span> c, <span class="k1">int</span> x, <span class="k1">int</span> y <span class="k2">)</span></td></tr><tr><td class="number">113</td><td><span class="k2">{</span></td></tr><tr><td class="number">114</td><td>    gotoXY<span class="k2">(</span> x, y <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">115</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_866.html" target="_blank">write</a><span class="k2">(</span> c <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">116</td><td><span class="k2">}</span></td></tr><tr><td class="number">117</td><td>&#160;</td></tr><tr><td class="number">118</td><td><span class="c">// center either x or y or both</span></td></tr><tr><td class="number">119</td><td><span class="k1">void</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_866.html" target="_blank">write</a><span class="k2">(</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>c, <span class="k1">int</span> x, <span class="k1">int</span> y <span class="k2">)</span></td></tr><tr><td class="number">120</td><td><span class="k2">{</span></td></tr><tr><td class="number">121</td><td>    <span class="k1">if</span> <span class="k2">(</span> x <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k2">)</span></td></tr><tr><td class="number">122</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">123</td><td>        x <span class="k3">=</span> <span class="k2">(</span> GRID_WIDTH <span class="k3">-</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_764.html" target="_blank">strlen</a><span class="k2">(</span> c <span class="k2">)</span> <span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">124</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">125</td><td>&#160;</td></tr><tr><td class="number">126</td><td>    <span class="k1">if</span> <span class="k2">(</span> y <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k2">)</span></td></tr><tr><td class="number">127</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">128</td><td>        y <span class="k3">=</span> GRID_HEIGHT <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">129</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">130</td><td>&#160;</td></tr><tr><td class="number">131</td><td>    gotoXY<span class="k2">(</span> x, y <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">132</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_866.html" target="_blank">write</a><span class="k2">(</span> c <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">133</td><td><span class="k2">}</span></td></tr><tr><td class="number">134</td><td>&#160;</td></tr><tr><td class="number">135</td><td><span class="k1">void</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_866.html" target="_blank">write</a><span class="k2">(</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>c <span class="k2">)</span></td></tr><tr><td class="number">136</td><td><span class="k2">{</span></td></tr><tr><td class="number">137</td><td>    <span class="k1">for</span> <span class="k2">(</span> <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>b <span class="k3">=</span> c<span class="k2">;</span> <span class="k3">*</span>b <span class="k3">!</span><span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span> b<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">138</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">139</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_866.html" target="_blank">write</a><span class="k2">(</span> <span class="k3">*</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">char</span> <span class="k3">*</span><span class="k2">)</span>b <span class="k2">)</span><span class="k2">;</span>        </td></tr><tr><td class="number">140</td><td>    <span class="k2">}</span>    </td></tr><tr><td class="number">141</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Tue, 09 Jan 2007 22:00:17 +0000</pubDate>
	</item>
</rss>
