资源简介
五子棋AIC#代码 完整工程 带alpha-beta剪枝、评估函数、界面

代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CHESS5
{
class AI:IPlayer
{
public Referee referee { get; set; }
public Chessboard chessboard;//当前棋盘
public event EventHandler PutDownEvent;//下棋事件
public int Color { get; set; }//颜色
public int depth;//搜索深度
public int first;//是否第一步
public AI(int color Chessboard chessboard)
{
this.Color = color;
this.chessboard = chessboard;
depth = 5;//默认搜索深度
first = 0;
}
public async void MakeMove()//下子流程
{
Point point = new Point(-1 -1);
await Task.Run(() => (point = GetNext(Color)));//耗时函数放在线程池中执行,UI更新
chessboard.PutDown(point Color);
if (PutDownEvent != null) PutDownEvent(null point);//绘制下棋位置
}
public int AlphabetaFind(int depth int alpha int beta int player int prex int prey)//alpha-beta剪枝
{
if (depth == this.depth || chessboard.IsWin(new Point(prex prey))) //是否到达设置搜索深度或一方获胜
{
int ans = chessboard.Evaluation(Color) - chessboard.Evaluation(-Color);
if (depth % 2 == 0)
ans = -ans;
return ans;
}
int minX maxX minY maxY;//以下控制搜索范围
if (chessboard.minX - 2 >= 0) minX = chessboard.minX - 2;
else minX = 0;
if (chessboard.maxX + 3 < Chessboard.N) maxX = chessboard.maxX + 3;
else maxX = Chessboard.N;
if (chessboard.minY - 2 >= 0) minY = chessboard.minY - 2;
else minY = 0;
if (chessboard.maxY + 3 < Chessboard.N) maxY = chessboard.maxY + 3;
else maxY = Chessboard.N;
for (int x = minX; x < maxX; x++)
{
for (int y = minY; y < maxY; y++)
{
if (!chessboard.CanPutDown(new Point(x y))) continue;//不可下子
chessboard.PutDown(new Point(x y) player);//假设下子
int val = -AlphabetaFind(depth + 1 -beta -alpha -player x y);//递归调用
chessboard.PickUp(new Point(x y));//移子
if (val >= beta)//更新值
return alpha;
if (val > alpha)
alpha = val;
}
}
return alpha;
}
public Point GetNext(int player)//下一步位置
{
Random random = new Random();
if (first==0)//第一步随机下
{
first = 1;
int x = random.Next(5 Chessboard.N - 5);
int y = random.Next(5 Chessboard.N - 5);
Point point = new Point(x y);
if(chessboard.CanPutDown(point)) return point;
else
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-07 19:46 CHESS5\
文件 6148 2017-12-07 20:16 CHESS5\.DS_Store
目录 0 2017-12-09 17:12 __MACOSX\
目录 0 2017-12-09 17:12 __MACOSX\CHESS5\
文件 120 2017-12-07 20:16 __MACOSX\CHESS5\._.DS_Store
目录 0 2017-12-05 23:31 CHESS5\.vs\
目录 0 2017-12-05 23:31 CHESS5\.vs\CHESS5\
目录 0 2017-12-07 19:46 CHESS5\.vs\CHESS5\v15\
文件 101376 2017-12-07 17:57 CHESS5\.vs\CHESS5\v15\.suo
目录 0 2017-12-09 17:12 __MACOSX\CHESS5\.vs\
目录 0 2017-12-09 17:12 __MACOSX\CHESS5\.vs\CHESS5\
目录 0 2017-12-09 17:12 __MACOSX\CHESS5\.vs\CHESS5\v15\
文件 120 2017-12-07 17:57 __MACOSX\CHESS5\.vs\CHESS5\v15\._.suo
目录 0 2017-12-07 19:46 CHESS5\.vs\CHESS5\v15\sqlite3\
文件 774144 2017-12-07 17:57 CHESS5\.vs\CHESS5\v15\sqlite3\storage.ide
目录 0 2017-12-07 20:16 CHESS5\CHESS5\
文件 6148 2017-12-07 20:16 CHESS5\CHESS5\.DS_Store
目录 0 2017-12-09 17:12 __MACOSX\CHESS5\CHESS5\
文件 120 2017-12-07 20:16 __MACOSX\CHESS5\CHESS5\._.DS_Store
文件 4816 2017-11-12 17:31 CHESS5\CHESS5\AI.cs
文件 189 2017-10-28 12:13 CHESS5\CHESS5\App.config
文件 366 2017-10-28 12:13 CHESS5\CHESS5\App.xaml
文件 342 2017-11-07 00:41 CHESS5\CHESS5\App.xaml.cs
目录 0 2017-12-07 20:16 CHESS5\CHESS5\bin\
文件 6148 2017-12-07 20:16 CHESS5\CHESS5\bin\.DS_Store
目录 0 2017-12-09 17:12 __MACOSX\CHESS5\CHESS5\bin\
文件 120 2017-12-07 20:16 __MACOSX\CHESS5\CHESS5\bin\._.DS_Store
目录 0 2017-12-07 19:46 CHESS5\CHESS5\bin\Debug\
文件 26624 2017-12-07 17:56 CHESS5\CHESS5\bin\Debug\CHESS5.exe
文件 189 2017-10-28 12:13 CHESS5\CHESS5\bin\Debug\CHESS5.exe.config
文件 48640 2017-12-07 17:56 CHESS5\CHESS5\bin\Debug\CHESS5.pdb
............此处省略70个文件信息
- 上一篇:C#调用BarTender源码包含SDK可直接使用
- 下一篇:c#邮件发送
相关资源
- C# TIP文件生成和拆解
- C#解析HL7消息的库135797
- C# OCR数字识别实例,采用TessnetOcr,对
- 考试管理系统 - C#源码
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
评论
共有 条评论