<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>How to display chinese In  allegro5?</title>
		<link>http://www.allegro.cc/forums/view/611547</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 05 Dec 2012 12:51:32 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi, I&#39;m come from Zhengzhou City Henan Province China.I have one big problem about how to display the Chinese in allegro program. I have read the allegro manual . It is said that allegro is supported the TTF and UTF-8. I think use the TTF can display chinese, however it is can&#39;t display any chinese words? Who can help me? I am sorry my English is so poor, I hope you can understand my problem! below is my code and I use the VC10(VS2010).thx everyone!</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">//头文件</span>
<span class="number">   3</span><span class="p">#define ALLEGRO_NO_MAGIC_MAIN</span>
<span class="number">   4</span><span class="p">#include &lt;Windows.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">   7</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">   8</span><span class="p">#pragma comment(lib,"allegro-5.0.7-mt-debug.lib") //链接Allegro的库</span>
<span class="number">   9</span><span class="p">#pragma comment(lib,"allegro_font-5.0.7-mt-debug.lib") //链接Allegro的库</span>
<span class="number">  10</span><span class="p">#pragma comment(lib,"allegro_ttf-5.0.7-mt-debug.lib") //链接Allegro的库</span>
<span class="number">  11</span><span class="c">////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  12</span>
<span class="number">  13</span><span class="c">//函数</span>
<span class="number">  14</span><span class="k1">int</span> game_init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//初始化游戏</span>
<span class="number">  15</span><span class="k1">int</span> game_run<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">//进入游戏循环</span>
<span class="number">  16</span><span class="k1">int</span> game_frame<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//逻辑处理函数</span>
<span class="number">  17</span><span class="k1">int</span> game_render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//渲染函数</span>
<span class="number">  18</span><span class="k1">int</span> game_distory<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//释放资源</span>
<span class="number">  19</span><span class="k1">int</span> game_msg<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">//消息处理</span>
<span class="number">  20</span>
<span class="number">  21</span><span class="c">//常量</span>
<span class="number">  22</span><span class="k1">const</span> <span class="k1">int</span> WIN_WIDTH    <span class="k3">=</span><span class="n">800</span><span class="k2">;</span> <span class="c">//窗口宽度</span>
<span class="number">  23</span><span class="k1">const</span> <span class="k1">int</span> WIN_HEIGHT  <span class="k3">=</span><span class="n">600</span><span class="k2">;</span> <span class="c">//窗口高度</span>
<span class="number">  24</span><span class="c">//全局变量</span>
<span class="number">  25</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>    <span class="c">//显示设备</span>
<span class="number">  26</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue<span class="k2">;</span>    <span class="c">//事件队列</span>
<span class="number">  27</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> my_event<span class="k2">;</span>      <span class="c">//事件</span>
<span class="number">  28</span><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><span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  29</span><a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a> <span class="k3">*</span>ustr<span class="k2">;</span>
<span class="number">  30</span>
<span class="number">  31</span><span class="c">////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  32</span><span class="k1">int</span> WINAPI WinMain<span class="k2">(</span>HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,<span class="k1">int</span> nShowCmd <span class="k2">)</span>
<span class="number">  33</span><span class="k2">{</span>
<span class="number">  34</span>  <span class="k1">int</span> error<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  35</span>
<span class="number">  36</span>  <span class="c">//把游戏初始化的代码写在我们的 game_init()函数里</span>
<span class="number">  37</span>  <span class="c">//然后放到这里执行</span>
<span class="number">  38</span>  <span class="c">//把game_init()的返回值赋给error</span>
<span class="number">  39</span>  <span class="c">//error如果为0的话表示一切正常，初始化成功了！</span>
<span class="number">  40</span>  <span class="c">//如果不为0的话，表示初始化的时候，发生了意外。</span>
<span class="number">  41</span>  <span class="c">//需要立即结束程序，并返回错误码</span>
<span class="number">  42</span>  error<span class="k3">=</span>game_init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>  <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number">  44</span>  
<span class="number">  45</span>
<span class="number">  46</span>  <span class="c">//初始化完成后，开始进入游戏的主循环，</span>
<span class="number">  47</span>  <span class="c">//在主循环里将循环执行，消息处理，逻辑处理，和渲染函数</span>
<span class="number">  48</span>  error<span class="k3">=</span>game_run<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  49</span>  <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number">  50</span>  
<span class="number">  51</span>
<span class="number">  52</span>  <span class="c">//游戏结束后，销毁所占用的资源</span>
<span class="number">  53</span>  error<span class="k3">=</span>game_distory<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  54</span>  <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number">  55</span>
<span class="number">  56</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  57</span><span class="k2">}</span>
<span class="number">  58</span>
<span class="number">  59</span><span class="k1">int</span> game_init<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  60</span>
<span class="number">  61</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  62</span>  <span class="c">/************************************************************************/</span>
<span class="number">  63</span>  <span class="c">/*  使用al_init()来初始化Allegro系统</span>
<span class="number">  64</span><span class="c">    al_init实际上是一个宏，他实际上调用了</span>
<span class="number">  65</span><span class="c">      al_install_system(ALLEGRO_VERSION_INT,atexit)</span>
<span class="number">  66</span><span class="c">      该函数的返回值是布尔型，初始化成功则返回true,否则返回false                                                                   */</span>
<span class="number">  67</span>  <span class="c">/************************************************************************/</span>
<span class="number">  68</span>
<span class="number">  69</span>  <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>  <a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>  <a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>  <span class="c">/************************************************************************/</span>
<span class="number">  74</span>  <span class="c">/* 初始化鼠标，和键盘设备,以便Allegro可以接收到鼠标和键盘消息                                                                     */</span>
<span class="number">  75</span>  <span class="c">/************************************************************************/</span>
<span class="number">  76</span>
<span class="number">  77</span>  <span class="c">//al_set_new_display_flags(ALLEGRO_FULLSCREEN);//如果取消掉本行注释就是全屏模式</span>
<span class="number">  78</span>  display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>WIN_WIDTH, WIN_HEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span><span class="k1">return</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  80</span>  <span class="c">/************************************************************************/</span>
<span class="number">  81</span>   <span class="c">/*ALLEGRO_DISPALY *al_create_display(int w,int h)   创建显示设备</span>
<span class="number">  82</span><span class="c">  参数 w 为要创建的窗口的宽度</span>
<span class="number">  83</span><span class="c">  参悟 h 为窗口的高度</span>
<span class="number">  84</span><span class="c">  成功则返回一个disply的指针，否则返回NULL</span>
<span class="number">  85</span><span class="c">  /************************************************************************/</span>
<span class="number">  86</span>  <span class="c">//设置Windows的标题</span>
<span class="number">  87</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"Allrgro系列教程(四) 显示文字"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>
<span class="number">  89</span>  <span class="c">//初始化事件队列，接受到的消息将存储在该队列里</span>
<span class="number">  90</span>  queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>  <span class="c">//指定要接收哪个设备的消息</span>
<span class="number">  92</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>
<span class="number">  95</span>  <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k3">=</span><a href="http://www.allegro.cc/manual/al_load_ttf_font"><span class="a">al_load_ttf_font</span></a><span class="k2">(</span><span class="s">"C:/Windows/Fonts/SIMYOU.TTF"</span>,<span class="n">24</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k1">return</span> <span class="n">3</span><span class="k2">;</span>
<span class="number">  97</span>  ustr <span class="k3">=</span><a href="http://www.allegro.cc/manual/al_ustr_new"><span class="a">al_ustr_new</span></a><span class="k2">(</span><span class="s">"你好!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>ustr<span class="k2">)</span><span class="k1">return</span> <span class="n">4</span><span class="k2">;</span>
<span class="number">  99</span>
<span class="number"> 100</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 101</span><span class="k2">}</span>
<span class="number"> 102</span><span class="k1">int</span> game_msg<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 103</span>
<span class="number"> 104</span>  <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>queue,<span class="k3">&amp;</span>my_event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</span>  <span class="c">/************************************************************************/</span>
<span class="number"> 106</span>  <span class="c">/*  函数原型   </span>
<span class="number"> 107</span><span class="c">  void al_wait_for_event(ALLEGRO_EVENT_QUEUE *queue,ALLEGRO_EVENT *ret_event)</span>
<span class="number"> 108</span><span class="c">  等到队列里有新事件时，将新事件的内容复制到 ret_event里，并从事件队列里移除它</span>
<span class="number"> 109</span><span class="c">  */</span>
<span class="number"> 110</span>  <span class="c">/************************************************************************/</span>
<span class="number"> 111</span>  <span class="k1">if</span><span class="k2">(</span>my_event.type<span class="k3">=</span><span class="k3">=</span>ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span><span class="k1">return</span> <span class="n">98</span><span class="k2">;</span> <span class="c">//当窗口被关闭时</span>
<span class="number"> 112</span>  <span class="k1">if</span> <span class="k2">(</span>my_event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 113</span>    <span class="k1">if</span> <span class="k2">(</span>my_event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span><span class="c">//当按下 ESC键时</span>
<span class="number"> 114</span>      <span class="k1">return</span> <span class="n">99</span><span class="k2">;</span>
<span class="number"> 115</span>  <span class="k2">}</span>
<span class="number"> 116</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 117</span>
<span class="number"> 118</span><span class="k2">}</span>
<span class="number"> 119</span>
<span class="number"> 120</span><span class="k1">int</span> game_frame<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 121</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 122</span><span class="k2">}</span>
<span class="number"> 123</span>
<span class="number"> 124</span>
<span class="number"> 125</span>
<span class="number"> 126</span><span class="k1">int</span> game_render<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 127</span>  <span class="c">//用指定的颜色填充屏幕</span>
<span class="number"> 128</span>  <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 129</span>  <span class="c">//al_draw_text(font,al_map_rgb(255,0,0),0,0,0,"你好");</span>
<span class="number"> 130</span>  <a href="http://www.allegro.cc/manual/al_draw_ustr"><span class="a">al_draw_ustr</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">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,ustr<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>  <span class="c">//翻转</span>
<span class="number"> 132</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"> 133</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 134</span><span class="k2">}</span>
<span class="number"> 135</span>
<span class="number"> 136</span>
<span class="number"> 137</span>
<span class="number"> 138</span><span class="k1">int</span> game_run<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 139</span>
<span class="number"> 140</span>  <span class="c">//下面的变量用来记录时间，单位是秒</span>
<span class="number"> 141</span>  <span class="c">//用以控制帧率(FPS)，也就是每秒画面刷新多少帧，</span>
<span class="number"> 142</span>  <span class="c">//这里我们设FPS为30，用 1秒的时间单位/FPS   </span>
<span class="number"> 143</span>  <span class="c">//也就是0.033,也就是说，每次刷新的间隔时间不能小于0.033秒</span>
<span class="number"> 144</span>  <span class="k1">double</span> t_now<span class="k3">=</span><span class="n">0</span>.<span class="n">0</span><span class="k2">;</span> <span class="c">//当前时刻</span>
<span class="number"> 145</span>  <span class="k1">double</span> t_pre<span class="k3">=</span><span class="n">0</span>.<span class="n">0</span><span class="k2">;</span> 
<span class="number"> 146</span>  <span class="k1">int</span> error<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 147</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span> 
<span class="number"> 148</span>  <span class="k2">{</span>
<span class="number"> 149</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>queue<span class="k2">)</span><span class="k2">)</span><span class="k2">{</span> <span class="c">//先检测事件对了中是否有新事件</span>
<span class="number"> 150</span>
<span class="number"> 151</span>      error <span class="k3">=</span>game_msg<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//有 则先处理事件</span>
<span class="number"> 152</span>      <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number"> 153</span>    <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span>
<span class="number"> 154</span>      <span class="c">//如果 事件队列中没有新事件 则</span>
<span class="number"> 155</span>      <span class="c">//计算事件间隔时候大于0.033</span>
<span class="number"> 156</span>      t_now<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_get_time"><span class="a">al_get_time</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>      <span class="k1">if</span><span class="k2">(</span>t_now-t_pre&gt;<span class="k3">=</span><span class="n">0</span>.<span class="n">033</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 158</span>
<span class="number"> 159</span>        <span class="c">//如果时间间隔合适的话就</span>
<span class="number"> 160</span>        <span class="c">//更新一帧的游戏逻辑</span>
<span class="number"> 161</span>        error<span class="k3">=</span>game_frame<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>        <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number"> 163</span>        <span class="c">//刷新画面</span>
<span class="number"> 164</span>        error<span class="k3">=</span>game_render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>        <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number"> 166</span>        t_pre<span class="k3">=</span>t_now<span class="k2">;</span>
<span class="number"> 167</span>      <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span>
<span class="number"> 168</span>        <span class="c">//当CPU可以处理游戏逻辑的能力超过我们的需要时</span>
<span class="number"> 169</span>        <span class="c">//调用Sleep(0)</span>
<span class="number"> 170</span>        <span class="c">//这个Windows API 将使当前的线程释放出自己的控制权，</span>
<span class="number"> 171</span>        <span class="c">//这一点对Windows平台很重要，可以使游戏不至于占用全部</span>
<span class="number"> 172</span>        <span class="c">//的CPU，每次切换游戏的进程，都把可以用的时间片用完了</span>
<span class="number"> 173</span>        Sleep<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 174</span>      <span class="k2">}</span>
<span class="number"> 175</span>    <span class="k2">}</span>
<span class="number"> 176</span>
<span class="number"> 177</span>  <span class="k2">}</span>
<span class="number"> 178</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 179</span><span class="k2">}</span>
<span class="number"> 180</span>
<span class="number"> 181</span>
<span class="number"> 182</span><span class="k1">int</span> game_distory<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 183</span>  <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 184</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 185</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Quanwei Yuan)</author>
		<pubDate>Mon, 03 Dec 2012 13:36:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><ol><li><p>Make sure you save your source file as UTF-8</p><br /></li><li><p>Make sure your font supports those characters
