随笔分类 -  C/C++

语言学习
摘要:最终出错的位置是: #define LUABIND_OPERATOR_ADL_WKND(op) \ inline bool operator op( \ basic_iterator<basic_access> const& x \ , basic_iterator<basic_access> co 阅读全文
posted @ 2015-11-24 00:37 Wilson-Loo 阅读(1032) 评论(0) 推荐(0) 编辑
摘要:今天 为 使用 Ogre 开发的游戏前端 添加网络操作, 导入 网络应用库时出现了 类型冲突,网络应用库定义了 UINT:// basetype.h...typedef unsigned int UINT;// ExampleApplication.h...using namespace Ogre;// net.h...UINT port ; //无法决策// main.cpp#include "basetype.h"#include "ExampleApplication.h"#include "net.h"编译时 和 Ogre:: 阅读全文
posted @ 2014-01-08 21:20 Wilson-Loo 阅读(498) 评论(0) 推荐(0) 编辑
摘要:首先看一段代码:#include #include #include int main(){ struct node { int value; }; struct cmp { bool operator()( const node& a, const node& b ) { return a.value , cmp > pri_queue; node n1 = {22}; node n2 = {11}; node n3 = {33}; node n4 = {11}; pr... 阅读全文
posted @ 2013-10-18 01:20 Wilson-Loo 阅读(1170) 评论(0) 推荐(0) 编辑
摘要:在游戏项目开发中, 需要涉及协议的定义及解析, 例如服务端使用c++底层, 前端使用 as进行 flash显示, 前后段数据通信采用 socket, 这就需要协议的定制了. 服务端使用 c++ 做底层网络维护, 搭配 lua 脚本处理逻辑 和 协议解析处理; 使用这种方式的好处时, 指定新协议或修改时, 无需重新编译 C++ 的底层, 只需要修改 lua 脚本, 并重启 服务端程序或 重新加载 lua脚本即可. 唯一的问题时, 当前项目在立项时, 被设计的不友好, 每个模块分配不同同事开发, 每个同事都需要了解协议的格式, 例如"交换背包内两个物品时", lua 这边需要有 阅读全文
posted @ 2013-09-05 00:29 Wilson-Loo 阅读(6093) 评论(0) 推荐(0) 编辑
摘要:不管是 现在开发中的游戏服务端, 还是近期love2D 开发的前端, 都使用 Lua 做脚本引擎, 需要涉及到 脚本的修改和重启. 第一种方法是 写个封装函数, 里面进行对所有 lua 脚本文件的 require() 操作, 这就要求 :1.对每个支持重新加载的文件进行package.loaded[ filename] = nilrequire( filename)2.文件加载要保持一定的顺序, 以免造成资源的错乱.就当前使用 love2D 前端来看, 其实只有一个 "启动"文件: main.lua, 并在其内进行 各个子功能脚本的 require 加载.如果在 重新加载时 阅读全文
posted @ 2013-09-04 21:22 Wilson-Loo 阅读(17175) 评论(0) 推荐(0) 编辑
摘要:(前置声明: 本随笔图片资源 选自 http://opengameart.org)这边继承上一篇随笔的代码, 修改后效果图将如:较之有以下改动:1.使用简洁的背景图片2.添加了调试文本输出框(下方红色框体)3.添加了角色属性查看蓝(右上方带背景的框体)4.添加带四个方向的2D角色模型5.绘制角色模型的图片sprite边框体5.鼠标控制移动角色模型1.使用简洁的背景图片将 welcome scene 的背景变更为 黑色图片:function WelcomeScene:Initialize() self:SetDesc( "welcome scene") self:SetBac 阅读全文
posted @ 2013-08-29 02:35 Wilson-Loo 阅读(1645) 评论(0) 推荐(0) 编辑
摘要:...添加 表示背景图片的类:-- Background.luaBackground = {}function Background:new( imgFileName, maxWidth, maxHeight ) local o = {} setmetatable( o, self) self.__index = self if imgFileName then o:SetImage( imgFileName ) end return oendfunction Background:SetImage( imgFileNa... 阅读全文
posted @ 2013-08-27 03:32 Wilson-Loo 阅读(606) 评论(0) 推荐(0) 编辑
摘要:近期, 由于受前端资源的限制, 原本以服务端C++开发为主的游戏, 无法继续; 再一次, 我决定自己编写前端.此前, 也有过很多次此类想法和做法, 但都失败了, 有 flash, unity3d, cocos 和 directx; 但都因为时间不够, 开发较为繁重, 相继放弃.这次, 我选择了使用 love2D , 理由是轻便, 并且是自己一直使用的 lua进行编写.1.安装love2D. 采用love2D 官网的 0.8版本安装 ; 安装后, 这个程序结构如:其中的 love.exe 即是主程序( lua脚本的 宿主程序, 并且能够处理基本的图形显示, 当让, 还会包含音频, 视频, 其他物 阅读全文
posted @ 2013-08-27 02:14 Wilson-Loo 阅读(892) 评论(0) 推荐(0) 编辑
摘要:在地图上某块区域,有数个怪物组成的 "哨兵小组",即不会移动, 但拥有警戒视野, 如图1.这5个哨兵是不会移动, 有站立点可确定一个最小外凸包围圈, 如图2;再产生最小矩形包围圈,如图3.typedef struct Position_t{ INT mapid; INT x; INT y;}Position_t, MapPieceBoundInfo_t;typedef UINT ElementType_t;typedef UINT GUID_t;class GamePlayer{public: BOOL IsMoving(); Position_t Ge... 阅读全文
posted @ 2013-08-11 14:46 Wilson-Loo 阅读(903) 评论(0) 推荐(0) 编辑
摘要:近期定义了一个宏:my_macro.h#define SHOW_INFO_MACRO() do { }while(0)使用时 main.cpp:#include ...#include "my_macro.h"SHOW_INFO_MACRO();int main(){ ... // 省略具体代码 return 0;}编译 main.cpp 会报错:error C2059: 语法错误:“do”error C2143: 语法错误 : 缺少“;”(在“{”的前面)error C2447: “{”: 缺少函数标题(是否是老式的形式表?)error C2059: 语法错误:“whil 阅读全文
posted @ 2013-07-10 17:40 Wilson-Loo 阅读(1259) 评论(0) 推荐(0) 编辑
摘要:使用 vsnprintf() 获取 formt 后 整个字符串的长度va_list args;len = vsnprintf( null, 0, sFormat, args ); 可以获取 待合并所有 变参后整个最终 sFormat 的字符串长度, 要求 sFormat 里的 %? 标记的个数要和 args 的变参个数 一致, 否则会报错。关于 windows 共享内存 CreateFileMapping 、 OpenFileMapping 、 MapViewOfFile 的错误使用方式有数据结构:struct SMAO_info{ int m_flag; vo... 阅读全文
posted @ 2013-07-06 14:40 Wilson-Loo 阅读(374) 评论(0) 推荐(0) 编辑
摘要:首先 这两个函数 有这样的对应关系:BOOL WINAPI GetQueuedCompletionStatus( _In_ HANDLE CompletionPort, _Out_ LPDWORD lpNumberOfBytes, _Out_ PULONG_PTR lpCompletionKey, _Out_ LPOVERLAPPED *lpOverlapped, _In_ DWORD dwMilliseconds);BOOL WINAPI PostQueuedCompletionStatus( _In_ HANDLE CompletionPort, _I... 阅读全文
posted @ 2013-07-05 11:32 Wilson-Loo 阅读(4534) 评论(0) 推荐(0) 编辑
摘要:静态库、预编译头 问题问题描述:先创建了一个静态库, 编码编译完成后, 创建新的测试用项目 main_test,#include “我的库的声明头文件”...#pragma comment( lib, "我的库名.lib");但是编译 main_test 时出现 :错误 42 error LNK2019: 无法解析的外部符号 "public: bool __thiscall _evl::EMinHeap::IsEmpty(void)const " (?IsEmpty@?$EMinHeap@VTimerNode@@@_evl@@QBE_NXZ),该符号在函 阅读全文
posted @ 2013-06-06 22:11 Wilson-Loo 阅读(2076) 评论(0) 推荐(0) 编辑
摘要:error: using typedef-name `T' after `class'templateclass Factory{ friend class T;};class Foo{};int main(){ Factory f; return 0;}按照 http://stackoverflow.com/questions/6321191/using-friend-in-templates提供的解决方案是:使用间接方式:templateclass MakeFriend{public: typedef T Type; };templateclass Factory{... 阅读全文
posted @ 2013-04-15 00:38 Wilson-Loo 阅读(802) 评论(0) 推荐(0) 编辑
摘要:evllib.h包含用于各种项目使用 宏 定义, 在windows环境下, 一般位于 vs 安装目录的include 下( 因为作为最基本的开发所需头文件, 甚至用于设计静态库lib), 如:D:\Program Files\Microsoft Visual Studio 10.0\VC\include\evllib.h拷贝批处理在设计编写 静态库FixedObjectPool.lib 时, 同时涉及到 头文件 fixobjpool.h 的修改, 完成修改编译成功后, 需要分别拷贝fixobjpool.h 到D:\Program Files\Microsoft Visual Studio 10 阅读全文
posted @ 2013-01-24 23:16 Wilson-Loo 阅读(387) 评论(0) 推荐(0) 编辑
摘要:这篇 笔记 是在 上一篇 《键盘控制 显示静态文本【已完成】【附带源码】(只能处理 大写英文字母)》 代码上修改过来的, 其中添加了一些还处于 设计阶段的代码,但不影响本随笔的 主要方向, 设计基于 Dx11 的简单UI, 设计参考自 《DirectX9 User Interface Design and Implementation》。先来张类关系图吧( 不是正规的UML 表示图):新添加 的 UI 子框架 与 原先系统的结合除主要在 SystemClass 的 OnRender() 渲染函数中:void SystemClass::Render(){ if( d3dContext_ =... 阅读全文
posted @ 2013-01-23 23:10 Wilson-Loo 阅读(1878) 评论(0) 推荐(0) 编辑
摘要:ID3DBlob 未声明的标记符 undefined signalID3DBlob 定义在D3DCommon.h 中, 但是 使用 vs2010 & DirectX11 联合开发时, D3DCommon.h 会有两份, 如我的环境是:C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\D3DCommon.hD:\Program Files\Microsoft DirectX SDK (June 2010)\Include\D3Dcommon.h这样, 即使 在项目中有 包含 d3dx11.h (包含 D3DCommon.h) 也不 阅读全文
posted @ 2013-01-20 12:51 Wilson-Loo 阅读(8440) 评论(0) 推荐(1) 编辑
摘要:注意:(只能处理 大写英文字母)在 《多条文本输出, 每条文本单次 Draw() 最后 Present() 【已完成】【附带源码】》 中完成了显示 简单文本的方式( 但是只限于显示 大写的英文字母)这篇随笔还是改自 那篇文章, 添加了 键盘控制(按 向下方向键 显示 静态文本 ), 这是代码文件结构:下面的是 代码 阅读全文
posted @ 2013-01-13 02:16 Wilson-Loo 阅读(470) 评论(0) 推荐(0) 编辑
摘要:注意:(只能处理 大写 英文字母)如下图所示 为本程序的类间组织结构:类EvlWin 是 对 windows 窗体创建显示的封装, 使用简易如: // 创建窗体 EvlWin *eWin = new EvlWin( hInstance, prevInstance, cmdLine, cmdShow, NULL, NULL); // 显示窗体 eWin->show();类 Dx11DemoBase 是对 DirectX11 的基本 device / context 创建的封装基类; 但具体效果表现需要由 子类实现: // DirectX11 处理对象 Dx11... 阅读全文
posted @ 2013-01-10 00:56 Wilson-Loo 阅读(344) 评论(0) 推荐(0) 编辑
摘要:Advanced Topics视屏游戏中 文本有很多用途, 一些一再本章中介绍过, 另外一些是我们一定在某些商业游戏中看到过。 文本的其他应用已经超出了本书的内容, 在 www.UltimateGameProgramming.com可以找到如何使用 高级文本效果的 教程, 如果你感兴趣的话, 这些教程将极大地扩展您的初级知识水平, 教程包括:》实现文本框(以及其他的交互元素)》在线游戏 调试控制端》游戏屏幕?》HUD 显示In-Game Text Boxes文本输入框 看起来好像是一个简单的概念, 但实现起来还是需要一定的脑力; 文本输入框不仅是 用来输入文本的图形元素, 还必须在其上面显示文 阅读全文
posted @ 2012-12-10 23:14 Wilson-Loo 阅读(380) 评论(0) 推荐(0) 编辑