
C/C++/C#
文章平均质量分 54
KenneySH
网络游戏
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
DLL的使用
DLL相关函数:HINSTANCE LoadLibrary(PCTSTR pszDLLPathName); //加载DLLBOOL FreeLibrary(HINSTANCE hinstDll); //卸载DLLHINSTANCE GetModuleHandle(PCTSTR pszModuleName); //线程确定DLL是否已经被映射到进程的地址空间中FARPROC GetP原创 2016-02-14 16:57:33 · 284 阅读 · 0 评论 -
GOF23式——Builder
意图:将一个复杂对象的构建分割成多个步骤,每个步骤都能接受不同的参数来创建各式各样不同的对象。 动机:在游戏中,我们会有创建Player的需求,每个被创建出来的Player都不一样。我们通过在创建过程中对每个创建步骤使用不同的参数来达到我们的目的。 ...原创 2018-07-26 10:55:35 · 296 阅读 · 0 评论 -
GOF23式——Prototype
意图:对象的自我复制,通过复制来创建新的对象。 动机:在游戏中,对于粒子特效我们在创建之初并不需要其有很多的不同,而在创建之后各个对象可以有不同的表现。 ...原创 2018-07-26 10:56:45 · 134 阅读 · 0 评论 -
GOF23式——Bridge
意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。也就是将系统实现具体功能的部分从系统中剥离,构造一个新的类来负责系统功能的实现。该类与系统为组合的关系。 动机: ...原创 2018-07-26 10:57:41 · 222 阅读 · 0 评论 -
GOF23式——Adapter
意图:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 动机:图1 Adapter模式(组合方式) 图2 Adapter模式(继承方式)...原创 2018-07-26 10:59:15 · 189 阅读 · 0 评论 -
GOF23式——Decorator
意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 动机:原创 2018-07-26 11:00:08 · 208 阅读 · 0 评论 -
GOF23式——Composite
意图:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 动机:原创 2018-07-26 11:00:58 · 245 阅读 · 0 评论 -
GOF23式——Proxy
意图:为其他对象提供一种代理以控制对这个对象的访问。 动机:原创 2018-07-26 11:01:45 · 138 阅读 · 0 评论 -
GOF23式——Template
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 动机: ...原创 2018-07-27 11:00:22 · 153 阅读 · 0 评论 -
GOF23式——State
意图:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 动机:原创 2018-07-27 11:00:45 · 181 阅读 · 0 评论 -
GOF23式——Observer
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 动机:原创 2018-07-27 11:00:58 · 170 阅读 · 0 评论 -
GOF23式——Command
意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 动机: ...原创 2018-07-27 11:01:25 · 293 阅读 · 0 评论 -
GOF23式——Strategy
意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 动机:原创 2018-07-27 11:00:33 · 133 阅读 · 0 评论 -
GOF23式——Visitor
意图:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 动机:原创 2018-07-27 11:02:06 · 206 阅读 · 0 评论 -
Hook
安装钩子:HHOOK WINAPI SetWindowsHookEx(int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId);int idHook: 钩子的类型,即它处理的消息类型HOOKPROC lpfn: 钩子子程的地址指针HINSTANCE hMod: 应用程序实例的句柄DWORD dwThreadId: 与安装的钩...原创 2018-07-27 11:02:17 · 266 阅读 · 0 评论 -
Socket
1. WSAStartup 在使用WinSock API之前,必须调用WSAStartup,调用成功返回0。 int WSAStartup(WORD v, (LPWSADATA)& wd) WORD v: Socket版本,低字节为主版本号,高字节为副版本号。Eg. v1.1 = 0x0101; v2.0 = 0x0002。 (LPWSADATA)& wd: 指向WSADA...原创 2018-07-27 11:02:32 · 200 阅读 · 0 评论 -
const对象
a)为什么使用const变量来初始化数组,ANSI C的编译器会报告错误?const int n = 5; // 只分配一次内存之后的赋值不再分配而define的每次都分配内存int a[n];在标准C++中,这种写法是对的。只是ANSI C对数组的规定限制了它。在ANSI C中使用enum和#define来定义常量。 b)const使用的基本形式:const type m限定...原创 2018-10-31 18:44:32 · 277 阅读 · 0 评论 -
GOF23式——Singleton
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 动机:在游戏中一般都会有游戏状态管理器。对于它我们希望有如下的特性:全局可访问性,唯一性。对于全局可访问我们只要将其定义为全局变量即可。但我们不能阻止它被创建成多个实例。为了保证唯一性,我们将该类的构造函数设置为私有。这样我们就不能直接创建它的实例。然后通过静态成员变量与静态成员函数来创建该类的实例。 ...原创 2018-07-26 10:54:31 · 120 阅读 · 0 评论 -
GOF23式——AbstractFactory
意图:AbstractFactory在Factory的基础上进行了进一步的拓展,使得AbstractFactory类也有继承其的子类ConcreteFactory。在此基础上可以创建更多不同类型的Product。 动机:在游戏中,我们会有很多不同类型的怪物。为了使玩家在游戏的进行中获得更多的乐趣,我们希望将怪物的难度分为普通,精英,噩梦三个级别。通过使用AbstractFactor...原创 2018-07-26 10:53:31 · 133 阅读 · 0 评论 -
远程注入
DLL远程注入的步骤如下:1) 使用VirtualAllocEx函数,分配远程进程的地址空间中的内存。2) 使用WriteProcessMemory函数,将DLL的路径名拷贝到第一个步骤中已经分配的内存中。3) 使用GetProcAddress函数,获取LoadLibraryA或LoadLibratyW函数的实地址(在Kernel32.dll中)。4) 使用CreateRemote原创 2016-02-14 16:59:40 · 781 阅读 · 0 评论 -
多线程
----------------------------------------------------------------------------------------------创建关闭线程CreateThread: 创建线程HANDLE CreateThread(PSECURITY_ATTRIBUTES psa, DWORD cbStack, PTHREAD_START原创 2016-02-14 17:00:55 · 253 阅读 · 0 评论 -
WinMain函数
WinMain是一个函数,该函数的功能是被系统调用,作为一个Win32程序的入口点。WinMain函数应初始化程用程序,显示主窗体,进入一个消息接受发送循环,这个循环是应用程序执行的其余部分的顶层控制结构。int WINAPI WinMain ( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _I原创 2016-03-17 13:35:09 · 486 阅读 · 0 评论 -
WNDCLASS HWND HDC HGLRC MSG
WNDCLASS:结构WNDCLASS包含一个窗口类的全部信息,也是Windows编程中使用的基本数据结构之一,应用程序通过定义一个窗口类确定窗口的属性。WNDCLASS结构包含了RegisterClass函数注册的类属性。HWND:h是类型描述,表示句柄(handle),Wnd是变量对象描述,表示窗口,所以hWnd表示窗口句柄。Microsoft Windows运行环境,通过给应用程序中的每原创 2016-03-17 13:56:47 · 1437 阅读 · 0 评论 -
Windows消息机制概述
转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/18/90412.htmlWindows消息机制概述消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程序某个事情发生了。例转载 2016-03-17 14:34:39 · 295 阅读 · 0 评论 -
C/C++内存分配
一个有C/C++编译的程序占用的内存分为以下几个区域:1.栈区(stack)由系统自动分配和释放,用于存放函数的参数值,局部变量值等。其在内存中是一块连续的存储区域,由底地址向高地址延伸。栈的大小可以在编译器中设定Linker->System下。也可以在代码中指定#pragma comment(linker, "/STACK:4096")用代码设置,/STACK后面数字为容量。默认的栈大小原创 2016-03-17 19:29:28 · 336 阅读 · 0 评论 -
UTF8 ASCII Latin1转换问题
昨天遇到一个中文乱码问题,发给服务器的中文字符串使用Latin1进行Encoding后数据会丢失。查了很多文章都是让服务器使用utf8,这里介绍一种客户端的解决方法。首先对中文字符串格式化输出成2位十六进制字符,然后将这些字符组成string,新的string使用Latin1进行Encoding就不会发生数据丢失的问题了。解码的使用逆向处理所收到的数据就可以了。由于之前代码已经写了很多,许多地原创 2016-03-10 11:40:43 · 5631 阅读 · 0 评论 -
结构中的位字段
与C语言一样,C++也允许指定占用特定位数的结构成员,这使得创建与某个硬件设备上的寄存器对应的数据结构非常方便。字段的类型应为整形或枚举,接下来是冒号,冒号后面是一个数字,它指定了使用的位数。可以使用没有名称的字段来提供间距。每个成员都被称为位字段。下面是一个例子:struct torgle_register{unsigned int SN : 4; // 4bit for SN va原创 2016-03-24 10:18:09 · 2621 阅读 · 1 评论 -
共同体union
共同体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。也就是说,结构可以同时存储int,long和double。共同体只能存储int,long或double。共同体的句法与结构相似,但含义不同。union one4all{int int_val;long long_val;double double_val;};可以使用one4all来存储int原创 2016-03-24 10:34:33 · 805 阅读 · 0 评论 -
递归
C++函数有一些有趣的特点——可以调用自己,这种功能被称为递归。递归在特定的编程中是一种重要的工具。如果递归调用自己,则被调用的函数也将调用自己,这将无限循环下去,除非代码中包含终止调用链的内容。以下代码构造了一颗二叉树并进行遍历。#include #include using namespace std;struct tree{ int data; int lev原创 2016-03-24 14:20:34 · 284 阅读 · 0 评论 -
函数指针
函数指针是指向函数的指针变量。因而函数指针本身首先应是指针变量,只不过该指针变量指向函数。正如指针变量可指向整型变量、字符型、数组一样,这里是指向函数。C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同使用指针变量可引用其他类型变量一样。函数指针有两个用途:调用函数和做函数的参数。函数指针的声明方法为:返回值原创 2016-03-23 14:05:01 · 266 阅读 · 0 评论 -
将引用作为函数参数
引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量别名。这种传递参数的方法称为按引用传递。按引用传递允许被调用的函数能够访问调用函数中的变量。C++新增这项特性是对C语言的超越,C语言只能按值传递。按值传递导致被调用函数使用调用程序的值得拷贝。当然,C语言也允许避开按值传递的限制,采用按指针传递的方式。代码:#include #include using na原创 2016-03-24 17:16:22 · 1055 阅读 · 0 评论 -
Overload(重载) Override(覆写)Overwrite(重写)
C++:Overload(重载):函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。(1)相同的范围(同一个类)(2)函数名相同(3)函数参数不同Override(覆写):从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行原创 2016-03-24 20:52:26 · 941 阅读 · 0 评论 -
函数模板
模板函数是通用的函数描述,也就是说,它们使用泛型来定义函数,其中的泛型可用具体的类型替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型的方式编写程序,因此有时也被称为通用编程。由于类型是用参数表示的,因此模板特性有时也被称为参数化类型。注意,函数模板不能缩短可执行程序。最终仍将由两个独立的函数定义,就像以手工方式定义了这些函数一样。最终的代码不包含任何模板,而只原创 2016-03-25 16:32:01 · 374 阅读 · 0 评论 -
代码编译
1.编译两个源代码文件在UNIX系统中编译由多个文件组成的C++程序2.头文件管理在同一个文件中只能将同一个头文件包含一次。我们有可能在不知情的情况下将头文件包含多次。有一种标准的C/C++技术可以避免多次包含同一个头文件。它是基于预处理编译器指令#ifndef的。例如:coordin.h#ifndef _COORDIN_H_#define _COORDIN_H_原创 2016-04-15 13:48:25 · 614 阅读 · 0 评论 -
存储持续性,作用域和链接性
1.内存相关知识C++使用三种(C++11是四种)不同的方案来存储数据,这些方案的区别在于数据保留在内存中的时间。自动存储持续性:在函数定义中声明的变量(包括函数参数)的存储持续性为自动。它们在程序开始执行其所属的函数或代码块时被创建,在执行完函数或代码块时,它们使用的内存被释放。C++有两种存储持续性为自动的变量。静态存储持续性:在函数定义外定义的变量和使用关键字static定义的变原创 2016-04-15 14:21:42 · 497 阅读 · 0 评论 -
GOF23式——Factory
意图:定义了一个抽象类,该类提供接口用以创建对象,并让其子类决定实例化哪一个类。Factory模式延迟实例化其所要创建的类。 动机:在游戏中,我们的主角可能有多种形态,如水上形态,陆上形态和空中形态。在进入场景时,主角可能在水中,在地面或是在空中。在代码中我们无法确定到底要创建的是哪个形态,因为主角的形态会受到多种因素的影响,所以我们希望在程序的运行过程中决定到底要创建的是哪个类。...原创 2018-07-26 10:52:01 · 155 阅读 · 0 评论