摘要:
对程序员们来说挑战自我非常重要,要么不断创新,要么技术停滞不前。新年伊始,我整理了12个月的目标,每个目标都是对技术或个人能力的挑战,而且可以年复一年循环使用。01. 变得有耐心02. 保持健康03. 拥抱变化带来的不适应04. 学习一门新的编程语言05. 自动化06. 学习更多数学知识07. 关注安全08. 备份你的数据09. 学习更多理论知识10. 接触艺术和人文11. 向新的软件学习12. 完成一个自己的项目接下来我会对这些建议逐个介绍。变得有耐心程序员们会担心锻炼耐心付出的努力得不到应有的回报。其实,培养耐心只要付出很小的投入就能够得到相对而言很大的收获。下面是开始锻炼耐心可以尝试的一 阅读全文
摘要:
碰撞检测在3D游戏中至关重要,好的碰撞检测要求人物在场景中可以平滑移动,遇到一定高度内的台阶可以自动上去,而过高的台阶则把人挡住,遇到斜率较小的斜坡可以上去,斜率过大则把人挡住,在各种前进方向被挡住的情况下都要尽可能地让人物沿合理的方向滑动而不是被迫停下。在满足这些要求的同时还要做到足够精确和稳定,防止人物在特殊情况下穿墙而掉出场景。碰撞检测做得好了是应该的,不易被人注意到,因为这符合我们日常生活中的常识。做得差了却很容易让人发现,人物经常被卡住不能前进或者人物穿越了障碍。所以大部分人都觉得写碰撞检测代码是件吃力不讨好的事情,算法复杂、容易出bug、不容易出彩。下面还是回到正题,看看我们该如. 阅读全文
摘要:
1. 下载Lua源码Lua源码下载地址http://www.lua.org/download.html2. 创建Lua静态库在vs2008中创建一个静态库项目(我创建的叫LuaLib),注意:一定要取消“预编译头”选项;(否则会报一大堆有关stdafx.h的错误,也可以稍后自行更改设置)建成后将Lua源码的.h和.c加入该项目进入项目属性,修改编译输出,方便其他项目使用lib库配置属性->常规->输出目录,设置为“$(SolutionDir)\lib\”配置属性->管理员->常规->输出文件,设置为“$(OutDir)\$(ProjectName)_d.lib”编 阅读全文
摘要:
摘 要:COM(组件对象模型)为组件的开发和应用提供了一个标准平台。介绍了智能卡和其基于ATL(活动模板库)的 COM组件的实现,重点阐述其实现过程和实现流程,最后简述中间件的应用。该组件封装智能卡COS(片内操作系统),并以dll文件形式提供给用户,增强了组件的重用性,且方便系统升级和扩展。关 键 词:智能卡;组件对象模型;活动模板库;片内操作系统智能卡(Smart Card),即IC卡,它将存储和处理信息数据的芯片镶嵌于塑料基片中,具有标准信用卡大小。智能卡存储容量大、安全性高、寿命长、适应性强、应用范围广,但其最大的特点是:在保持安全的情况下,一卡多用。在现阶段,CPU卡是使用最广泛的智 阅读全文
摘要:
2006-01-1609:04 作者: luoqx 出处: Java博客 责任编辑:方舟图1.0 构架、框架、设计模式之间的关系图一、软件体系结构和框架的定义 软件体系结构的英文单词是“architecture”.Architecture的基本词义是建筑、建筑学、建筑风格。 软件体系结构虽然根植于软件工程,但还处于一个研究发展的阶段,迄今为止还没有一个为大家所公认的定义。 《设计模式》中对框架的定义是框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。 软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。... 阅读全文
摘要:
以上四种设计模式其实是很相似的。在我看来:1)State模式和Strategy模式可以视为一样的模式,他们的类图之类都是一模一样的。2)Bridge模式和Strategy模式摆在一起可能让人觉得诧异,因为前者是结构型设计模式,后者是行为型设计模式。但如果不考虑这点。他们就非常 相似了:以书中Bridge模式的例子(我记得不清楚了,只能说个大概),draw接口中的函数,有windows的实现版本,也有linux的实现版 本。这就是策略模式啊。所以我一直以为Bridge模式和Strategy模式的区别,关键在于用途不同:是否为了构件平台无关的开发基础设施,如果是就 是Bridge,否则就是Stra 阅读全文
摘要:
0. 引言使用过SDK的朋友应该知道“回调函数”(callback function)这个概念,但本文并不是介绍如何使用回调函数,而是站在SDK开发者的角度,讲述如何实现回调机制。1. 何为回调(callback)所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B叫甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使 阅读全文
摘要:
1: 设计初衷它设计初衷是完全跨平台的。抽象的接口隐藏了平台相关的细节。它设计初衷是大幅度支持扩展的。支持多种场景类型,独立出平台和3D接口限制。2: 基本类结构关系Roo:对象为一切的入口,它负责创建Ogre的所有基础元素,三大基础元素大致包括:场景管理器,绘制系统,资源管理器。场景管理器:场景节点,动态对象。资源管理器:资源组管理,资源管理渲染模块:硬件缓冲区管理,渲染系统,渲染窗口3:关键词Root::Ogre系统入口,程序一开始就应当创建,最后释放,它帮助我们获得其他元素的指针。甚至包括StartRender()RenderSystem::渲染系统。是对3D渲染API的一个封装。一般来 阅读全文
摘要:
图形界面库Windows Forms、 MFC、WTL、 WxWidgets、Qt、GTK 综合比较见下表:总结:GTK+主要用在X Window上,整个设计的架构和许多概念和MFC以及一般 Windows 上的程序开发大异其趣,入门门槛较高,而且最主要的特色是,它用不具有对象功能的纯C 语言,模拟面向对象。所以写起来比较复杂艰涩,而且充满大量巨集,使用和除错都不是很容易,但优点则是可以用C,不需C++,如果和Win32 SDK比较,不会难学多少,缺点是不易上手使用,而且文件比较缺,架构又非常复杂,且提供的东西比起其它无所不包的 library,是简陋了一点,函数命名又臭又长。对于简单的程序, 阅读全文
摘要:
Partial Template Specialization能够让你在模板(Template)的所有可能的实体中特化出一组子集.1.模板的特化(template specialization): 例如,定义如下的一个模板: template<class Window, class Controller> class Widget { ... 泛化实现代码 ... }; 然后你可以像下面那样明确地加以特化: template<> //注意:template后面的尖括号中不带任何内容; class Widget<ModalDialog, MyController&g 阅读全文