AI算法象棋续写

简介: AI算法象棋续写

算法分析:

跟车一样,需要向4个方向上搜索

若该方向上没棋子,则记录该方向所有点坐标

若走着走着发现一个棋子,先冷静一下(跳出本次循环),偷偷地看接下来该方向上有没有敌方棋子,有,就可以越塔gank了。然后把敌方死的位置记录下来留作纪念~ ~ ~

(七)卒

com.bylaw.z = function (x,y,map,my){

var d=[];

if (my===1){ //红方

//上

if ( y-1>= 0 && (!com.mansmap[y-1] || com.mansmap[y-1].my!=my)) d.push([x,y-1]);

//右

if ( x+1<= 8 && y<=4 && (!com.mansmap[y] || com.mansmap[y].my!=my)) d.push([x+1,y]); //y<4,即过河之后,才能左右移动

//左

if ( x-1>= 0 && y<=4 && (!com.mansmap[y] || com.mansmap[y].my!=my))d.push([x-1,y]);

}else{

//下

if ( y+1<= 9 && (!com.mansmap[y+1] || com.mansmap[y+1].my!=my)) d.push([x,y+1]);

//右

if ( x+1<= 8 && y>=6 && (!com.mansmap[y] || com.mansmap[y].my!=my)) d.push([x+1,y]);

//左

if ( x-1>= 0 && y>=6 && (!com.mansmap[y] || com.mansmap[y].my!=my))d.push([x-1,y]);

}

return d;

}
算法分析:

同样分情况讨论。且由于卒不能后退所以只用判断上,左,右三种情况。而卒由于过河后才能左右移动,所以左右的判断除了x的界定还有y值的界定。最后跟车一样如果该着点没有棋子或该棋子颜色不同,记录该点

二 ,使用alpha-beta在所有着法当中搜索最佳着法

AI.getAlphaBeta = function (A, B, depth, map ,my) {

if (depth == 0) {

return {"value":AI.evaluate(map , my)}; //当搜索深度为0是时调用局面评价函数;

}

var moves = AI.getMoves(map , my ); //生成全部走法;

//这里排序以后会增加效率

for (var i=0; i < moves.length; i++) {

//走这个走法;

var move= moves[i];

var key = move[4];

var oldX= move[0];

var oldY= move[1];

var newX= move[2];

var newY= move[3];

var clearKey = map newY ||"";

map newY = key; //走,赋新值,删除旧值

delete map oldY ;

play.mans[key].x = newX;

play.mans[key].y = newY;

if (clearKey=="j0"||clearKey=="J0") { //被吃老将

play.mans[key].x = oldX;

play.mans[key].y = oldY;

map oldY = key;

delete map newY ; //并不是真的走,所以这里要撤销

if (clearKey){

map newY = clearKey;

}

return {"key":key,"x":newX,"y":newY,"value":8888};

}else {

var val = -AI.getAlphaBeta(-B, -A, depth - 1, map , -my).value; //上面代表AI,这里倒置,-my,代表人的着法,然后再从上面开始执行

//val = val || val.value;

//撤消这个走法;

play.mans[key].x = oldX;

play.mans[key].y = oldY;

map oldY = key;

delete map newY ;

if (clearKey){

map newY = clearKey;

//play.mans[ clearKey ].isShow = true;

}

if (val >= B) {

//将这个走法记录到历史表中;

//AI.setHistoryTable(txtMap,AI.treeDepth-depth+1,B,my);

return {"key":key,"x":newX,"y":newY,"value":B};

}

if (val > A) {

A = val; //设置最佳走法,

if (AI.treeDepth == depth) var rootKey={"key":key,"x":newX,"y":newY,"value":A};

}

}

}

if (AI.treeDepth == depth) {//已经递归回根了

if (!rootKey){

//AI没有最佳走法,说明AI被将死了,返回false

return false;

}else{

//这个就是最佳走法;

return rootKey;

}

}

return {"key":key,"x":newX,"y":newY,"value":A};

}

简化后的伪代码(与上面代码一一对应):

int AlphaBeta(int vlAlpha, int vlBeta, int nDepth) {

if (nDepth == 0) {

return 局面评价函数;

}
生成全部走法;

按历史表排序全部走法;

for (每个生成的走法) {

走这个走法;

if (被将军) {

撤消这个走法;

} else {

int vl = -AlphaBeta(-vlBeta, -vlAlpha, nDepth - 1);

撤消这个走法;

if (vl >= vlBeta) {

将这个走法记录到历史表中;

return vlBeta;

}

if (vl > vlAlpha) {

设置最佳走法;

vlAlpha = vl;

}

}

}

if (没有走过任何走法) { //AI被将死

return 杀棋的分数;

}

将最佳走法记录到历史表中;

if (根节点) {

最佳走法就是电脑要走的棋;

}

return vlAlpha;

}
最后设置坐标就可以实现AI自动走棋或吃子了
以上就是利用AI算法玩象棋的全部内容了

