乐趣区

关于css:如何用DELPHI进行开发

目前用 DELPHI 开发 DirectX 游戏有二种抉择. 一是应用 jedi 的 DirectX 申明(). 另一种是应用 DelphiX. 在这里咱们筹备应用 jedi 的 DirectX 申明包来开发 DirectX 游戏, 之所以抉择 DirectX 申明包是因为这样是以 SDK 形式来开发游戏, 当前如果须要转到其它语言也不用重新学习 DirectX. 至于 DelphiX 控件我没用过, 没发言权, 不过偶是不必日货的 ;-)
先到以下地址 DirectX 的申明包(//files/directx7.rar”>), 并解压到你自定的目录中. 再在 DELPHI 中抉择 Tools->Environment Options, 在关上的窗口中抉择 Library 选项卡, 点击 Library Path 前面的按钮. 会弹出来一个 Directories 窗口, 再点击 Greyed items denote invalid path 左边的按钮. 抉择 DirectX 申明解压到的目录. 再点击 ADD 按钮, 这样就把 DirectX 申明所在的目录增加到了 DELPHI 的 Library 门路中. 就能够间接在 uses 中援用 DirectX 申明中的单元了. 这个申明包里自带了几个例子, 能够作为的参考.

:
开发全屏游戏时最好把设计时的屏幕分辩率设为和游戏一样的分辩率, 免得调试时频繁切换分辩率而伤害屏幕.
开发全屏游戏最好是在 /XP 下, 不然在 98 下调试时游戏进入死循环或产生异样时. 机子很容易就会当掉. 在 2000/XP 下全屏游戏进入死循环时能够按 ALT+TAB 切换到 DELPHI 中(但这时因为 DirectX 游戏是全屏, 独占了屏幕, 屏幕上不会有变动, 所以要多试几次), 按 CTRL+F2 就能够完结游戏. 如果是异样的话, 切换到 DELPHI 中先按下回车再按 CTRL+F2 就能够完结调试游戏了.

留神:
如果你是应用 DELPHI7 的话, 请把 DirectDraw.pas 中的 145 行 {$IFDEF VER140} 改为 {$IFDEF VER150} 能力失常编释.
最好应用的形式来建设游戏主窗口而不是应用 VCL 的 TFORM 类.

先让咱们来看看用 C ++ 和 DELPHI 初始化 DirectDraw 对像的代码段.
c++ 版:
BOOLwww.sangpi.com InitDDraw()
{
LPDIRECTDRAW7 lpDD; // DirectDraw 对象的指针
if (DirectDrawCreateEx (NULL, (void **)&lpDD, IID_IDirectDraw7, NULL) != DD_OK )
return FALSE; {创立 DirectDraw 对象}
{里应用了 if ( xxx!= DD_OK) 的办法进行谬误检测,这是最罕用的办法}
if (lpDD->SetCerativeLevel(hwnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN) != DD_OK )
return FALSE; {设置 DirectDraw 管制级}
if (lpDD->SetDisplayMode( 640, 480, 32, 0, DDSDM_STANDARDVGAMODE) != DD_OK )
return FALSE; {置显示}
}

DELPHI 版:
function TForm1.InitDirectDraw: Boolean;
var
lpDD: IDirectDraw7;
begin
Result := False; {先假如初始化失败}
{建设 DirectDraw 对象}
if DirectDrawCreateEx(nil, lpDD, IID_IDIRECTDRAW7, nil) <> DD_OK then
exit;
{设定 DirectDraw 的管制级, 第一个参数为 DirectDraw 窗口的句柄, 这里把控级级设为的全屏加独占模式}
if lpDD.SetCooperativeLevel(Hwnd, DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN) <> DD_OK then
exit;
{设定显示模式, 第一, 二个参数为分辩率大小, 第三个参数用来设置显示模式的色彩位数,
第四个参数设定屏幕的刷新率,0 为默认值, 第四个参数惟一无效的值只有 DDSDM_STANDARDVGAMODE}
if lpDD.SetDisplayMode(640, 480, 32, 0, DDSDM_STANDARDVGAMODE) <> DD_OK then
exit;
Result := True;
end;

能够看进去, 这二段代码除了语法和对象名外齐全一样, 只有理解了这点, 咱们齐全能够参考 VC 或 C ++ 的材料, 而后用 DELPHI 做出本人的游戏了.DELPHI 中 DirectX 申明中的对象名, 构造名和 VC 不一样, 个别的对应关系如下:
DELPHI VC
DirectDraw 对象 IDirectDraw7 LPDIRECTDRAW7
页面对象 IDirectDrawSurface7 LPDIRECTDRAWSURFACE7
DirectDraw 的页面形容 TDDSurfaceDesc2 DDSURFACEDESC2
基本上只是前缀不一样, 因为篇幅, 这儿就不一一列出所有对像和构造了.

退出移动版