自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

转载 一个初中学历程序员(本人)的学习历程

大家好,我叫小86,本帖发表一下我的工作生涯感触.并且望能从回复中挖掘到高人指点,吸收更多思想,得到更多参考角度去规划自己的人生.2007年,18岁的我初中毕业,中考分数也就420分,数学36分特差,家穷,没有读下去,不想给家里增加负担.(后来父亲大病,还到处借钱,最后不治...现在还忙着挣钱还债)那时候对电脑常规操作都还算蛮熟悉的了,至少这是因为我对电脑很感兴趣,于是去了一家网吧做网

2012-09-20 09:34:56 6085 2

转载 ffmpeg+sdl教程——编写一个简单的播放器4(让程序更模块化)

上个教程为视频加入了音频,但是音频和视频间完全没有同步,各自播放各自的数据帧,我们将在下一个教程实现音频和视频之间的同步,再那之前需要先做一些准备工作。      为了让程序更模块化,便于扩展,需要把原来main函数中的各个功能模块代码分离出来放在相应的函数中。该教程和上个教程相比代码量和难度都增加很多,比上个教程使用了更多的线程,一定要理解清楚各个函数和数据结构之间的关联以及线程之间如何协同

2012-09-13 16:42:52 937

转载 ffmpeg+sdl教程——编写一个简单的播放器3(为视频加入音频)

上个教程实现了视频的简单播放,但那是个哑巴电影,完全没有声音。      这个教程第一次用到了SDL的线程,涉及到了两个线程间的同步协调,有几个地方需要特别留意,SDL_OpenAudio库函数会打开音频设备(0是恢复,其他的是暂停),SDL_PauseAudio库函数可以暂停或者恢复audio_callback函数的执行,程序中的这行代码“SDL_PauseAudio(0);”执行后,让au

2012-09-13 16:41:38 1205

转载 SDL入门教程(十三):3、封装多线程

作者:龙飞        SDL创建多线程的函数SDL_CreateThread()所调用的是函数指针,这意味着我们不可以传入(非静态)成员函数的指针。关于两种函数指针我们之前已经讨论过:函数指针与成员函数指针,我们可以有两种方法能让具有普通函数指针(函数指针以及静态成员函数指针)的函数调用类的私有成员,一是友元函数,另外就是静态成员函数。而能够受到类私有保护的,只有静态成员函数。所以,我

2012-09-12 08:42:43 572

转载 SDL入门教程(十三):2、初识多线程