目录
相关文章
|
20天前
|
机器学习/深度学习 人工智能 算法
"拥抱AI规模化浪潮:从数据到算法,解锁未来无限可能,你准备好迎接这场技术革命了吗?"
【10月更文挑战第14天】本文探讨了AI规模化的重要性和挑战,涵盖数据、算法、算力和应用场景等方面。通过使用Python和TensorFlow的示例代码,展示了如何训练并应用一个基本的AI模型进行图像分类,强调了AI规模化在各行业的广泛应用前景。
26 5
|
1月前
|
机器学习/深度学习 人工智能 开发框架
【AI系统】AI 学习方法与算法现状
在人工智能的历史长河中,我们见证了从规则驱动系统到现代机器学习模型的转变。AI的学习方法基于深度神经网络,通过前向传播、反向传播和梯度更新不断优化权重,实现从训练到推理的过程。当前,AI算法如CNN、RNN、GNN和GAN等在各自领域取得突破,推动技术进步的同时也带来了更大的挑战,要求算法工程师与系统设计师紧密合作,共同拓展AI技术的边界。
69 1
|
21天前
|
人工智能 算法 前端开发
无界批发零售定义及无界AI算法,打破传统壁垒,累积数据流量
“无界批发与零售”是一种结合了批发与零售的商业模式,通过后端逻辑、数据库设计和前端用户界面实现。该模式支持用户注册、登录、商品管理、订单处理、批发与零售功能,并根据用户行为计算信用等级,确保交易安全与高效。
|
21天前
|
人工智能 算法 JavaScript
无界SaaS与AI算力算法,链接裂变万企万商万物互联
本文介绍了一种基于无界SaaS与AI算力算法的商业模式的技术实现方案,涵盖前端、后端、数据库及AI算法等关键部分。通过React.js构建用户界面,Node.js与Express搭建后端服务,MongoDB存储数据,TensorFlow实现AI功能。提供了项目结构、代码示例及部署建议,强调了安全性、可扩展性和性能优化的重要性。
|
3月前
|
机器学习/深度学习 人工智能 算法
AI入门必读:Java实现常见AI算法及实际应用,有两下子!
本文全面介绍了人工智能(AI)的基础知识、操作教程、算法实现及其在实际项目中的应用。首先,从AI的概念出发,解释了AI如何使机器具备学习、思考、决策和交流的能力,并列举了日常生活中的常见应用场景,如手机助手、推荐系统、自动驾驶等。接着,详细介绍了AI在提高效率、增强用户体验、促进技术创新和解决复杂问题等方面的显著作用,同时展望了AI的未来发展趋势,包括自我学习能力的提升、人机协作的增强、伦理法规的完善以及行业垂直化应用的拓展等...
176 3
AI入门必读:Java实现常见AI算法及实际应用,有两下子!
|
3月前
|
存储 人工智能 算法
AI算法的道德与社会影响:探索技术双刃剑的边界
【8月更文挑战第22天】AI算法作为一把双刃剑,在推动社会进步的同时,也带来了诸多道德与社会挑战。面对这些挑战,我们需要以开放的心态、严谨的态度和创新的思维,不断探索技术发展与伦理规范之间的平衡之道,共同构建一个更加美好、更加公正的AI未来。
|
4月前
|
机器学习/深度学习 数据采集 人工智能
AI技术实践:利用机器学习算法预测房价
人工智能(Artificial Intelligence, AI)已经深刻地影响了我们的生活,从智能助手到自动驾驶,AI的应用无处不在。然而,AI不仅仅是一个理论概念,它的实际应用和技术实现同样重要。本文将通过详细的技术实践,带领读者从理论走向实践,详细介绍AI项目的实现过程,包括数据准备、模型选择、训练和优化等环节。
428 3
|
4月前
|
机器学习/深度学习 人工智能 算法
深入了解AI算法及其实现过程
人工智能(AI)已经成为现代技术发展的前沿,广泛应用于多个领域,如图像识别、自然语言处理、智能推荐系统等。本文将深入探讨AI算法的基础知识,并通过一个具体的实现过程来展示如何将AI算法应用于实际问题。
156 0