中国象棋Delphi版本程序代码

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls, StdCtrls, Buttons,Unit2,Unit3;

type

TForm1 = class(TForm)

PaintBox1: TPaintBox;

MainMenu1: TMainMenu;

Game1: TMenuItem;

NewGame1: TMenuItem;

Eixt1: TMenuItem;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

BitBtn1: TBitBtn;

BitBtn3: TBitBtn;

Label4: TLabel;

s1: TMenuItem;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

GroupBox1: TGroupBox;

PaintBox2: TPaintBox;

BitBtn2: TBitBtn;

BitBtn4: TBitBtn;

BitBtn5: TBitBtn;

BitBtn6: TBitBtn;

GroupBox2: TGroupBox;

Memo1: TMemo;

BitBtn7: TBitBtn;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

RadioGroup1: TRadioGroup;

RadioGroup2: TRadioGroup;

procedure FormCreate(Sender: TObject);

procedure PaintBox1Paint(Sender: TObject);

procedure NewGame1Click(Sender: TObject);

procedure Eixt1Click(Sender: TObject);

procedure CrossPaint(x,y,i,j:integer); //自定义画兵格过程

procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FindDrop(NowR,NowC:integer); //扫描可以走棋的点过程

procedure PaintCMoveDrop(); //画出可走点过程

procedure WhoWin(); //判断输赢过程

procedure IsNextWin();//判断是否将军

procedure RemHistory();//走棋记录

procedure RepentChess(n:integer);

procedure FindAGoodMove(); //寻找一个优秀的走法

procedure AddPoint(row,column:integer);//加入一个相关点

function Eveluate(nSide:integer):integer;//估值函数

function Eveluate1(nSide:integer):integer;//测试估值函数

function GetRelatePiece(row,column:integer):integer;//枚举一个位置上棋子所有相关的点

function GetBingValue(row,column:integer):integer;//为兵返回附加值

//创建可能的走法 nPly记录扫描的层数,nSide记录到那边走棋 0为红方,1为黑方 function CreatePossibleMove(nPly,nSide:integer):integer;

function MakeMove(depth,n:integer):integer;//猜想过程中生产一个新局面

procedure UnMakeMove(depth,n,nChessID:integer); //猜想过程中根据走法恢复一个棋盘

function IsGameOver(depth:integer):integer;//猜想过程中判断给定局面是否结束 function AddMove(FormR,FormC,ToR,ToC,nPly:integer):integer;//在nMoveList中插入一个走法

function NegaMax(depth:integer):integer; //深度优先搜索负极大技校

function Alpha_Beta(depth,alpha,beta:integer):integer;//Alpha-Beta搜索算法 function ChessMoveLaw(NowR,NowC,ToR,ToC,nChessID:integer):boolean; //走棋规则函数

function ChessMoveLawPos(NowR,NowC,ToR,ToC,nChessID:integer):boolean; //猜想过程走棋规则函数

function CanTouch(NowR,NowC,ToR,ToC,nChessID:integer):boolean;//判断能不能到达目标点

function ChessPutLaw(NowR,NowC,ToR,ToC:integer):boolean; //摆起规则函数

function ChessMove(NowR,NowC,ToR,ToC:integer):boolean; //走棋函数

function AIChessMove(NowR,NowC,ToR,ToC:integer):boolean; //电脑走棋

相关文档
最新文档