Delphi – 我的代码之简单五子棋
技术交流,DH讲解. 今天来实现一个简单的五子棋,直接用GDI来画的一个游戏.
首先我们来想下怎么存放数据,哪些地方是白棋,哪些地方是黑棋,哪些地方没有下棋?
对,我们用一个二维数组,如果数组中某一个位置的值为0代表没有下棋,为1代表是白棋,为2代表是黑棋.
好就这么说定了,为了使用方便,我们打算做成一个控件,因为要画界面所以我们从TGraphicControl继承下来.
看一下类定义的代码: Type
TLastPlayer= (LpP1, LpP2);
TGameEvent= Procedure(S: TObject; P: TLastPlayer) Of Object;
TFiveGame= Class(TGraphicControl)
Private
// 如果是空,就是0,白棋就是1,黑棋就是2
FData: Array Of Array Of Byte;
// 棋盘的长和宽
FRows, FColumns: Integer;
// 格子的宽度/
FCellWidth: Integer;
// 是否自动大小
FAutoSize: Boolean;
// 棋盘线条的颜色.
FLineColor: TColor;
// 2个选手的颜色
FPlayerOneColor: TColor;
FPlayerTwoColor: TColor;
// 边距
FHDistance, FVDistance: Integer;
// 上次操作的选手
FLastPlayer: TLastPlayer;
// 三个事件
FWinEvent: TGameEvent;
FErrorEvent: TGameEvent;
FSuccessEvent: TGameEvent;
Procedure SetRows(Const Value: Integer);
Procedure SetColumns(Const Value: Integer);
Procedure SetCellWidth(Const Value: Integer);
Procedure SetAutoSize(Const Value: Boolean);
Procedure SetLineColor(Const Value: TColor);
Procedure SetPlayerOneColor(Const Value: TColor);
Procedure SetPlayerTwoColor(Const Value: TColor);
Procedure SetHDistance(Const Value: Integer);
Procedure SetVDistance(Const Value: Integer);
Procedure Paint; Override;
Function AddChessMan(X, Y, V: Integer): Boolean;
Procedure MyButtonDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Function Judge(X, Y, V: Integer): Boolean;
Protected
Public
Constructor Create(AOwner: TComponent); Override;
Destructor Destroy; Override;
//
Procedure ReStart;
Function AddP1Chessman(X, Y: Integer): Boolean;
Functi
相关文档:
1、首先将delphi中Controls单元提取
2、修改Controls单元中如下部分:
procedure TWinControl.CreateParams(var Params: TCreateParams);
begin
FillChar(Params, SizeOf(Params), 0);
with Params do
begin
Caption := FText;
Style := WS_CHILD or WS_CLIPSIBLINGS;
&nbs ......
Day 开头的函数
●
Unit
DateUtils
function DateOf(const Avalue: TDateTime): TDateTime;
描述
使用 DateOf 函数用来把一个 TDateTime 类型的变量转变成一个
只带有日期的 TDateTime 类型变量。
例如:
showmessage(DateTimetostr(dateof(now())));
你得到的是 2003/03/19
而 showmessage(DateTime ......
TDXDraw DirectDraw 和 Direct3D 组件
TDXDIB 容纳DIB(设备无关位图,Device Independent Bitmap)的组件
TDXImageList 图片列表组件
TDX3D Direct3D 组件 (和TDXDraw一起使用)
TDXSound DirectSound 组件
TDXWave 容纳 Wave(波形音频 ......
delphi + java 的分布式应用思考
用delphi做界面层 java业务逻辑层 这样看上去很美吧?
具体的实现
java 做业务逻辑层 应该有多种选择 企业级的有EJB3, 轻量级的有spring
目前在学习ejb3,感觉用来做业务逻辑层真的很不错。spring还没有了解
界面层用delphi,RAD应该是delphi的优势。
关键的问题的如果把 ......
枚举类型
Pascal程序不仅用于数值处理,还更广泛地用于处理非数值的数据。例如,性别、月份、星期几、颜色、单位名、学历、职业等。
1、枚举类型的定义
格式: type 枚举类型标识符=(标识符1,标识符2,…,标识符n)
2、枚举类型数据特点
① 枚举元素只能是标识符;
例如,下列类型定义是合法的:
......