C++
文章平均质量分 93
酱油棍
这个作者很懒,什么都没留下…
展开
-
闲谈解释器模式——基于UI动画框架
本文及后续的几篇博文将围绕UI动画框架的“框架”来讨论。就让我们从配置开始说起吧。原创 2019-10-20 08:27:53 · 224 阅读 · 0 评论 -
闲谈设计模式——基于UI动画框架
CEGUI是一个C++实现的面向对象的开源GUI库,使用CEGUI开发界面的大型RPG游戏已有不少。几年来,我参与过3个MMORPG项目,都是用CEGUI开发游戏界面。在产品的不断迭代过程中,“方便快捷地实现UI动画”一直都是一种强烈的功能性需求,比如:当玩家经验累积足够之后,需要一个跳动的箭头指向技能按钮,以提示玩家可以升级技能当农场的菜成熟之后,需要一个特效在菜品上面闪烁,以提示玩...原创 2019-10-15 19:24:03 · 257 阅读 · 0 评论 -
C++按编号拼接字符串
1. 前言 C/C++中用sprintf格式化拼接字符串是惯用手法,比如:char buf[1024];sprintf_s(buf, _countof(buf), "学%s,从%s到%s,只需%d天", "C++", "入门", "放弃", 21);大家都用烂了。相信也有人手误,写过这样的代码:char buf[1024];sprintf_s(buf, _countof(buf),...原创 2019-10-12 21:42:35 · 700 阅读 · 0 评论 -
代码静态检查——正则表达式集锦
有句“常在河边走,哪有不湿鞋”的老话,我们搞程序的(搞了十几年,多数都是被程序搞了),总会有走神的时候写下了这样的代码:原创 2018-09-03 10:01:44 · 665 阅读 · 0 评论 -
MMORPG服务器的业务钩子
很多MMORPG类游戏的开发都使用了动态语言,比如lua、python等,集成动态语言最明显的好处是可以热更新,在日常维护中,经常需要修正一个业务逻辑错误,或者修改一个配置数据项,又不想重启服务,那么动态刷新代码就成了刚需了;而动态语言解释执行代码的机制就成了刚需的不二选择。但是大部分服务器的框架甚至主要业务可能还是由静态语言编写的,比如C、C++等原创 2019-10-15 16:00:23 · 164 阅读 · 0 评论 -
闲谈开闭原则——基于UI动画框架
本文继续聊另外一个设计原则:开闭原则。在UI动画框架中,开闭原则在“动画策略”和“移动算法”这两个类体系中均有所体现。照旧,先看一下开闭原则的定义。原创 2019-10-15 20:41:18 · 203 阅读 · 0 评论 -
闲谈装饰模式——基于UI动画框架
本文讨论UI动画框架中应用过的一个设计模式:“装饰模式”。为什么是“应用过的”,而不是“正在用的”?原因是装饰模式在UI动画框架中的应用是一个失败的尝试,有那么点牵强,或者说“为了模式而模式”。装饰模式在框架中并没有存在多久,就被优化掉,用组合模式替代了。原创 2019-10-15 20:12:38 · 152 阅读 · 0 评论 -
闲谈依赖倒置原则——基于UI动画框架
前面几篇文章讨论了UI动画框架中使用的几个关键的设计模式,框架中还有一些简单的创建模式,我没有说“工厂模式”,意味着并没有严格按照“工厂模式”的定义来实现,而是简单地封装创建过程,这对于框架中的业务已经足够了。 关于设计模式的讨论就告一段落了,本文聊一聊设计模式的原则之一:“依赖倒置”原则。原创 2019-10-15 20:30:57 · 179 阅读 · 0 评论 -
闲谈原型模式——基于UI动画框架
前几篇文章介绍了CEGUI动画框架中主要的几个设计模式。本文接着讨论“原型模式”在动画框架中的应用。 1. 原型模式原创 2019-10-15 20:19:57 · 145 阅读 · 0 评论 -
闲谈策略模式——基于UI动画框架
UI动画框架中,对动画的行为进行了良好的抽象,使得动画逻辑(就是各种动画效果)和动画主体(就是承载动画的窗口,CEGUI中的Window对象)最大限度的解耦。最终,自然而然的演变出来“策略模式”。那就先看看“策略模式”的相关概念。原创 2019-10-15 20:16:44 · 146 阅读 · 0 评论 -
闲谈组合模式——基于UI动画框架
前几篇文章讨论了UI动画框架中应用的最大的设计模式:“解释器模式”,本文接着讨论框架中应用了两次的设计模式:“组合模式”。原创 2019-10-15 20:05:14 · 211 阅读 · 0 评论 -
再谈解释器模式——基于UI动画框架
接上文,继续讨论UI动画的框架部分,并对不属于“解释器模式”的编译过程进行分析。1. 词法分析原创 2019-10-15 19:57:33 · 163 阅读 · 0 评论 -
浮点数的原理简析
1. 存储格式 我平时在写浮点数相关的代码时,经常会用一些可笑的技巧来“规避”浮点数运算导致的随机误差,浮点数运算细节晦涩难懂,我确实一直对浮点数原理及其运算一知半解,写起代码来战战兢兢,本文以1为主要参考,把浮点数的原理简单梳理一遍(主要以float为例),作为笔记,以备查验。 IEEE754标准规定,浮点数由“符号”、“指数”和“尾数”3部分构成: 下表列出C++中不同...原创 2018-07-18 17:37:30 · 22875 阅读 · 17 评论 -
怎样为std::map的自定义key提供比较操作(二)
假如你为自己开发一个简单的股票投资软件,该软件系统中的核心类自然就是“股票”类(仅用于问题分析,不具有现实意义):struct Stock{ int code; // 股票代码 int id; // 行业id float price; // 股价 float pe; // 市盈率...原创 2018-07-11 16:45:54 · 1824 阅读 · 0 评论 -
怎样为std::map的自定义key提供比较操作(一)
stl的关联容器(map,set)的key一般要求提供 < 比较操作。假设我们有一个结构SomeKey:原创 2018-07-09 20:50:19 · 5999 阅读 · 1 评论