中国象棋Delphi版本程序代码.docx

上传人:b****4 文档编号:1090534 上传时间:2022-10-16 格式:DOCX 页数:116 大小:37.28KB
下载 相关 举报
中国象棋Delphi版本程序代码.docx_第1页
第1页 / 共116页
中国象棋Delphi版本程序代码.docx_第2页
第2页 / 共116页
中国象棋Delphi版本程序代码.docx_第3页
第3页 / 共116页
中国象棋Delphi版本程序代码.docx_第4页
第4页 / 共116页
中国象棋Delphi版本程序代码.docx_第5页
第5页 / 共116页
点击查看更多>>
下载资源
资源描述

中国象棋Delphi版本程序代码.docx

《中国象棋Delphi版本程序代码.docx》由会员分享,可在线阅读,更多相关《中国象棋Delphi版本程序代码.docx(116页珍藏版)》请在冰豆网上搜索。

中国象棋Delphi版本程序代码.docx

中国象棋Delphi版本程序代码

unitUnit1;

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;

procedureFormCreate(Sender:

TObject);

procedurePaintBox1Paint(Sender:

TObject);

procedureNewGame1Click(Sender:

TObject);

procedureEixt1Click(Sender:

TObject);

procedureCrossPaint(x,y,i,j:

integer);//自定义画兵格过程

procedurePaintBox1MouseDown(Sender:

TObject;Button:

TMouseButton;

Shift:

TShiftState;X,Y:

Integer);

procedureFindDrop(NowR,NowC:

integer);//扫描可以走棋的点过程

procedurePaintCMoveDrop();//画出可走点过程

procedureWhoWin();//判断输赢过程

procedureIsNextWin();//判断是否将军

procedureRemHistory();//走棋记录

procedureRepentChess(n:

integer);

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

procedureAddPoint(row,column:

integer);//加入一个相关点

functionEveluate(nSide:

integer):

integer;//估值函数

functionEveluate1(nSide:

integer):

integer;//测试估值函数

functionGetRelatePiece(row,column:

integer):

integer;//枚举一个位置上棋子所有相关的点

functionGetBingValue(row,column:

integer):

integer;//为兵返回附加值

//创建可能的走法nPly记录扫描的层数,nSide记录到那边走棋0为红方,1为黑方

functionCreatePossibleMove(nPly,nSide:

integer):

integer;

functionMakeMove(depth,n:

integer):

integer;//猜想过程中生产一个新局面

procedureUnMakeMove(depth,n,nChessID:

integer);//猜想过程中根据走法恢复一个棋盘

functionIsGameOver(depth:

integer):

integer;//猜想过程中判断给定局面是否结束

functionAddMove(FormR,FormC,ToR,ToC,nPly:

integer):

integer;//在nMoveList中插入一个走法

functionNegaMax(depth:

integer):

integer;//深度优先搜索负极大技校

functionAlpha_Beta(depth,alpha,beta:

integer):

integer;//Alpha-Beta搜索算法

functionChessMoveLaw(NowR,NowC,ToR,ToC,nChessID:

integer):

boolean;//走棋规则函数

functionChessMoveLawPos(NowR,NowC,ToR,ToC,nChessID:

integer):

boolean;//猜想过程走棋规则函数

functionCanTouch(NowR,NowC,ToR,ToC,nChessID:

integer):

boolean;//判断能不能到达目标点

functionChessPutLaw(NowR,NowC,ToR,ToC:

integer):

boolean;//摆起规则函数

functionChessMove(NowR,NowC,ToR,ToC:

integer):

boolean;//走棋函数

functionAIChessMove(NowR,NowC,ToR,ToC:

integer):

boolean;//电脑走棋

procedureBitBtn1Click(Sender:

TObject);

procedureFormPaint(Sender:

TObject);

procedureBitBtn3Click(Sender:

TObject);

procedureN3Click(Sender:

TObject);

procedureN2Click(Sender:

TObject);

procedureN6Click(Sender:

TObject);

procedureN7Click(Sender:

TObject);

procedurePaintBox2Paint(Sender:

TObject);

procedureN8Click(Sender:

TObject);

procedurePaintBox2MouseDown(Sender:

TObject;Button:

TMouseButton;

Shift:

TShiftState;X,Y:

Integer);

procedureBitBtn5Click(Sender:

TObject);

procedureBitBtn4Click(Sender:

TObject);

procedureBitBtn2Click(Sender:

TObject);

procedureBitBtn6Click(Sender:

TObject);

procedureBitBtn7Click(Sender:

TObject);

procedureN11Click(Sender:

TObject);

procedureN12Click(Sender:

TObject);

procedureN13Click(Sender:

TObject);

 

private

{Privatedeclarations}

public

{Publicdeclarations}

end;

 

var

Form1:

TForm1;

//棋盘格子单位大小

mBit:

integer;

//棋子数组:

所有棋子的数值

mChess:

array[1..14]ofstring=

('车','马','相','士','帅','炮','兵','車','馬','象','仕','将','炮','卒');

//===============================棋子价值==============================//

//棋子的基础价值

m_BaseValue:

array[1..14]ofinteger=

(500,350,250,250,10000,370,100,500,350,250,250,10000,370,100);

//棋子灵活度基础价值

m_Flexible:

array[1..14]ofinteger=

(6,12,1,1,0,6,15,6,12,1,1,0,6,15);

//每一个位置上的棋子的灵活性即可走步数

m_FlexibleNum:

array[1..10,1..9]ofinteger;

//每一个位置被威胁的信息

m_AttackNum:

array[1..10,1..9]ofinteger;

//每一个位置被保护的信息

m_GuardNum:

array[1..10,1..9]ofinteger;

 

//每一个棋子是总价值

m_ChessValue:

array[1..10,1..9]ofinteger;

//红兵附加值矩阵

mBing:

array[1..10,1..9]ofinteger=

(0,0,0,0,0,0,0,0,0),

(90,90,110,120,120,120,110,90,90),

(90,90,110,120,120,120,110,90,90),

(70,90,110,110,110,110,110,90,70),

(70,70,70,70,70,70,70,70,70),

(0,0,0,0,0,0,0,0,0),

(0,0,0,0,0,0,0,0,0),

(0,0,0,0,0,0,0,0,0),

(0,0,0,0,0,0,0,0,0),

(0,0,0,0,0,0,0,0,0)

);

//黑卒附加值矩阵

mZhuzi:

array[1..10,1..9]ofinteger=

(0,0,0,0,0,0,0,0,0),

(0,0,0,0,0,0,0,0,0),

(0,0,0,0,0,0,0,0,0),

(0,0,0,0,0,0,0,0,0),

(0,0,0,0,0,0,0,0,0),

(70,70,70,70,70,70,70,70,70),

(70,90,110,110,110,110,110,90,70),

(90,90,110,120,120,120,110,90,90),

(90,90,110,120,120,120,110,90,90),

(0,0,0,0,0,0,0,0,0)

);

//===============================棋子

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1