</p></li></ol></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Mon, 03 Dec 2012 13:40:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Please put your code in &lt;code&gt;&lt;/code&gt; tags.</p><p>That said, make sure your files are saved in UTF-8, not any ASCII code page or other versions of unicode. (and what Matthew just said...)</p><p>One other thing, you can use <span class="source-code"><a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a></span> instead of <span class="source-code">Sleep</span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Mon, 03 Dec 2012 13:40:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /><br />Matthew Leverton:<br />Make sure you save your source file as UTF-8</p><p>Make sure your font supports those characters</p><p>______</p><p>I have to convert that source file to UTF8,but still can not display Chinese characters.</p><p>What other ways can dispaly  Chinese character?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Quanwei Yuan)</author>
		<pubDate>Mon, 03 Dec 2012 14:01:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If it still isn&#39;t showing up, make sure the font you loaded has the exact characters you&#39;re trying to show.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Mon, 03 Dec 2012 14:56:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In Visual Studio, go to File -&gt; Advanced Save Options. Make sure the encoding is set to UTF8.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Mon, 03 Dec 2012 17:16:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s suspiciously incredible how accurate the Google translator is when translating that file. It&#39;s like you have translated from English to Chinese.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AMCerasoli)</author>
		<pubDate>Mon, 03 Dec 2012 19:07:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think it&#39;s more that Google&#39;s translation looks at the context. Then when it knows the text is about programming, it uses a matching dictionary.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Mon, 03 Dec 2012 19:33:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The following code works fine for me on Linux.<br />I can see the Chinese red text. <br />I compile it with gcc like this:
