使用Delphi编写棋牌类游戏 基础篇(1)
目前开发棋牌类游戏的公司和个人很多。但是对于很多开发者来说,开发一款具有可扩展、稳定的棋牌类游戏还是具有一定的难度。这次我就以我开发棋牌类游戏为例,讲述如何使用DELPHI来开发棋牌类游戏。希望我的经验可以对游戏开发爱好者起到抛砖引玉的作用。如果您对我基础篇中涉及到的内容非常熟悉,可以直接跳过进入设计篇。因为我的能力有限,所以文中难免有不足之处,欢迎大家指正。
首先来说说关于游戏开发中需要的一些基础知识。
第一个基础知识就是:链表的使用。
对于链表的使用,首先涉及到的就是结构的定义。以下是我定义的一个结构:
//用户信息结构
RuserInfo= record
UserID:String[20];
Sex:Boolean;
Face:Byte;
Score:Integer;
End;
PuserInfo = ^ RuserInfo;
在这个结构中大家需要注意UserID:String[20];的定义方法。我见过有人是这样定义的:UserID:String; 我觉得这样定义是不正确的。对于String[20]来说,这样定义说明了它是一个short String类型,而这种类型的长度是255。可是定义成string的话它的长度应该是2G。一个结构不能占用这么大的空间。所以我建议大家在定义结构对象的时候string类型尽量定义成string[]方式。
对于链表的时候其次就是向链表中加入指针和从链表中删除指针。
加入指针使用Add,删除指针使用Delete 例如:
//添加链表
New(p_User);
p_User.UserID:= UserID;
p_User.Sex:= Sex;
p_User.Face:= Face;
p_User.Score:= Score;
UserList.Add(p_User);
//删除链表
IF p_User.UserID = UserID then
Begin
UserList.Delete(I);
Dispose(p_User);
End;
在添加和删除链表的使用中一定要注意,在加入之前使用NEW函数在删除以后一定要使用dispose函数。我见的最多的错误就是在添加前使用了New但是在删除以后没有使用Dispose来释放自己申请的空间。这样会造成内存泄露。
2:链表的嵌套。
在我后面关于开发游戏的例子中会讲到在定义链表的时候使用嵌套的方式。
例如:对于一个游戏来说,我们可以给它定义一个GAMEID来作为这个游戏的编号。而一个游戏可以分成好几个房间(我们使用房间编号RoomID来标记)。对于房间来说,里面会包含很多的用户。那如何使用一个链表来保存这个信息,并且让我们以后查找起来非常方便呢?
相关文档:
引用自:http://www.delphifans.com/infoview/Article_6445.html
Delphi 关键字详解
absolute
//它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同.
var
Str: string[32];
StrLen: Byte absolute Str;
//这个声明指定了变量StrLen起始地址与Str相同.
//由于字符串的第0个位 ......
有一段时间没正经的用delphi了,前两天下载了Delphi2010,用它来找找Delphi的感觉,把写的一些东西共享出来,大家共同学习一下,呵呵。
我想做一个双色球的分析软件,以下是其中实现的部分类的单元文件,其他文件后续一点一点的补齐,有不妥的地方,希望大家指正,谢谢啦!
在使用Delphi2010是,发现个问题,在用show函数 ......
开发者都希望自己的程序有一个友好的界面,此时,一个生动活泼、有表现力的光标就必不可少了。Windows 缺省提供22种标准光标供在程序中调用,但对一个求新求变的程序员来说,标准光标就不能满足要求了,需要使用自己的光标,那么,在程序中怎样使用自己的光标呢? ●光标资源的获得 要使用自定义光标,必须先得到这 ......
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。
常规的用法大家都知道,现在来讨论它的一些高级的用法。
先把要讨论的几个属性列出来:
1、CommaText
2、Delimiter & DelimitedText
3、Names & Values & ValuefromIndex
先看第一个:CommaText。怎么用呢?用代码说话:
const ......