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
相关文档:
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。
常规的用法大家都知道,现在来讨论它的一些高级的用法。
先把要讨论的几个属性列出来:
1、CommaText
2、Delimiter & DelimitedText
3、Names & Values & ValuefromIndex
先看第一个:CommaText。怎么用呢?用代码说话:
const
......
delphi + java 的分布式应用思考
用delphi做界面层 java业务逻辑层 这样看上去很美吧?
具体的实现
java 做业务逻辑层 应该有多种选择 企业级的有EJB3, 轻量级的有spring
目前在学习ejb3,感觉用来做业务逻辑层真的很不错。spring还没有了解
界面层用delphi,RAD应该是delphi的优势。
关键的问题的如果把 ......
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TlHelp32;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Pub ......
根据剪贴板的原理,在获取剪贴板内容之前,必须指定要获取内容的格式。由于剪贴板中的数据可能存在多种格式,所以有必要对剪贴板的格式类型先做一些了解。W写下了以下的测试代码:
procedure TForm1.Button3Click(Sender: TObject);
var
i: integer;
Buffer: PChar;
s: string;
begin
M ......