自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(12)
  • 收藏
  • 关注

原创 使用Delphi编写棋牌类游戏 -- 基础篇(2)

对于网络游戏来说,它和单机版游戏最大的区别就在于网络通信部分。可以说,网络通信是构成网游的最基本元素。在这里我不想详细的论述如何使用DELPHI在WINDOWS下进行网络编程,因为这是一个非常复杂的话题。这里我只是想说明在我设计的棋牌类游戏中如何实现游戏网络部分的。对于WINDOWS来说,它的通信模型大概分为5种。分别是:1:SELECT模型。2:WSAAsynSelect模型。3

2010-04-09 15:44:00 2054

原创 使用Delphi编写棋牌类游戏 -- 基础篇(1)

目前开发棋牌类游戏的公司和个人很多。但是对于很多开发者来说,开发一款具有可扩展、稳定的棋牌类游戏还是具有一定的难度。这次我就以我开发棋牌类游戏为例,讲述如何使用DELPHI来开发棋牌类游戏。希望我的经验可以对游戏开发爱好者起到抛砖引玉的作用。如果您对我基础篇中涉及到的内容非常熟悉,可以直接跳过进入设计篇。因为我的能力有限,所以文中难免有不足之处,欢迎大家指正。首先来说说关于游戏开发中需要的一些

2010-04-09 15:43:00 409

原创 关于“使用Asphyre4.10和SpriteEngine开发游戏”文中的一处补充

在上一篇文章中,我简单的说明了如何使用Asphyre4.10和SpriteEngine来开发游戏的方法。这几天我在开发游戏的时候发现有个地方没有交代清楚。例如一个按钮的大小是45*25另一个按钮的大小是60*40。我以前的理解是只要在with TSpriteButton.Create(SpriteEngine) do  begin    ...    Width := 45;     

2010-04-09 12:32:00 231

原创 使用Asphyre4.10和SpriteEngine开发游戏

之前我写过一篇《使用Asphyre开发游戏的方式 》的文章。文章中简述了如果使用asphyre3.10来开发游戏。但是使用asphyre3.10来开发游戏有一个很麻烦的问题——如何来实现VCL中按钮等等控件的效果。以前使用3.10的时候,我使用的方法是:定义出一个区域来,判断鼠标点击的是不是在这个区域,如果是那么做相应的操作。这样虽然也可以实现,但是其代码量和逻辑关系比较难以控制。很是麻烦。最

2010-04-09 12:03:00 395

原创 用HOOK来修改API函数的功能(5)-EXE和WDM驱动通信

今天我来写关于HOOK修改API函数的最后一篇文章"EXE和WDM驱动通信"。在上面的几篇文章中,大家看到了被保护的文件名或者注册表键值名等等都是事先指定好的。但是在实际应用中,可能遇到的是被保护的文件名、注册表的键值名需要动态来指定的情况。这个时候就需要编写一个上层EXE程序来和WDM驱动通信。通常EXE和WDM驱动通信有2种方法:1:使用DeviceIOControl函数。2:使用自定义事件。

2010-04-09 12:02:00 412

原创 用HOOK来修改API函数的功能(3)-禁止删除文件

今天我写一写如何使用HOOK的方法来保护一些特定的文件不被删除。在"未文档化函数中"有个函数叫做ZwSetInformationFile。这个函数对应的WIN32的函数有"SetFileAttributes、SetEndOfFile、SetFilePointer、SetFileTime、DeleteFile"。也就是说,以上的函数均是和这个ZwSetInformationFile函数有关。如果我们

2010-04-09 12:00:00 387 2

原创 用HOOK来修改API函数的功能(4)-环境搭建

上面的3篇文章已经大概的讲述了HOOK API的编写方法,可是如何让它们真正的运行起来呢?这就需要搭建环境,而这个环境你必须使用DDK。我在这里假设你已经安装了DDK,并且会使用DDK来编译一个WDM驱动程序。这里我要说的是如何在代码中将我上面的3篇文章中讲到的功能串在一起,以及编写WDM驱动程序所需要的Sources文件。我的Sources文件是这样写的:TARGETNAME=TestDrive

2010-04-09 12:00:00 252

原创 用HOOK来修改API函数的功能(2)-创建文件

上次写了如何使用HOOK的方法修改API函数的功能,来对注册表进行保护。对于对注册表操作的函数还有ZwDeleteKey、ZwDeleteValueKey、ZwOpenKey等等,对这些函数的HOOK和我上面写的方法是一样的。今天我来写一下如何对文件操作的API函数来HOOK。在我们编程中经常使用CreateFile函数来创建文件。其实对于系统来说,当我们使用右键点击并选择“新建”中的创建文件的时

2010-04-09 11:59:00 512

原创 用HOOK来修改API函数的功能(1)-注册表

我们知道编程实际上是使用各种API函数来达到我们想要的目的。换句话说就是API函数是我们通常编程时使用到的最底层函数。很多人也觉得除了API函数微软没有在提供其它的编程接口。其实微软出了提供API函数意外还提供了另外的一套函数,不过这些函数会随着操作系统的不同有细微的改变。由于这些函数是如此的“不稳定”,所以微软并没有将它们文档化。我们称之为“未文档化函数”。我们通常使用的API函数其实都是使用这

2010-04-09 11:58:00 250

原创 DELPHI中完成端口(IOCP)的简单分析(3)

最近太忙,所以没有机会来写IOCP的后续文章。今天好不容易有了时间来写IOCP的粘包处理问题。TCP数据粘包的产生原因在于TCP是一种流协议。在以太网中一个TCP的数据包长度是1500位。其中20位的IP包头,20位的TCP包头,其余的1460都是我们可以发送的数据。在数据发送的时候,我们发送的数据长度有可能比1460短,这样在TCP来说它还是以一个数据包来发送。从而降低了网络的利用率。所以T

2010-04-07 19:06:00 182

原创 DELPHI中完成端口(IOCP)的简单分析(2)

今天我写一下关于DELPHI编写完成端口(IOCP)的工作者线程中的东西。希望各位能提出批评意见。上次我写了关于常见IOCP的代码,对于IOCP来说,接受到客户端发送过来和自己发送出去的数据都是从工作者线程中得到。代码和解释如下:function ServerWorkerThread(CompletionPortID:Pointer):Integer;stdcall;begin   Complet

2006-11-03 16:51:00 579

原创 DELPHI中完成端口(IOCP)的简单分析(1)

用DELPHI开发网络代码已经有一段时间了!我发现在网上用VC来实现完成端口(IOCP)的代码很多,但是使用DELPHI来实现的就比较少了。对IOCP讲的清楚的就更少了。在这里我把自己编写DELPHI下的IOCP写出来,希望对刚学完成端口的朋友有个帮助。首先我们来了解一些在使用IOCP的时候需要使用的一些结构!(1):单IO数据结构  LPVOID = Pointer;  LPPE

2006-11-03 16:49:00 956

空空如也

空空如也

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

TA关注的人

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