作者:龙飞2.1:竞争条件(Race Conditions)        我们在前面将一个普通函数调用转换成了用线程调用,这意味着我们可以“同时”调用两个以上的线程。例如,我们希望在屏幕的另外一个位置也播放这段简单的动画,我们只需要添加一个线程的调用就可以了。int main(int argc ,char* argv[]){    //Create a SDL

2012-09-12 08:42:40 728

转载 SDL入门教程(十三):1、多线程,从动画说起

作者:龙飞1.1:简单动画        游戏离不开动画。我们考虑最简单的情况:将一个角色从一个位置移动到另外一个位置。这个行为表述给电脑就是,将一个surface不断的blit(),从起始位置的坐标,移动到结束位置的坐标。移动速度取决于每次blit()的坐标差和blit()的时间间隔(v = ds/dt )。        我们来设计一个函数实现这个简单的动画。我们需要的数据

2012-09-12 08:42:37 1394

转载 SDL入门教程(十二):音乐和音效

作者:龙飞1:扩展库SDL_mixer        根据网上资料的说法,SDL本身的声音体系做得不是很完善,好在还有一个比较完善的扩展库SDL_mixer,这个库支持包括wav, mp3, ogg和midi的声音和音乐,也算是相当完善了。下载地址在:http://www.libsdl.org/projects/SDL_mixer/安装设置参考前面的涉及SDL扩展库安装设置

2012-09-12 08:42:33 1416

转载 SDL入门教程(十一):3、做一个对话框

作者:龙飞        有了按钮类,我们制作对话框就很轻松了。边写程序边说明吧。bool hand_dialog(const ScreenSurface& screen, const std::string& dialog_text, int size){    const int CENTRE_X = (screen.point()->w) / 2;    co

2012-09-12 08:42:30 859

转载 SDL入门教程(十一):2、设计按钮ButtonClass

作者:龙飞2.1:设计框架与基类的接口        有了更加完善的SurfaceClass的支持,我们可以进行按钮的设计了。接着上一节的话题,按钮除了要给我们表现出来是否被按下的视觉效果,还要起到实际上的作用。一种最简单的思路,既是鼠标在按钮上一旦按下,程序就马上响应。这种思路很朴素,也很实用。大名鼎鼎的QuakeIII的菜单按钮就是这么设计的,这样我们几乎是可以直接使用SDL的

2012-09-12 08:42:28 1256

转载 SDL入门教程(十一):1、SurfaceClass类的再设计

作者:龙飞1.1:为了按钮做准备        按钮是鼠标事件响应的象征,在PC游戏中起着十分重要的作用。这一章节,我们开始通过SDL提供的底层函数,自己来设计按钮。        按钮一般有这么几种状态:out: 鼠标不在按钮上;over: 鼠标在按钮上;down: 鼠标按下了;up: 鼠标松开了;        其中,down和up又可以细分为鼠标是在按

2012-09-11 13:08:25 1054

转载 SDL入门教程(十):5、SDL完美显示中文

作者:龙飞注意:请使用支持中文的TTF字库。5.1:构建可以正确显示中文的SDL_ttf函数        世界终于又充满了光明!任何事情都是有答案的,不知道仅仅是因为我们还没有找到。解决了以上一系列问题,我们终于可以不依赖MFC,完全使用自由开源的资源,让SDL显示中文了!我们通过TTF_RenderUNICODE_Xxx()来构建这些函数://FileName: f

2012-09-11 13:06:57 1213

转载 SDL入门教程(十):4、用iconv获得正确的Unicode,使用FriBiDi实现UTF-8到Unicode的正确转换

作者:龙飞4.1:为什么iconv不能完全正确的转换Unicode?        我不是先知,教程里面是整理过的思路和逻辑顺序,在我研究这个问题的时候,头绪远远比教程里面乱得多。我完全是从Wesnoth的源代码去分析问题的,所以,为什么会扯上UTF-8和FriBidi,那也是因为在源代码中找到了线索。        iconv不能完全正确的获得Unicode,也就是我们刚才遇

2012-09-11 13:06:03 838

转载 SDL入门教程(十):3、字符集之间的转换,win32下的libiconv

作者:龙飞3.1:GNU的libiconv项目http://www.gnu.org/software/libiconv/        再一次的,感谢伟大的GNU。我们需要的是Unicode码,在程序中转换,我们需要相应的库。libiconv支持许多字符集,包括我们将用到的GB2312,UTF-8和UCS-2(Unicode)。具体的,在项目主页上有详细的说明。我们需要新学习直接用

2012-09-11 13:05:12 591

转载 SDL入门教程(十):2、直接通过Unicode让SDL显示中文

作者:龙飞2.1:SDL本身可以显示中文吗?        SDL的扩展库SDL_ttf本身具备显示中文的功能吗?网上很多观点,说不能显示的,甚至做了分析解释了原因。但是,事实是,SDL本身就可以显示中文。如果我们看看SDL_ttf.c的源代码,我们可以看到,最终用于构建SDL_Surface平面的函数,在三种显示模式(Solid, Shaded, Blended)下,都是其对应的

2012-09-11 13:04:26 1248

转载 SDL入门教程(十):1、多语言支持,Win32下的GetText

作者:龙飞        自从开始研究SDL的文本显示,我就一直在思考在SDL中显示中文的问题。我们知道韦诺之战(Battle for Wesnoth)使用SDL开发的,并且支持多语言。所以,我一直相信Wesnoth的源代码里面一定有我所需要的答案。网络上是纵说纷纭啊,有些人干脆说,SDL不支持中文;有些人在困难面前回到了MFC的怀抱。而,既然我的目标是跨平台,并且我也相信一定能找到答案,

2012-09-11 13:03:33 844

转载 SDL入门教程(九):5、文本反馈鼠标位置坐标信息

作者:龙飞注意事项:1、times.ttf文件请到C:/WINDOWS/Fonts下寻找并拷贝到资源目录下。2、如果您使用VC2008,请用Release编译。原因是,似乎涉及到vector的操作,Runtime Library在debug的时候必须用Multi-theaded Debug DLL (MDd),而Release时候才用Multi-theaded DLL (MD)。而

2012-09-11 13:02:38 1677

转载 SDL入门教程(九):4、int转换为std::string

作者:龙飞        我下面考虑的问题,是用TextSurface反馈鼠标事件的信息。我想到的第一个例子,很自然就是反馈鼠标所在坐标的位置。这里涉及到一个基础的问题,即鼠标位置显然不是用字符串表示的。SDL给我们的反馈信息是int,我们需要用TextSurface将int构建成可以被blit到ScreenSurface上的面,需要做的第一件事情,是将int转换为string。

2012-09-11 13:01:12 940

转载 SDL入门教程(九):3、文本反馈“按键”信息

作者:龙飞3.1:一些小的修改        我觉得写C++的程序,一是看起来确实比较C++一点,二是相对于C的“精炼”,C++要的是“健壮”。所以,其实我不太满意用C风格字符串作为ScreenSurface的成员数据,所以做了修改。这也是为了在程序中构建ScreenSurface对象的时候可以使用string。class ScreenSurface{pri

2012-09-11 13:00:16 772

转载 SDL入门教程(九):2、显示文本的完整代码

注意: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: SurfaceClas

2012-09-11 11:22:40 761

转载 SDL入门教程(九):1、在SDL图形窗口显示文本

作者:龙飞        最近几篇教程基本上都是参考着Lazy Foo的教程顺序来的。因为我也觉得他的顺序很实用。所不同的是,新的类型我都添加在了之前建立起来的surface类的基础之上。所以,如果你觉得单独看这些教程完全搞不明白,最好从头按照顺序来学习。另外,为了复习C++知识,也为了遵循C++的理念,我有意的将程序风格向C++靠拢。如果你更喜欢C风格,相信你在其他地方可以找到更适合你的

2012-09-11 11:21:15 994

转载 SDL入门教程(八):2、裁剪精灵图片的完整源代码

//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/

2012-09-11 11:03:37 777

转载 从冯•诺依曼结构看计算机科学的发展史

[+] 冯·诺依曼体系结构 汇编语言对冯·诺依曼结构的抽象  面向过程语言对冯·诺依曼结构的抽象  面向对象语言对冯·诺依曼结构的抽象  程序架构设计与冯·诺依曼结构作者:孙东风2012-8-30     转载请注明出处 本文主要内容包括:Р    冯·诺依曼体系结构Р    汇编语言对冯·诺依曼结构的抽象Р    面向过程语言对冯·诺依曼结构的抽象

2012-09-11 11:02:18 1619

转载 一个程序猿悲剧的一生

25岁毕业,拿一万块钱月薪  30岁,涨到一万五,期间无女盆友,吃10块钱盖饭,跟同学合租,挤2块钱地铁上下班,存钱25万  31岁,啃老找父母要了35万块钱,买了50平米老房子一处,贷款90万,20年,月供6500。  35岁0个月,认识一4分木耳,接盘玩腻的木耳结婚。  35岁6个月,生了小孩,小孩眉宇间有高富帅的痕迹  36岁,工资涨到2万,木耳要买驴

2012-09-11 11:02:05 471

转载 C++中的function object

看过了funciton object中的部分内容,感觉这些技术、 概念等真的需要慢慢体会,才能感受到它的博大精深。看下面的这个例子:  #include    #include    #include    using namespace std; void printInt (int elem)   {       cout    }   int ma

2012-09-11 11:02:01 346

转载 双缓冲技术及其在VC的GDI环境下的实现

昨天在论坛上,有人问起双缓冲的实现问题,想起网上这方面资料比较凌乱,而且多是 DirectX 相关的,今天特地在这里给大家简要的介绍一下双缓冲技术及其在 VC++ 的 GDI 绘图环境下的实现。  1、Windows 绘图原理  我们在 Windows 环境下看到各种元素,如菜单、按钮、窗口、图像,从根本上说,都是“画”出来的。这时的屏幕,就相当于一块黑板,而 Windows 下的

2012-09-11 11:01:56 434

转载 VC:使用可变参数宏

VC6是不支持可变参数宏的,VC2005支持。使用如下:#define TRACE(pszFormat, ...) \ CTL_CommonLogger::Output(LOGGER, LEVEL_TRACE, pszFormat, __VA_ARGS__); 其中,__VA_ARGS__就是不定参数。注意:直接这样,是没法编译通过的,因为这个宏要求编译器是VC2002(VC7

2012-09-11 11:00:59 1812

转载 链接错误nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z)

最近在VC 6.0上作業,有幾個地方都遇到一個十分惱人的錯誤。就是出現下述的錯誤: Linking... nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj) nafxcwd

2012-09-11 11:00:07 1600

转载 VC编译错误:uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPA

1>uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMT.lib(new.obj) 中定义1>uafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delet

2012-09-11 10:59:20 2209

转载 error LNK2005: cdecl operator delete(void *)

VC缺省链接库的顺序不对导致链接错误在编译工程UDPDriver时,MFC static Library和Code Generation/MultiThread选项时,链接总出现问题:nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already de

2012-09-11 10:58:19 982

转载 SDL入门教程(八):1、裁剪精灵图片(Clip Blitting and Sprite Sheets)

作者:龙飞        这两天下雨,所以就暂停了寻春的步伐,多写了点教程。绵阳的春天是美丽的,大家学习和写程序之余,还是应该多看看大自然。给大家推荐我拍的风景照啦,呵呵。http://picasaweb.google.com/firefly.cao        因为不想多上传图片,所以我的例子中的图片文件直接就用Lazy Foo's教程中的附件了。相关资源,大家可以在这里下载:Cl

2012-09-10 10:22:57 1098

转载 SDL入门教程(七):SDL抠色(Color Keying)

作者:龙飞1:什么是抠色(Color Keying)        我们总是blit矩形区域的图片,但是很显然,几乎没有一个游戏的角色图片是矩形的。美工把图片画到一个矩形范围内,如果设定了特定的背景颜色,我们就可以把矩形图片上的角色“抠”下来,相对于背景来说,我们就是把不属于角色的背景颜色扣掉,故称抠色。        我们看看SDL抠色函数的原形:int SDL_Se

2012-09-10 10:19:40 856

转载 SDL入门教程(六):SDL读取其它格式的图片

作者:龙飞1:扩充库(Extension Libraries)        SDL本身所支持的,仅仅是读取bmp格式的图片。要使用其它格式的图片,我们需要使用SDL的扩充库。在下面地址,我们可以下载到相关文件SDL_image-devel-1.2.6-VC8.zip。http://www.libsdl.org/projects/SDL_image/        与SDL

2012-09-10 10:18:53 1301

转载 SDL入门教程(五):7、鼠标事件演示,代码重用

作者:龙飞7.1:演示程序源代码        今天因为一个网上的朋友的请求,做个一个关于鼠标事件的演示程序。实际上,可以完全用到前面我们构造的类和类方法,这里送上主程序,供大家参考。其他两个文件和图片文件均不需要任何改变。#include "SurfaceClass.h"int game(int argc, char* argv[]);int main(int

2012-09-10 10:15:52 767

转载 SDL入门教程(五):6、对C++异常机制的思考,代码重写

作者:龙飞6.1:用bool作为命令是不是画蛇添足了?        不知道为什么,我总觉得总是用if结构来调用命令让人读起程序来很不连贯。所以,我决定重新修改下,并且异常抛出改为使用类对象,这样是不是更C++一点呢?:)6.2:修改后的代码。//FileName: SurfaceClass.h#ifndef SURFACE_CLASS_H#define