</p><div class="source-code snippet"><div class="inner"><pre>gcc forum_2.c <span class="k3">-</span>I <span class="k3">/</span>usr<span class="k3">/</span>local<span class="k3">/</span>include <span class="k3">-</span>L <span class="k3">/</span>usr<span class="k3">/</span>local<span class="k3">/</span>lib <span class="k3">-</span>lallegro_color <span class="k3">-</span>lallegro_font <span class="k3">-</span>lallegro_ttf <span class="k3">-</span>lallegro <span class="k3">-</span>o forum2
</pre></div></div><p>
I have to put the font  in the same place as the forum2 executable. <br />SIMYOU.TTF</p><p>What do you see? Please check if you are using utf-8, and if your font file is OK.</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="c">//头文件</span>
<span class="number">   2</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">   5</span><span class="c">////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">   6</span>
<span class="number">   7</span><span class="c">//函数</span>
<span class="number">   8</span><span class="k1">int</span> game_init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//初始化游戏</span>
<span class="number">   9</span><span class="k1">int</span> game_run<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">//进入游戏循环</span>
<span class="number">  10</span><span class="k1">int</span> game_frame<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//逻辑处理函数</span>
<span class="number">  11</span><span class="k1">int</span> game_render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//渲染函数</span>
<span class="number">  12</span><span class="k1">int</span> game_distory<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//释放资源</span>
<span class="number">  13</span><span class="k1">int</span> game_msg<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">//消息处理</span>
<span class="number">  14</span>
<span class="number">  15</span><span class="c">//常量</span>
<span class="number">  16</span><span class="k1">const</span> <span class="k1">int</span> WIN_WIDTH    <span class="k3">=</span><span class="n">800</span><span class="k2">;</span> <span class="c">//窗口宽度</span>
<span class="number">  17</span><span class="k1">const</span> <span class="k1">int</span> WIN_HEIGHT  <span class="k3">=</span><span class="n">600</span><span class="k2">;</span> <span class="c">//窗口高度</span>
<span class="number">  18</span><span class="c">//全局变量</span>
<span class="number">  19</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>    <span class="c">//显示设备</span>
<span class="number">  20</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue<span class="k2">;</span>    <span class="c">//事件队列</span>
<span class="number">  21</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> my_event<span class="k2">;</span>      <span class="c">//事件</span>
<span class="number">  22</span><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><span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  23</span><a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a> <span class="k3">*</span>ustr<span class="k2">;</span>
<span class="number">  24</span>
<span class="number">  25</span><span class="c">////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  26</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  27</span>  <span class="k1">int</span> error<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  28</span>
<span class="number">  29</span>  <span class="c">//把游戏初始化的代码写在我们的 game_init()函数里</span>
<span class="number">  30</span>  <span class="c">//然后放到这里执行</span>
<span class="number">  31</span>  <span class="c">//把game_init()的返回值赋给error</span>
<span class="number">  32</span>  <span class="c">//error如果为0的话表示一切正常，初始化成功了！</span>
<span class="number">  33</span>  <span class="c">//如果不为0的话，表示初始化的时候，发生了意外。</span>
<span class="number">  34</span>  <span class="c">//需要立即结束程序，并返回错误码</span>
<span class="number">  35</span>  error<span class="k3">=</span>game_init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>  <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number">  37</span>  
<span class="number">  38</span>
<span class="number">  39</span>  <span class="c">//初始化完成后，开始进入游戏的主循环，</span>
<span class="number">  40</span>  <span class="c">//在主循环里将循环执行，消息处理，逻辑处理，和渲染函数</span>
<span class="number">  41</span>  error<span class="k3">=</span>game_run<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>  <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number">  43</span>  
<span class="number">  44</span>
<span class="number">  45</span>  <span class="c">//游戏结束后，销毁所占用的资源</span>
<span class="number">  46</span>  error<span class="k3">=</span>game_distory<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</span>  <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number">  48</span>
<span class="number">  49</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  50</span><span class="k2">}</span>
<span class="number">  51</span>
<span class="number">  52</span><span class="k1">int</span> game_init<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  53</span>
<span class="number">  54</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  55</span>  <span class="c">/************************************************************************/</span>
<span class="number">  56</span>  <span class="c">/*  使用al_init()来初始化Allegro系统</span>
<span class="number">  57</span><span class="c">    al_init实际上是一个宏，他实际上调用了</span>
<span class="number">  58</span><span class="c">      al_install_system(ALLEGRO_VERSION_INT,atexit)</span>
<span class="number">  59</span><span class="c">      该函数的返回值是布尔型，初始化成功则返回true,否则返回false                                                                   */</span>
<span class="number">  60</span>  <span class="c">/************************************************************************/</span>
<span class="number">  61</span>
<span class="number">  62</span>  <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>  <a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>  <a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</span>  <span class="c">/************************************************************************/</span>
<span class="number">  67</span>  <span class="c">/* 初始化鼠标，和键盘设备,以便Allegro可以接收到鼠标和键盘消息                                                                     */</span>
<span class="number">  68</span>  <span class="c">/************************************************************************/</span>
<span class="number">  69</span>
<span class="number">  70</span>  <span class="c">//al_set_new_display_flags(ALLEGRO_FULLSCREEN);//如果取消掉本行注释就是全屏模式</span>
<span class="number">  71</span>  display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>WIN_WIDTH, WIN_HEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span><span class="k1">return</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  73</span>  <span class="c">/************************************************************************/</span>
<span class="number">  74</span>   <span class="c">/*ALLEGRO_DISPALY *al_create_display(int w,int h)   创建显示设备</span>
<span class="number">  75</span><span class="c">  参数 w 为要创建的窗口的宽度</span>
<span class="number">  76</span><span class="c">  参悟 h 为窗口的高度</span>
<span class="number">  77</span><span class="c">  成功则返回一个disply的指针，否则返回NULL</span>
<span class="number">  78</span><span class="c">  /************************************************************************/</span>
<span class="number">  79</span>  <span class="c">//设置Windows的标题</span>
<span class="number">  80</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"Allrgro系列教程(四) 显示文字"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>
<span class="number">  82</span>  <span class="c">//初始化事件队列，接受到的消息将存储在该队列里</span>
<span class="number">  83</span>  queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  84</span>  <span class="c">//指定要接收哪个设备的消息</span>
<span class="number">  85</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>
<span class="number">  88</span>  <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k3">=</span><a href="http://www.allegro.cc/manual/al_load_ttf_font"><span class="a">al_load_ttf_font</span></a><span class="k2">(</span><span class="s">"SIMYOU.TTF"</span>,<span class="n">24</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  89</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k1">return</span> <span class="n">3</span><span class="k2">;</span>
<span class="number">  90</span>  ustr <span class="k3">=</span><a href="http://www.allegro.cc/manual/al_ustr_new"><span class="a">al_ustr_new</span></a><span class="k2">(</span><span class="s">"你好!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>ustr<span class="k2">)</span><span class="k1">return</span> <span class="n">4</span><span class="k2">;</span>
<span class="number">  92</span>
<span class="number">  93</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  94</span><span class="k2">}</span>
<span class="number">  95</span><span class="k1">int</span> game_msg<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  96</span>
<span class="number">  97</span>  <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>queue,<span class="k3">&amp;</span>my_event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>  <span class="c">/************************************************************************/</span>
<span class="number">  99</span>  <span class="c">/*  函数原型   </span>
<span class="number"> 100</span><span class="c">  void al_wait_for_event(ALLEGRO_EVENT_QUEUE *queue,ALLEGRO_EVENT *ret_event)</span>
<span class="number"> 101</span><span class="c">  等到队列里有新事件时，将新事件的内容复制到 ret_event里，并从事件队列里移除它</span>
<span class="number"> 102</span><span class="c">  */</span>
<span class="number"> 103</span>  <span class="c">/************************************************************************/</span>
<span class="number"> 104</span>  <span class="k1">if</span><span class="k2">(</span>my_event.type<span class="k3">=</span><span class="k3">=</span>ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span><span class="k1">return</span> <span class="n">98</span><span class="k2">;</span> <span class="c">//当窗口被关闭时</span>
<span class="number"> 105</span>  <span class="k1">if</span> <span class="k2">(</span>my_event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 106</span>    <span class="k1">if</span> <span class="k2">(</span>my_event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span><span class="c">//当按下 ESC键时</span>
<span class="number"> 107</span>      <span class="k1">return</span> <span class="n">99</span><span class="k2">;</span>
<span class="number"> 108</span>  <span class="k2">}</span>
<span class="number"> 109</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 110</span>
<span class="number"> 111</span><span class="k2">}</span>
<span class="number"> 112</span>
<span class="number"> 113</span><span class="k1">int</span> game_frame<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 114</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 115</span><span class="k2">}</span>
<span class="number"> 116</span>
<span class="number"> 117</span>
<span class="number"> 118</span>
<span class="number"> 119</span><span class="k1">int</span> game_render<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 120</span>  <span class="c">//用指定的颜色填充屏幕</span>
<span class="number"> 121</span>  <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 122</span>  <span class="c">//al_draw_text(font,al_map_rgb(255,0,0),0,0,0,"你好");</span>
<span class="number"> 123</span>  <a href="http://www.allegro.cc/manual/al_draw_ustr"><span class="a">al_draw_ustr</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">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,ustr<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>  <span class="c">//翻转</span>
<span class="number"> 125</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"> 126</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 127</span><span class="k2">}</span>
<span class="number"> 128</span>
<span class="number"> 129</span>
<span class="number"> 130</span>
<span class="number"> 131</span><span class="k1">int</span> game_run<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 132</span>
<span class="number"> 133</span>  <span class="c">//下面的变量用来记录时间，单位是秒</span>
<span class="number"> 134</span>  <span class="c">//用以控制帧率(FPS)，也就是每秒画面刷新多少帧，</span>
<span class="number"> 135</span>  <span class="c">//这里我们设FPS为30，用 1秒的时间单位/FPS   </span>
<span class="number"> 136</span>  <span class="c">//也就是0.033,也就是说，每次刷新的间隔时间不能小于0.033秒</span>
<span class="number"> 137</span>  <span class="k1">double</span> t_now<span class="k3">=</span><span class="n">0</span>.<span class="n">0</span><span class="k2">;</span> <span class="c">//当前时刻</span>
<span class="number"> 138</span>  <span class="k1">double</span> t_pre<span class="k3">=</span><span class="n">0</span>.<span class="n">0</span><span class="k2">;</span> 
<span class="number"> 139</span>  <span class="k1">int</span> error<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 140</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span> 
<span class="number"> 141</span>  <span class="k2">{</span>
<span class="number"> 142</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>queue<span class="k2">)</span><span class="k2">)</span><span class="k2">{</span> <span class="c">//先检测事件对了中是否有新事件</span>
<span class="number"> 143</span>
<span class="number"> 144</span>      error <span class="k3">=</span>game_msg<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//有 则先处理事件</span>
<span class="number"> 145</span>      <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number"> 146</span>    <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span>
<span class="number"> 147</span>      <span class="c">//如果 事件队列中没有新事件 则</span>
<span class="number"> 148</span>      <span class="c">//计算事件间隔时候大于0.033</span>
<span class="number"> 149</span>      t_now<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_get_time"><span class="a">al_get_time</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 150</span>      <span class="k1">if</span><span class="k2">(</span>t_now-t_pre&gt;<span class="k3">=</span><span class="n">0</span>.<span class="n">033</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 151</span>
<span class="number"> 152</span>        <span class="c">//如果时间间隔合适的话就</span>
<span class="number"> 153</span>        <span class="c">//更新一帧的游戏逻辑</span>
<span class="number"> 154</span>        error<span class="k3">=</span>game_frame<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 155</span>        <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number"> 156</span>        <span class="c">//刷新画面</span>
<span class="number"> 157</span>        error<span class="k3">=</span>game_render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 158</span>        <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number"> 159</span>        t_pre<span class="k3">=</span>t_now<span class="k2">;</span>
<span class="number"> 160</span>      <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span>
<span class="number"> 161</span>        <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>      <span class="k2">}</span>
<span class="number"> 163</span>    <span class="k2">}</span>
<span class="number"> 164</span>
<span class="number"> 165</span>  <span class="k2">}</span>
<span class="number"> 166</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 167</span><span class="k2">}</span>
<span class="number"> 168</span>
<span class="number"> 169</span>
<span class="number"> 170</span><span class="k1">int</span> game_distory<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 171</span>  <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 172</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 173</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (beoran)</author>
		<pubDate>Mon, 03 Dec 2012 22:25:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Visual Studio is probably messing with your source file. I had this problem when I still used it(Since then I moved to Code::Blocks, and lived happilly ever after)</p><p>This is counter-intuitive, but try saving your source file as ANSI encoding(whithout converting it, so chinese characters will appear as gilberish), and compiling again with VC. Worked for me.</p><p>EDIT: Unfortunately, at the time, this method is the only way I got my language to work properly using MSVC. Check <a href="https://www.allegro.cc/forums/thread/609988">this thread</a> for more info.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Cassio Renan)</author>
		<pubDate>Tue, 04 Dec 2012 01:33:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>......<br />I have tried to have done following things:</p><p>1.Put  the &quot;SIMYOU.TTF&quot; file in the same place as the executable.<br />2.I&#39;m sure this font file to support chinese.<br />3.In Visual Studio, go to File -&gt; Advanced Save Options. Make sure the encoding is set to UTF8.<br />4.I deleted this source file and rewrite a source file.<br />	<br />However,it can&#39;t dispaly chinese yet,only display english character.</p><p> I write in chinese and english a string,but only display endlish part.
