<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lf426的专栏]]></title><description><![CDATA[再别流年的技术实验室（优快云）]]></description><link>https://blog.youkuaiyun.com/lf426</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lf426]]></copyright><item><title><![CDATA[SDL入门教程（十三）：3、封装多线程   ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2657236</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2657236</guid><author>lf426</author><pubDate>Wed, 16 Jul 2008 01:23:00 +0800</pubDate><description><![CDATA[作者：龙飞        SDL创建多线程的函数SDL_CreateThread()所调用的是函数指针，这意味着我们不可以传入（非静态）成员函数的指针。关于两种函数指针我们之前已经讨论过：函数指针与成员函数指针，我们可以有两种方法能让具有普通函数指针（函数指针以及静态成员函数指针）的函数调用类的私有成员，一是友元函数，另外就是静态成员函数。而能够受到类私有保护的，只有静态成员函数。所以，我们可以通]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十三）：2、初识多线程]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2657235</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2657235</guid><author>lf426</author><pubDate>Wed, 16 Jul 2008 01:22:00 +0800</pubDate><description><![CDATA[作者：龙飞2.1：竞争条件（Race Conditions）        我们在前面将一个普通函数调用转换成了用线程调用，这意味着我们可以“同时”调用两个以上的线程。例如，我们希望在屏幕的另外一个位置也播放这段简单的动画，我们只需要添加一个线程的调用就可以了。int main(int argc ,char* argv[]){    //Create a SDL screen.    cons]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十三）：1、多线程，从动画说起]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2657234</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2657234</guid><author>lf426</author><pubDate>Wed, 16 Jul 2008 01:20:00 +0800</pubDate><description><![CDATA[作者：龙飞1.1：简单动画        游戏离不开动画。我们考虑最简单的情况：将一个角色从一个位置移动到另外一个位置。这个行为表述给电脑就是，将一个surface不断的blit()，从起始位置的坐标，移动到结束位置的坐标。移动速度取决于每次blit()的坐标差和blit()的时间间隔（v = ds/dt ）。        我们来设计一个函数实现这个简单的动画。我们需要的数据有：起始坐标（int]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十二）：音乐和音效 ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2657233</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2657233</guid><author>lf426</author><pubDate>Wed, 16 Jul 2008 01:18:00 +0800</pubDate><description><![CDATA[作者：龙飞1：扩展库SDL_mixer        根据网上资料的说法，SDL本身的声音体系做得不是很完善，好在还有一个比较完善的扩展库SDL_mixer，这个库支持包括wav, mp3, ogg和midi的声音和音乐，也算是相当完善了。下载地址在：http://www.libsdl.org/projects/SDL_mixer/安装设置参考前面的涉及SDL扩展库安装设置的章节。2：SDL_mi]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十一）：3、做一个对话框 ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2657231</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2657231</guid><author>lf426</author><pubDate>Wed, 16 Jul 2008 01:16:00 +0800</pubDate><description><![CDATA[作者：龙飞        有了按钮类，我们制作对话框就很轻松了。边写程序边说明吧。bool hand_dialog(const ScreenSurface& screen, const std::string& dialog_text, int size){    const int CENTRE_X = (screen.point()->w) / 2;    const int CENTRE]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十一）：2、设计按钮ButtonClass ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2657222</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2657222</guid><author>lf426</author><pubDate>Wed, 16 Jul 2008 01:13:00 +0800</pubDate><description><![CDATA[作者：龙飞2.1：设计框架与基类的接口        有了更加完善的SurfaceClass的支持，我们可以进行按钮的设计了。接着上一节的话题，按钮除了要给我们表现出来是否被按下的视觉效果，还要起到实际上的作用。一种最简单的思路，既是鼠标在按钮上一旦按下，程序就马上响应。这种思路很朴素，也很实用。大名鼎鼎的QuakeIII的菜单按钮就是这么设计的，这样我们几乎是可以直接使用SDL的事件响应，即：事]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十一）：1、SurfaceClass类的再设计]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2657216</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2657216</guid><author>lf426</author><pubDate>Wed, 16 Jul 2008 01:12:00 +0800</pubDate><description><![CDATA[ 作者：龙飞1.1：为了按钮做准备        按钮是鼠标事件响应的象征，在PC游戏中起着十分重要的作用。这一章节，我们开始通过SDL提供的底层函数，自己来设计按钮。        按钮一般有这么几种状态：out: 鼠标不在按钮上；over: 鼠标在按钮上；down: 鼠标按下了；up: 鼠标松开了；        其中，down和up又可以细分为鼠标是在按钮上按下松开的，还是在按钮外按下松开的]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十）：5、SDL完美显示中文 ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2243034</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2243034</guid><author>lf426</author><pubDate>Wed, 02 Apr 2008 00:38:00 +0800</pubDate><description><![CDATA[ 作者：龙飞注意：请使用支持中文的TTF字库。5.1：构建可以正确显示中文的SDL_ttf函数        世界终于又充满了光明！任何事情都是有答案的，不知道仅仅是因为我们还没有找到。解决了以上一系列问题，我们终于可以不依赖MFC，完全使用自由开源的资源，让SDL显示中文了！我们通过TTF_RenderUNICODE_Xxx()来构建这些函数：//FileName: font.h#ifnde]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十）：4、用iconv获得正确的Unicode，使用FriBiDi实现UTF-8到Unicode的正确转换 ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2243032</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2243032</guid><author>lf426</author><pubDate>Wed, 02 Apr 2008 00:37:00 +0800</pubDate><description><![CDATA[作者：龙飞4.1：为什么iconv不能完全正确的转换Unicode？        我不是先知，教程里面是整理过的思路和逻辑顺序，在我研究这个问题的时候，头绪远远比教程里面乱得多。我完全是从Wesnoth的源代码去分析问题的，所以，为什么会扯上UTF-8和FriBidi，那也是因为在源代码中找到了线索。        iconv不能完全正确的获得Unicode，也就是我们刚才遇到的纯汉字转换没问题]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十）：3、字符集之间的转换，win32下的libiconv ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2243029</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2243029</guid><author>lf426</author><pubDate>Wed, 02 Apr 2008 00:36:00 +0800</pubDate><description><![CDATA[作者：龙飞3.1：GNU的libiconv项目http://www.gnu.org/software/libiconv/        再一次的，感谢伟大的GNU。我们需要的是Unicode码，在程序中转换，我们需要相应的库。libiconv支持许多字符集，包括我们将用到的GB2312，UTF-8和UCS-2（Unicode）。具体的，在项目主页上有详细的说明。我们需要新学习直接用的类容并不繁多，]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十）：2、直接通过Unicode让SDL显示中文 ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2243028</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2243028</guid><author>lf426</author><pubDate>Wed, 02 Apr 2008 00:35:00 +0800</pubDate><description><![CDATA[作者：龙飞2.1：SDL本身可以显示中文吗？        SDL的扩展库SDL_ttf本身具备显示中文的功能吗？网上很多观点，说不能显示的，甚至做了分析解释了原因。但是，事实是，SDL本身就可以显示中文。如果我们看看SDL_ttf.c的源代码，我们可以看到，最终用于构建SDL_Surface平面的函数，在三种显示模式（Solid, Shaded, Blended）下，都是其对应的TTF_Rend]]></description><category></category></item><item><title><![CDATA[SDL入门教程（十）：1、多语言支持，Win32下的GetText ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2243024</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2243024</guid><author>lf426</author><pubDate>Wed, 02 Apr 2008 00:33:00 +0800</pubDate><description><![CDATA[作者：龙飞        自从开始研究SDL的文本显示，我就一直在思考在SDL中显示中文的问题。我们知道韦诺之战（Battle for Wesnoth）使用SDL开发的，并且支持多语言。所以，我一直相信Wesnoth的源代码里面一定有我所需要的答案。网络上是纵说纷纭啊，有些人干脆说，SDL不支持中文；有些人在困难面前回到了MFC的怀抱。而，既然我的目标是跨平台，并且我也相信一定能找到答案，所以，我]]></description><category></category></item><item><title><![CDATA[SDL入门教程（九）：5、文本反馈鼠标位置坐标信息]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2243021</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2243021</guid><author>lf426</author><pubDate>Wed, 02 Apr 2008 00:32:00 +0800</pubDate><description><![CDATA[作者：龙飞注意事项：1、times.ttf文件请到C:/WINDOWS/Fonts下寻找并拷贝到资源目录下。2、如果您使用VC2008，请用Release编译。原因是，似乎涉及到vector的操作，Runtime Library在debug的时候必须用Multi-theaded Debug DLL (MDd)，而Release时候才用Multi-theaded DLL (MD)。而我们亲爱的SDL]]></description><category></category></item><item><title><![CDATA[SDL入门教程（九）：4、int转换为std::string ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2243018</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2243018</guid><author>lf426</author><pubDate>Wed, 02 Apr 2008 00:31:00 +0800</pubDate><description><![CDATA[作者：龙飞        我下面考虑的问题，是用TextSurface反馈鼠标事件的信息。我想到的第一个例子，很自然就是反馈鼠标所在坐标的位置。这里涉及到一个基础的问题，即鼠标位置显然不是用字符串表示的。SDL给我们的反馈信息是int，我们需要用TextSurface将int构建成可以被blit到ScreenSurface上的面，需要做的第一件事情，是将int转换为string。        我]]></description><category></category></item><item><title><![CDATA[SDL入门教程（九）：3、文本反馈“按键”信息 ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2243016</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2243016</guid><author>lf426</author><pubDate>Wed, 02 Apr 2008 00:30:00 +0800</pubDate><description><![CDATA[ 作者：龙飞3.1：一些小的修改        我觉得写C++的程序，一是看起来确实比较C++一点，二是相对于C的“精炼”，C++要的是“健壮”。所以，其实我不太满意用C风格字符串作为ScreenSurface的成员数据，所以做了修改。这也是为了在程序中构建ScreenSurface对象的时候可以使用string。class ScreenSurface{private:    //    st]]></description><category></category></item><item><title><![CDATA[SDL入门教程（九）：2、显示文本的完整代码 ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2215038</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2215038</guid><author>lf426</author><pubDate>Tue, 25 Mar 2008 01:09:00 +0800</pubDate><description><![CDATA[注意：ttf字库文件，可以在C:/WINDOWS/Fonts下寻找，比如例子中用到的times.ttf；lazy.ttf请到Lazy Foo的相关教程True Type Fonts后面的示例中获得。//UVi Soft (2008)//Long Fei (lf426), E-mail: zbln426@163.com//FileName: SurfaceClass.h#ifndef SURFA]]></description><category></category></item><item><title><![CDATA[SDL入门教程（九）：1、在SDL图形窗口显示文本 ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2215037</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2215037</guid><author>lf426</author><pubDate>Tue, 25 Mar 2008 01:08:00 +0800</pubDate><description><![CDATA[作者：龙飞        最近几篇教程基本上都是参考着Lazy Foo的教程顺序来的。因为我也觉得他的顺序很实用。所不同的是，新的类型我都添加在了之前建立起来的surface类的基础之上。所以，如果你觉得单独看这些教程完全搞不明白，最好从头按照顺序来学习。另外，为了复习C++知识，也为了遵循C++的理念，我有意的将程序风格向C++靠拢。如果你更喜欢C风格，相信你在其他地方可以找到更适合你的教程。1]]></description><category></category></item><item><title><![CDATA[SDL入门教程（八）：2、裁剪精灵图片的完整源代码 ]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2215036</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2215036</guid><author>lf426</author><pubDate>Tue, 25 Mar 2008 01:06:00 +0800</pubDate><description><![CDATA[ //UVi Soft (2008)//Long Fei (lf426), E-mail: zbln426@163.com//FileName: SurfaceClass.h#ifndef SURFACE_CLASS_H#define SURFACE_CLASS_H#include iostream>#include string>#include "SDL/SDL.h"#include "S]]></description><category></category></item><item><title><![CDATA[SDL入门教程（八）：1、裁剪精灵图片（Clip Blitting and Sprite Sheets）]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2215035</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2215035</guid><author>lf426</author><pubDate>Tue, 25 Mar 2008 01:05:00 +0800</pubDate><description><![CDATA[作者：龙飞        这两天下雨，所以就暂停了寻春的步伐，多写了点教程。绵阳的春天是美丽的，大家学习和写程序之余，还是应该多看看大自然。给大家推荐我拍的风景照啦，呵呵。http://picasaweb.google.com/firefly.cao        因为不想多上传图片，所以我的例子中的图片文件直接就用Lazy Foos教程中的附件了。相关资源，大家可以在这里下载：Clip Bli]]></description><category></category></item><item><title><![CDATA[SDL入门教程（七）：SDL抠色（Color Keying）]]></title><link>https://blog.youkuaiyun.com/lf426/article/details/2215034</link><guid>https://blog.youkuaiyun.com/lf426/article/details/2215034</guid><author>lf426</author><pubDate>Tue, 25 Mar 2008 01:03:00 +0800</pubDate><description><![CDATA[作者：龙飞1：什么是抠色（Color Keying）        我们总是blit矩形区域的图片，但是很显然，几乎没有一个游戏的角色图片是矩形的。美工把图片画到一个矩形范围内，如果设定了特定的背景颜色，我们就可以把矩形图片上的角色“抠”下来，相对于背景来说，我们就是把不属于角色的背景颜色扣掉，故称抠色。        我们看看SDL抠色函数的原形：int SDL_SetColorKey(SD]]></description><category></category></item></channel></rss>