2012-09-10 10:14:47 432

转载 SDL入门教程(五):5、本章范例的完整源代码

作者:龙飞5.1:准备工作。一张640*480大小的bmp文件作为背景,命名为:bg.bmp;一张128*128大小的bmp文件作为要在背景上移动的图片,命名为:image.bmp。5.2:头文件SurfaceClass.h//FileName: SurfaceClass.h#ifndef SURFACE_CLASS_H#define SURFACE

2012-09-10 10:13:15 486

转载 SDL入门教程(五):4、让图片动起来!

作者:龙飞4.1:再讨论简单的SDL event响应。Uint8 *SDL_GetKeyState(int *numkeys);        要让图片动起来,最好是我们可以“操作”的动。按照一般思路,键盘的“上”“下”“左”“右”是不错的选择。在FPS游戏和模拟器中,我们可能更习惯wsad四个键,所以,让他们同时起作用吧。这个函数的一般用法,是把参数设置为空指针。我们还是先忽

2012-09-10 10:12:20 693

转载 SDL入门教程(五):3、对SDL_BlitSurface()的进一步讨论

作者:龙飞3.1:矩形区域SDL_Rect。typedef struct{  Sint16 x, y;  Uint16 w, h;} SDL_Rect;        因为显示器通常是矩形的,所以,矩形是计算机图形学中最基本的操作区域单元。这个结构很简单,x和y是矩形的左上角坐标。x从左到右增加;y从上到下增加。左上角的坐标就是(0,0)——SDL中就是这样的。w是矩形