</p><div class="source-code snippet"><div class="inner"><pre>ustr <span class="k3">=</span><a href="http://www.allegro.cc/manual/al_ustr_new"><span class="a">al_ustr_new</span></a><span class="k2">(</span><span class="s">"hello你好!"</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Quanwei Yuan)</author>
		<pubDate>Tue, 04 Dec 2012 09:54:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your best options are to move your strings into an external file, or use gcc.</p><p>The problem is that MSVC converts string literals from the source file encoding (UTF-8) into the local encoding (e.g. GB2312). There are ways to trick it <b>not</b> to do that, but it is not reliable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Tue, 04 Dec 2012 13:58:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you very much for your help<br />I have solved this problem.
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="c">//头文件</span>
<span class="number">   2</span><span class="p">#define ALLEGRO_NO_MAGIC_MAIN</span>
<span class="number">   3</span><span class="p">#include &lt;Windows.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">   7</span><span class="p">#pragma comment(lib,"allegro-5.0.7-mt-debug.lib") //链接Allegro的库</span>
<span class="number">   8</span><span class="p">#pragma comment(lib,"allegro_font-5.0.7-mt-debug.lib") //链接Allegro的库</span>
<span class="number">   9</span><span class="p">#pragma comment(lib,"allegro_ttf-5.0.7-mt-debug.lib") //链接Allegro的库</span>
<span class="number">  10</span><span class="c">////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  11</span>
<span class="number">  12</span><span class="c">//函数</span>
<span class="number">  13</span><span class="k1">int</span> game_init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//初始化游戏</span>
<span class="number">  14</span><span class="k1">int</span> game_run<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">//进入游戏循环</span>
<span class="number">  15</span><span class="k1">int</span> game_frame<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//逻辑处理函数</span>
<span class="number">  16</span><span class="k1">int</span> game_render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//渲染函数</span>
<span class="number">  17</span><span class="k1">int</span> game_distory<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//释放资源</span>
<span class="number">  18</span><span class="k1">int</span> game_msg<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">//消息处理</span>
<span class="number">  19</span><span class="k1">char</span> <span class="k3">*</span> UTF8<span class="k2">(</span><span class="k1">wchar_t</span> <span class="k3">*</span> src,<span class="k1">char</span> <span class="k3">*</span> str<span class="k3">=</span><span class="n">0</span>,<span class="k1">int</span> str_length<span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span><span class="c">//常量</span>
<span class="number">  21</span><span class="k1">const</span> <span class="k1">int</span> WIN_WIDTH    <span class="k3">=</span><span class="n">800</span><span class="k2">;</span> <span class="c">//窗口宽度</span>
<span class="number">  22</span><span class="k1">const</span> <span class="k1">int</span> WIN_HEIGHT  <span class="k3">=</span><span class="n">600</span><span class="k2">;</span> <span class="c">//窗口高度</span>
<span class="number">  23</span><span class="c">//全局变量</span>
<span class="number">  24</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>    <span class="c">//显示设备</span>
<span class="number">  25</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue<span class="k2">;</span>    <span class="c">//事件队列</span>
<span class="number">  26</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> my_event<span class="k2">;</span>      <span class="c">//事件</span>
<span class="number">  27</span><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><span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  28</span><a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a> <span class="k3">*</span>ustr<span class="k2">;</span>
<span class="number">  29</span><span class="k1">char</span> str<span class="k2">[</span><span class="n">20</span><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">  30</span><span class="k1">char</span><span class="k3">*</span> str2<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  31</span><span class="k1">int</span> outLength<span class="k2">;</span>
<span class="number">  32</span><span class="c">////////////////////////////////////////////////////////////////////////////////////////////</span>
<span class="number">  33</span><span class="k1">int</span> WINAPI WinMain<span class="k2">(</span>HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,<span class="k1">int</span> nShowCmd <span class="k2">)</span>
<span class="number">  34</span><span class="k2">{</span>
<span class="number">  35</span>  <span class="k1">int</span> error<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number">  36</span>
<span class="number">  37</span>  <span class="c">//把游戏初始化的代码写在我们的 game_init()函数里</span>
<span class="number">  38</span>  <span class="c">//然后放到这里执行</span>
<span class="number">  39</span>  <span class="c">//把game_init()的返回值赋给error</span>
<span class="number">  40</span>  <span class="c">//error如果为0的话表示一切正常，初始化成功了！</span>
<span class="number">  41</span>  <span class="c">//如果不为0的话，表示初始化的时候，发生了意外。</span>
<span class="number">  42</span>  <span class="c">//需要立即结束程序，并返回错误码</span>
<span class="number">  43</span>  error<span class="k3">=</span>game_init<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>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number">  45</span>  
<span class="number">  46</span>
<span class="number">  47</span>  <span class="c">//初始化完成后，开始进入游戏的主循环，</span>
<span class="number">  48</span>  <span class="c">//在主循环里将循环执行，消息处理，逻辑处理，和渲染函数</span>
<span class="number">  49</span>  error<span class="k3">=</span>game_run<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  50</span>  <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number">  51</span>  
<span class="number">  52</span>
<span class="number">  53</span>  <span class="c">//游戏结束后，销毁所占用的资源</span>
<span class="number">  54</span>  error<span class="k3">=</span>game_distory<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>  <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number">  56</span>
<span class="number">  57</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  58</span><span class="k2">}</span>
<span class="number">  59</span><span class="k1">int</span> game_init<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  60</span>
<span class="number">  61</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  62</span>  <span class="c">/************************************************************************/</span>
<span class="number">  63</span>  <span class="c">/*  使用al_init()来初始化Allegro系统</span>
<span class="number">  64</span><span class="c">    al_init实际上是一个宏，他实际上调用了</span>
<span class="number">  65</span><span class="c">      al_install_system(ALLEGRO_VERSION_INT,atexit)</span>
<span class="number">  66</span><span class="c">      该函数的返回值是布尔型，初始化成功则返回true,否则返回false                                                                   */</span>
<span class="number">  67</span>  <span class="c">/************************************************************************/</span>
<span class="number">  68</span>
<span class="number">  69</span>  <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>  <a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>  <a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>  <span class="c">/************************************************************************/</span>
<span class="number">  74</span>  <span class="c">/* 初始化鼠标，和键盘设备,以便Allegro可以接收到鼠标和键盘消息                                                                     */</span>
<span class="number">  75</span>  <span class="c">/************************************************************************/</span>
<span class="number">  76</span>
<span class="number">  77</span>  <span class="c">//al_set_new_display_flags(ALLEGRO_FULLSCREEN);//如果取消掉本行注释就是全屏模式</span>
<span class="number">  78</span>  display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>WIN_WIDTH, WIN_HEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span><span class="k1">return</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  80</span>  <span class="c">/************************************************************************/</span>
<span class="number">  81</span>   <span class="c">/*ALLEGRO_DISPALY *al_create_display(int w,int h)   创建显示设备</span>
<span class="number">  82</span><span class="c">  参数 w 为要创建的窗口的宽度</span>
<span class="number">  83</span><span class="c">  参悟 h 为窗口的高度</span>
<span class="number">  84</span><span class="c">  成功则返回一个disply的指针，否则返回NULL</span>
<span class="number">  85</span><span class="c">  /************************************************************************/</span>
<span class="number">  86</span>  <span class="c">//设置Windows的标题</span>
<span class="number">  87</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"Allrgro系列教程(四) 显示文字"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>
<span class="number">  89</span>  <span class="c">//初始化事件队列，接受到的消息将存储在该队列里</span>
<span class="number">  90</span>  queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>  <span class="c">//指定要接收哪个设备的消息</span>
<span class="number">  92</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>
<span class="number">  95</span>  <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k3">=</span><a href="http://www.allegro.cc/manual/al_load_ttf_font"><span class="a">al_load_ttf_font</span></a><span class="k2">(</span><span class="s">"simfang.ttf"</span>,<span class="n">24</span>,<span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k1">return</span> <span class="n">3</span><span class="k2">;</span>
<span class="number">  97</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>UTF8<span class="k2">(</span>L<span class="s">"我很好啊"</span>,str,<span class="n">20</span><span class="k2">)</span><span class="k2">)</span><span class="k1">return</span> <span class="n">5</span><span class="k2">;</span>
<span class="number">  98</span>  str2<span class="k3">=</span>UTF8<span class="k2">(</span>L<span class="s">"hello你好!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 100</span><span class="k2">}</span>
<span class="number"> 101</span><span class="k1">int</span> game_msg<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 102</span>
<span class="number"> 103</span>  <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>queue,<span class="k3">&amp;</span>my_event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>  <span class="c">/************************************************************************/</span>
<span class="number"> 105</span>  <span class="c">/*  函数原型   </span>
<span class="number"> 106</span><span class="c">  void al_wait_for_event(ALLEGRO_EVENT_QUEUE *queue,ALLEGRO_EVENT *ret_event)</span>
<span class="number"> 107</span><span class="c">  等到队列里有新事件时，将新事件的内容复制到 ret_event里，并从事件队列里移除它</span>
<span class="number"> 108</span><span class="c">  */</span>
<span class="number"> 109</span>  <span class="c">/************************************************************************/</span>
<span class="number"> 110</span>  <span class="k1">if</span><span class="k2">(</span>my_event.type<span class="k3">=</span><span class="k3">=</span>ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span><span class="k1">return</span> <span class="n">98</span><span class="k2">;</span> <span class="c">//当窗口被关闭时</span>
<span class="number"> 111</span>  <span class="k1">if</span> <span class="k2">(</span>my_event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_CHAR<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 112</span>    <span class="k1">if</span> <span class="k2">(</span>my_event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span><span class="c">//当按下 ESC键时</span>
<span class="number"> 113</span>      <span class="k1">return</span> <span class="n">99</span><span class="k2">;</span>
<span class="number"> 114</span>  <span class="k2">}</span>
<span class="number"> 115</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 116</span>
<span class="number"> 117</span><span class="k2">}</span>
<span class="number"> 118</span>
<span class="number"> 119</span><span class="k1">int</span> game_frame<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 120</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 121</span><span class="k2">}</span>
<span class="number"> 122</span>
<span class="number"> 123</span>
<span class="number"> 124</span>
<span class="number"> 125</span><span class="k1">int</span> game_render<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 126</span>  <span class="c">//用指定的颜色填充屏幕</span>
<span class="number"> 127</span>  
<span class="number"> 128</span>  
<span class="number"> 129</span>  <a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 130</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">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,str<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</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">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>,<span class="n">0</span>,<span class="n">50</span>,<span class="n">0</span>,str2<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 132</span>  <span class="c">//翻转</span>
<span class="number"> 133</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"> 134</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 135</span><span class="k2">}</span>
<span class="number"> 136</span>
<span class="number"> 137</span>
<span class="number"> 138</span><span class="k1">int</span> game_run<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 139</span>
<span class="number"> 140</span>  <span class="c">//下面的变量用来记录时间，单位是秒</span>
<span class="number"> 141</span>  <span class="c">//用以控制帧率(FPS)，也就是每秒画面刷新多少帧，</span>
<span class="number"> 142</span>  <span class="c">//这里我们设FPS为30，用 1秒的时间单位/FPS   </span>
<span class="number"> 143</span>  <span class="c">//也就是0.033,也就是说，每次刷新的间隔时间不能小于0.033秒</span>
<span class="number"> 144</span>  <span class="k1">double</span> t_now<span class="k3">=</span><span class="n">0</span>.<span class="n">0</span><span class="k2">;</span> <span class="c">//当前时刻</span>
<span class="number"> 145</span>  <span class="k1">double</span> t_pre<span class="k3">=</span><span class="n">0</span>.<span class="n">0</span><span class="k2">;</span> 
<span class="number"> 146</span>  <span class="k1">int</span> error<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 147</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span> 
<span class="number"> 148</span>  <span class="k2">{</span>
<span class="number"> 149</span>    <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>queue<span class="k2">)</span><span class="k2">)</span><span class="k2">{</span> <span class="c">//先检测事件对了中是否有新事件</span>
<span class="number"> 150</span>
<span class="number"> 151</span>      error <span class="k3">=</span>game_msg<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//有 则先处理事件</span>
<span class="number"> 152</span>      <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number"> 153</span>    <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span>
<span class="number"> 154</span>      <span class="c">//如果 事件队列中没有新事件 则</span>
<span class="number"> 155</span>      <span class="c">//计算事件间隔时候大于0.033</span>
<span class="number"> 156</span>      t_now<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_get_time"><span class="a">al_get_time</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>      <span class="k1">if</span><span class="k2">(</span>t_now-t_pre&gt;<span class="k3">=</span><span class="n">0</span>.<span class="n">033</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 158</span>
<span class="number"> 159</span>        <span class="c">//如果时间间隔合适的话就</span>
<span class="number"> 160</span>        <span class="c">//更新一帧的游戏逻辑</span>
<span class="number"> 161</span>        error<span class="k3">=</span>game_frame<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>        <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number"> 163</span>        <span class="c">//刷新画面</span>
<span class="number"> 164</span>        error<span class="k3">=</span>game_render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>        <span class="k1">if</span><span class="k2">(</span>error<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k1">return</span> error<span class="k2">;</span>
<span class="number"> 166</span>        t_pre<span class="k3">=</span>t_now<span class="k2">;</span>
<span class="number"> 167</span>      <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span>
<span class="number"> 168</span>        <span class="c">//当CPU可以处理游戏逻辑的能力超过我们的需要时</span>
<span class="number"> 169</span>        <span class="c">//调用Sleep(0)</span>
<span class="number"> 170</span>        <span class="c">//这个Windows API 将使当前的线程释放出自己的控制权，</span>
<span class="number"> 171</span>        <span class="c">//这一点对Windows平台很重要，可以使游戏不至于占用全部</span>
<span class="number"> 172</span>        <span class="c">//的CPU，每次切换游戏的进程，都把可以用的时间片用完了</span>
<span class="number"> 173</span>        <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 174</span>      <span class="k2">}</span>
<span class="number"> 175</span>    <span class="k2">}</span>
<span class="number"> 176</span>
<span class="number"> 177</span>  <span class="k2">}</span>
<span class="number"> 178</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 179</span><span class="k2">}</span>
<span class="number"> 180</span>
<span class="number"> 181</span>
<span class="number"> 182</span><span class="k1">int</span> game_distory<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 183</span>  <span class="k1">delete</span> str2<span class="k2">;</span>
<span class="number"> 184</span>  <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 185</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 186</span><span class="k2">}</span>
<span class="number"> 187</span>
<span class="number"> 188</span>
<span class="number"> 189</span>
<span class="number"> 190</span><span class="k1">char</span> <span class="k3">*</span> UTF8<span class="k2">(</span><span class="k1">wchar_t</span> <span class="k3">*</span> src,<span class="k1">char</span> <span class="k3">*</span> str,<span class="k1">int</span> str_length<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 191</span>  
<span class="number"> 192</span>  <span class="k1">int</span> length <span class="k3">=</span>WideCharToMultiByte<span class="k2">(</span>CP_UTF8,<span class="n">0</span>,src,<span class="k3">-</span><span class="n">1</span>,NULL,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 193</span>  <span class="k1">if</span><span class="k2">(</span>str<span class="k3">!</span><span class="k3">=</span><span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> str_length<span class="k3">!</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 194</span>    <span class="k1">if</span><span class="k2">(</span>str_length<span class="k3">&lt;</span>length<span class="k2">)</span><span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 195</span>    WideCharToMultiByte<span class="k2">(</span>CP_UTF8,<span class="n">0</span>,src,<span class="k3">-</span><span class="n">1</span>,str,str_length,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 196</span>    <span class="k1">return</span> str<span class="k2">;</span>
<span class="number"> 197</span>  <span class="k2">}</span>
<span class="number"> 198</span>  str<span class="k3">=</span><span class="k1">new</span> <span class="k1">char</span><span class="k2">[</span>length<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 199</span>  WideCharToMultiByte<span class="k2">(</span>CP_UTF8,<span class="n">0</span>,src,<span class="k3">-</span><span class="n">1</span>,str,length,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 200</span>  <span class="k1">return</span> str<span class="k2">;</span>
<span class="number"> 201</span>
<span class="number"> 202</span><span class="k2">}</span>
</div></div><p>


I hope allegro&#39;s next version support this function.. <br />eg:<br />void al_draw_text(const ALLEGRO_FONT *font,<br />   ALLEGRO_COLOR color, float x, float y, int flags,<br />   wchar_t const *text)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Quanwei Yuan)</author>
		<pubDate>Tue, 04 Dec 2012 17:21:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just a note, but unless you absolutely need to, there&#39;s no reason to use WinMain. Allegro lets you use a normal main() function, even on windows. Using WinMain makes your program less portable.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 04 Dec 2012 19:16:28 +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/611547/971496#target">Quanwei Yuan</a> said:</div><div class="quote"><p> I hope allegro&#39;s next version support this function.. <br /> eg:<br /> void al_draw_text(const ALLEGRO_FONT *font,<br />    ALLEGRO_COLOR color, float x, float y, int flags,<br />   wchar_t const *text)</p></div></div><p>It&#39;s not hard to make:</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span><span class="k1">const</span> <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_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color,
             <span class="k1">float</span> x, <span class="k1">float</span> y, flags, <span class="k1">uint16_t</span> <span class="k1">const</span> <span class="k3">*</span>text<span class="k2">)</span>
<span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/ALLEGRO_USTR"><span class="a">ALLEGRO_USTR</span></a> <span class="k3">*</span> ustr <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_ustr_new_from_utf16"><span class="a">al_ustr_new_from_utf16</span></a><span class="k2">(</span>text<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_48.html" target="_blank">assert</a><span class="k2">(</span>ustr<span class="k2">)</span><span class="k2">;</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, flags, ustr<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/al_ustr_free"><span class="a">al_ustr_free</span></a><span class="k2">(</span>ustr<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Untested code, of course <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p><a href="http://alleg.sourceforge.net/a5docs/5.0.8/utf8.html#utf-16-conversion">http://alleg.sourceforge.net/a5docs/5.0.8/utf8.html#utf-16-conversion</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (torhu)</author>
		<pubDate>Wed, 05 Dec 2012 00:15:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Also, never use wchar_t. While wchar_t is UTF16 with MSCV, in general it&#39;s not.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Wed, 05 Dec 2012 01:50:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="">torhu:</a> said:</div><div class="quote"><p>It&#39;s not hard to make:</p><p>al_draw_text(const ALLEGRO_FONT *font, ALLEGRO_COLOR color,<br />             float x, float y, flags, uint16_t const *text)<br />{<br />    ALLEGRO_USTR * ustr = al_ustr_new_from_utf16(text);<br />    assert(ustr);<br />    al_draw_text(font, color, x, y, flags, ustr);<br />    al_ustr_free(ustr);<br />}<br />Untested code, of course </p><p><a href="http://alleg.sourceforge.net/a5docs/5.0.8/utf8.html#utf-16-conversion">http://alleg.sourceforge.net/a5docs/5.0.8/utf8.html#utf-16-conversion</a></p></div></div><p>

</p><div class="quote_container"><div class="title"><a href="">Elias</a> said:</div><div class="quote"><p>Also, never use wchar_t. While wchar_t is UTF16 with MSCV, in general it&#39;s not.</p></div></div><p>

Thanks!<br />It is correct way that use al_ustr_new_from_utf16(...) .;)</p><p>I enjoyed the lively atmosphere of this forum and helpfulness you.</p><p>I&#39;m hard studying english now.<br /><img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Quanwei Yuan)</author>
		<pubDate>Wed, 05 Dec 2012 12:51:32 +0000</pubDate>
	</item>
</rss>