2012-09-10 10:11:35 1127

转载 SDL入门教程(五):2、构建SDL surface类

作者:龙飞2.1:构建普通的surface类。        在所有的surface里面,只有screen surface是最特殊的。因为第一,screen surface只有一个;第二,其他所有的普通surface都必须被blit到screen surface上,通过flip screen surface才能显示出来。所以,我们可以认为普通的surface是“依赖”于一个scre

2012-09-10 10:10:48 870

转载 SDL入门教程(五):1、构建SDL screen surface类

作者:龙飞今天是元宵节,新年过去,又要开始抓紧时间奋斗了。祝大家都能继续追逐自己的梦想。BS的书上引过一句话,“一个人要是不耕作,就必须写作”,所以,不耕作的我不能停止写作,time is money, my friend!1.1:整理两种SDL_Surface的关系。        前面一直在用面向过程的思想写程序,因为OOP细分到每一个具体的方法,还是过程。OOP的难点

2012-09-10 10:09:52 612

转载 SDL入门教程(四):3、SDL的软、硬件渲染的深入试验和分析

作者:龙飞3.1:试验——硬件渲染下关闭双缓存。现象:front图片出现不断被“撕裂”的效果。        双缓存的概念,是在计算机速度还不足以满足“即时作图”的情况下的一种技术。即,在屏幕(即前台的帧缓存framebuffer)上显示一帧图片的同时,在后台一个帧缓存的映射中作图。这样,只有当屏幕画面需要改变的时候,后台的缓存才交换到前台来,这样就避免了在前台出现计算机“作图

2012-09-10 10:06:14 1646

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除