Ⅰ 求五子棋获胜的算法
在确认下子的同时,获取当前位置的坐标,然后分别从8个方向上计算属于同一个玩家的棋子,即左、右、上、下、左上、右下、右上、左下,只要有在同一直线上的两个方向上的棋子之和为5,就判断该玩家取得胜利。
/*输赢判断语句*/
winFail()
{
/*往左数*/
int k,l,count1=0,count2=0,count3=0,count4=0,count5=0,count6=0,count7=0,count8=0;
/*printf("%d",intX);*/
for(k=intX;k>0;k--)
if(point[k][intY]!=point[intX][intY]) break;
else
count1++;
/*往右数*/
for(k=intX;k<=N;k++)
if(point[k][intY]!=point[intX][intY]) break;
else
count2++;
/*左右相加*/
if(count1+count2-1==5) initial(point[intX][intY]);
/*printf("%d",count1+count2-1);*/
/*往上数*/
for(l=intY;l>0;l--)
if(point[intX][l]!=point[intX][intY]) break;
else
count3++;
/*往下数*/
for(l=intY;l<=N;l++)
if(point[intX][l]!=point[intX][intY]) break;
else
count4++;
/*上下相加*/
if(count3+count4-1==5) initial(point[intX][intY]);
/*往左上数*/
for(k=intX,l=intY;k>0,l>0;k--,l--)
if(point[k][l]!=point[intX][intY]) break;
else
count5++;
/*往右下数*/
for(k=intX,l=intY;k<=N,l<=N;k++,l++)
if(point[k][l]!=point[intX][intY]) break;
else
count6++;
/*右上左下相加*/
if(count5+count6-1==5) initial(point[intX][intY]);
/*往右上数*/
for(k=intX,l=intY;k<=N,l>0;k++,l--)
if(point[k][l]!=point[intX][intY]) break;
else
count7++;
/*往左下数*/
for(k=intX,l=intY;k>0,l<=N;k--,l++)
if(point[k][l]!=point[intX][intY]) break;
else
count8++;
/*右上左下相加*/
if(count7+count8-1==5) initial(point[intX][intY]);
}
Ⅱ 围棋五子棋规则详解
许多前辈先驱都在为完善围棋与五子棋这两个古老的智力竞技项目而殚精竭虑,但目前依然有一些缺陷不能弥补,主要体现在以下两个方面:
围棋五子棋规则缺陷
1、棋局的变化,尤其是开局的变化越来越难以创新。围棋从中国古棋的座子制到日本古代取消座子制是一个飞跃,对开局变化至少提供了数十倍的多样性;到后来由于对棋局研究得越来越透彻,多样性却渐渐减少。当前世界顶尖棋手所下的棋,开局几乎千篇一律,这不能不说是一件憾事,也给我们敲响警钟——失去了自由的智力竞技又能走多远?五子棋也是一样,自从各种星月开局被研究透彻之后,下棋就如打谱,毫无新意;后来出现交换、连下等规定,对棋局的变化有所裨益,但依旧杯水车薪,尤其是第一手必须置于天元实非合理的规定。
2、棋局的胜负判定难以精准把握。古代围棋没有贴子制度,先行方优势赫然,这显然是不公平不合理的;现代围棋出现了贴目制度,但中日韩三个围棋大国对贴目数量的规定并不一致,目前也没有任何证据证明贴多少目是完全绝对公平的。五子棋的先行优势更是达到了先手必胜的地步,虽然目前的五子棋规则都在力争消除先行优势,但仍然争议不断,不能尽善。
本套规则的核心变化是增加了开局阶段的自由座子及预判阶段的协定胜负这两个步骤,可以几乎完全弥补上述两个方面的缺陷。
围棋五子棋规则补充
首先,开局阶段的自由座子可以为围棋五子棋的开局增添许多新鲜的开局。以围棋为例,目前的前四手基本都落在棋盘四角的角星位或小目上,不提翻转旋转同型的重复,四手棋的变化不过81种;而一旦使用自由座子,前四手的变化立刻激增至近7亿,即使除去边路,也有近3亿变化。事实上,这数据已经穷尽了围棋前四手的变化数量,彻底自由、彻底解放。
其次,预判阶段的协定胜负取消了死板的围棋贴目制度、五子棋必须五连分胜负制度,其胜负判定更灵活、更公平、也更能体现对弈双方的能力。以五子棋为例,猜先定先手未免有点听天由命、交换连下抢先手未免有点看重心机,都不能称之为纯粹的五子棋竞技。但协定胜负完全是根据双方对棋局进程的判断而定,既不听天由命,更不看重五子棋之外的心机,完全在框架内比较双方思路的精准程度。同样的开局、同样的进程很可能有不同的胜负结果,这取决于双方的预判,如此胜负判定更为灵活;执黑执白和胜负依据都由双方共同制定,如此胜负判定更为公平;对棋局进程预判的精准程度则又直接体现了对弈双方的能力。
围棋五子棋竞技规则细节说明
1、关于围棋中自紧气自杀是否允许。根据传统规则,自杀是不允许的;根据现代规则,自杀一手等于弃权;根据应氏规则,自杀是允许的。但事实上,在实际对局中不会出现自杀情形,讨论是否允许自杀对于对局并没有意义,其意义在于对“自由落子”适用条件的限定。作为一项自由的智力竞技,落子应该越自由越好,完全没有限定最好。但在实际对局过程中,由于“劫争”会导致对局无法结束,因此“禁止同形”成了必不可少的落子限定。除了“禁止同形”之外,没必要做其它的落子限定,自紧气自杀应该是允许的,但“棋盘上不能保留死子”这一规则必须贯彻执行。
2、关于围棋的终局计算。目前主要有两种计算方法:数子法和数目法。在探讨最好最合理最标准的计算方法前,首先要讨论一个根本性的问题:围棋的目的是“活子”还是“围地”?我认为既然称为“围”棋,那么显然“围地”作为目的更为合理,也更符合古代战争的目的。既然如此,填子计算活子数量(应氏规则)、为了保证存活而还棋头(古代规则)等规则就没有意义,因为它们是针对“活子”为目的进行计数的。其次对于所围的地盘应该怎么计算?是仅仅计算所包围的空地,还是连同己方活子一起计算?个人觉得应该是活子连空一起计算。活子相当于围墙,没有理由将围墙所处的位置排除在己方的地盘之外。综上可知,数子法是最为合理标准的地盘计算方法。另外,数子法也是最为简单的计算方式,一是不必另外计算死子数量,二是只需数一方的地盘即可,三是无需考虑双方落子数量不等的情况。数目法可以作为一种简便方法及在对局时作形势判断的方法。
3、关于和局。棋类比赛出现和棋是很正常的`现象,不应该完全杜绝,但在必须分出胜负的比赛中,和棋就比较麻烦,应当将其消除。因此在本套规则内,根据是否有必须分出胜负的要求,对预判阶段的协定胜负依据做了明确的规定,要求它能在任何情况下都能分出胜负。但若两人作出相同的判断,即使能确定双方的棋子颜色,要求他们协定互相认可的胜负依据比较难;而在规则中额外限定则又添加了天命运气,这一点上不能尽善,甚憾。
4、关于五子棋的禁手。由于对弈双方协定的胜负依据一般是形成五连时的手数,所以先行的优势已然消失,即使必能先达成五连,也难以把握究竟在哪一手达成,禁手因此也就没有了存在的必要。但若从增加难度这方面考虑的话,禁手可以扩展思维的广度和深度,能有效减少简单开局导致的同判致和情形。所以我建议,原先专属于先行方的禁手要么全部取消,要么双方都禁。
本套规则的自由座子及协定胜负取自于天弈规则,但做了极大的简化,使之成为能容易推广的规则。天弈规则在这两点上的创新绝对会开创新时代。
Ⅲ 求问五子棋AI算法思路
五子棋的核心算法
五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人机对下的五子棋程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置。介绍五子棋程序的数据结构、评分规则、胜负判断方法和搜索算法过程。
一、相关的数据结构
关于盘面情况的表示,以链表形式表示当前盘面的情况,目的是可以允许用户进行悔棋、回退等操作。
CList StepList;
其中Step结构的表示为:
struct Step
{
int m; //m,n表示两个坐标值
int n;
char side; //side表示下子方
};
以数组形式保存当前盘面的情况,
目的是为了在显示当前盘面情况时使用:
char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE];
其中FIVE_MAX_LINE表示盘面最大的行数。
同时由于需要在递归搜索的过程中考虑时间和空间有效性,只找出就当前情况来说相对比较好的几个盘面,而不是对所有的可下子的位置都进行搜索,这里用变量CountList来表示当前搜索中可以选择的所有新的盘面情况对象的集合:
CList CountList;
其中类CBoardSituiton为:
class CBoardSituation
{
CList StepList; //每一步的列表
char FiveArea[FIVE_MAX_LINE][FIVE_MAX_LINE];
struct Step machineStep; //机器所下的那一步
double value; //该种盘面状态所得到的分数
}
二、评分规则
对于下子的重要性评分,需要从六个位置来考虑当前棋局的情况,分别为:-,¦,/,\,//,\\
实际上需要考虑在这六个位置上某一方所形成的子的布局的情况,对于在还没有子的地方落子以后的当前局面的评分,主要是为了说明在这个地方下子的重要性程度,设定了一个简单的规则来表示当前棋面对机器方的分数。
基本的规则如下:
判断是否能成5, 如果是机器方的话给予100000分,如果是人方的话给予-100000 分;
判断是否能成活4或者是双死4或者是死4活3,如果是机器方的话给予10000分,如果是人方的话给予-10000分;
判断是否已成双活3,如果是机器方的话给予5000分,如果是人方的话给予-5000 分;
判断是否成死3活3,如果是机器方的话给予1000分,如果是人方的话给予-1000 分;
判断是否能成死4,如果是机器方的话给予500分,如果是人方的话给予-500分;
判断是否能成单活3,如果是机器方的话给予200分,如果是人方的话给予-200分;
判断是否已成双活2,如果是机器方的话给予100分,如果是人方的话给予-100分;
判断是否能成死3,如果是机器方的话给予50分,如果是人方的话给予-50分;
判断是否能成双活2,如果是机器方的话给予10分,如果是人方的话给予-10分;
判断是否能成活2,如果是机器方的话给予5分,如果是人方的话给予-5分;
判断是否能成死2,如果是机器方的话给予3分,如果是人方的话给予-3分。
实际上对当前的局面按照上面的规则的顺序进行比较,如果满足某一条规则的话,就给该局面打分并保存,然后退出规则的匹配。注意这里的规则是根据一般的下棋规律的一个总结,在实际运行的时候,用户可以添加规则和对评分机制加以修正。
三、胜负判断
实际上,是根据当前最后一个落子的情况来判断胜负的。实际上需要从四个位置判断,以该子为出发点的水平,竖直和两条分别为 45度角和135度角的线,目的是看在这四个方向是否最后落子的一方构成连续五个的棋子,如果是的话,就表示该盘棋局已经分出胜负。具体见下面的图示:
四、搜索算法实现描述
注意下面的核心的算法中的变量currentBoardSituation,表示当前机器最新的盘面情况, CountList表示第一层子节点可以选择的较好的盘面的集合。核心的算法如下:
void MainDealFunction()
{
value=-MAXINT; //对初始根节点的value赋值
CalSeveralGoodPlace(currentBoardSituation,CountList);
//该函数是根据当前的盘面情况来比较得到比较好的可以考虑的几个盘面的情况,可以根据实际的得分情况选取分数比较高的几个盘面,也就是说在第一层节点选择的时候采用贪婪算法,直接找出相对分数比较高的几个形成第一层节点,目的是为了提高搜索速度和防止堆栈溢出。
pos=CountList.GetHeadPosition();
CBoardSituation* pBoard;
for(i=0;ivalue=Search(pBoard,min,value,0);
Value=Select(value,pBoard->value,max);
//取value和pBoard->value中大的赋给根节点
}
for(i=0;ivalue)
//找出那一个得到最高分的盘面
{
currentBoardSituation=pBoard;
PlayerMode=min; //当前下子方改为人
Break;
}
}
其中对于Search函数的表示如下:实际上核心的算法是一个剪枝过程,其中在这个搜索过程中相关的四个参数为:(1)当前棋局情况;(2)当前的下子方,可以是机器(max)或者是人(min);(3)父节点的值oldValue;(4)当前的搜索深度depth。
double Search(CBoardSituation&
board,int mode,double oldvalue,int depth)
{
CList m_DeepList;
if(deptholdvalue))== TRUE)
{
if(mode==max)
value=select(value,search(successor
Board,min,value,depth+1),max);
else
value=select(value,search(successor
Board,max,value,depth+1),min);
}
return value;
}
else
{
if ( goal(board)<>0)
//这里goal(board)<>0表示已经可以分出胜负
return goal(board);
else
return evlation(board);
}
}
注意这里的goal(board)函数是用来判断当前盘面是否可以分出胜负,而evlation(board)是对当前的盘面从机器的角度进行打分。
下面是Select函数的介绍,这个函数的主要目的是根据 PlayerMode情况,即是机器还是用户来返回节点的应有的值。
double Select(double a,double b,int mode)
{
if(a>b && mode==max)¦¦ (a< b && mode==min)
return a;
else
return b;
}
五、小结
在Windows操作系统下,用VC++实现了这个人机对战的五子棋程序。和国内许多只是采用规则或者只是采用简单递归而没有剪枝的那些程序相比,在智力上和时间有效性上都要好于这些程序。同时所讨论的方法和设计过程为用户设计其他的游戏(如象棋和围棋等)提供了一个参考。
Ⅳ 求五子棋C语言算法、、 详细点、、
#include<stdio.h>
#define N 8
#define M 8
void init(char flag[N][M])
{
int i,j;
for( i=0;i<N;i++)
for(j=0;j<M;j++)
{ flag[i][j]=’0’;
printf("%c",flag[i][j]);
if(j==N-1)
printf("\n");
}
}
void draw(char flag[N][M])
{
int i,j;
for(i=0;i<N;i++)
for( j=0;j<M;j++)
{ printf("%c",flag[i][j]);
if(j==N-1)
printf("\n");
}
}
void ciin(char flag[N][M],char t,char v)
{
int i,j;
printf("qin %c zou\n",t);
printf("qin shu ru liang ge #iao *u %d de shu zi:",N);
scanf("%d,%d",&i,&j);
while(i>=N||i<1||j>=M||j<1||flag[i][j]=='*'||flag[i][j]=='#')
{
if(i>=N||i<1||j>=M||j<1)
{
printf("shu ru cuo wu??qin chong #in shu ru\n");
printf("qin shu ru liang ge #iao *u %d de shu zi:",N);
scanf("%d,%d",&i,&j);
}
else
{
printf("ci chu *ou qi zi,qin chong #in shu ru.");
printf("qin shu ru liang ge #iao *u %d de shu zi:",N);
scanf("%d,%d",&i,&j);
}
}
flag[i][j]=v;
draw(flag);
}
void test(char flag[][M],char t)
{
int i,j;
for(i=1;i<N;i++)
{ for(j=1;j<M;j++)
if((flag[i][j]=='*'&&flag[i][j+1]=='*'&&flag[i][j+2]=='*'&&flag[i][j+3]=='*'&&flag[i][j+4]=='*')||(flag[i][j]=='#'&&flag[i][j+1]=='#'&&flag[i][j+2]=='#'&&flag[i][j+3]=='#'&&flag[i][j+4]=='#')||(flag[i][j]=='*'&&flag[i+1][j]=='*'&&flag[i+2][j]=='*'&&flag[i+3][j]=='*'&&flag[i+4][j]=='*')||(flag[i][j]=='#'&&flag[i+1][j]=='#'&&flag[i+2][j]=='#'&&flag[i+3][j]=='#'&&flag[i+4][j]=='#')||(flag[i][j]=='*'&&flag[i+1][j+1]=='*'&&flag[i+2][j+2]=='*'&&flag[i+3][j+3]=='*'&&flag[i+4][j+4]=='*')||(flag[i][j]=='#'&&flag[i+1][j+1]=='#'&&flag[i+2][j+2]=='#'&&flag[i+3][j+3]=='#'&&flag[i+4][j+4]=='#')||(flag[i][j]=='*'&&flag[i+1][j-1]=='*'&&flag[i+2][j-2]=='*'&&flag[i+3][j-3]=='*'&&flag[i+4][j-4]=='*')||(flag[i][j]=='#'&&flag[i+1][j-1]=='#'&&flag[i+2][j-2]=='#'&&flag[i+3][j-3]=='#'&&flag[i+4][j-4]=='#'))
printf("%c Win",t);
}
}
void main()
{
int i;
char flag[N][M];
init(flag);
for(i=0;i<(N-1)*(M-1);i++)
{
ciin(flag,'A','*');
test(flag,'A');
ciin(flag,'B','#');
test(flag,'B');
}
}
望采纳! 不懂可以再问,我定义的五子棋大小为8行8列的
Ⅳ 五子棋技巧与口诀
下五子棋我经常赢,常有朋友问我五子棋有什么技巧,其实还真的有,受朋友的邀请,本人把自己的浅薄经验给大家做个分享,希望对广大五子棋爱好者有所帮助。 个人认为五子棋技巧提升棋力主要是多看棋谱,多下棋,多思考,提高自己的计算能力。下面是我带来的五子棋技巧与口诀,希望对你有帮助。
初学者总会误以为五子棋只要熟悉棋谱,就自然能百战百胜,其实 这种想法是错误的,也是很危险的。 所谓排兵布阵,不是指很僵化教条的按照棋谱一步步走,重要的在于领略其精神。形似不如神似. 输赢的真正关键,在于对弈经验和计算能力。熟能生巧,经验丰富之后,计算能力的高低也就决定了你能下到什么样的水平。但计算能力这部分不是个人能够左右 的,是天赋差异使然。所以,初学者最紧要的事情不是去看棋谱,学习什么定式,而是去实战,实战的时候要用心,用脑子去想,注意对手的优势在那里,认真学习,五子棋水平才能不断提高。下棋最忌讳的就是浮躁了。
当然下五子棋定基础定式还是有的,通过定式掌握很多有效的攻防技巧。各个开局的基本定式应做到心中有数,但是实战中 计算能力 会发挥主要作用。总之“计算为主,定式为辅”。
最后,下棋很考验人的耐性,五子棋虽然规则简单,但下棋能力的提升不是在短时间内能够完成的,这需要经验,等你练到一定程度,有了“棋感”的时候,就可以鹤立鸡群了!
五子棋入门技巧口诀:
先手要攻,后手要守。 以攻为守,以守为攻。 攻守转换,慎思变化。 先行争夺,地破天惊。 守取外势,攻聚内力。 八卦易守,成角易攻。 阻断分割,稳如泰山。 不思争先,胜如登天。 初盘争二,局终抢三。 留三不冲,变化万千。 多个先手,细算次先。 五子要点,次序在前。 斜线为阴,直线为阳。 阴阳结合,防不胜防。 连三连四,易见为明。 跳三跳四,暗箭深藏。 己落一子,敌增一兵。 攻其要点,守其必争。 势已形成,败即降临。 五子精华,一子输赢。
五子棋入门技巧口诀详解
先手要攻,后手要守
这句话的表面意思应该很容易理解,先手当然应该进攻,不要贻误时机。但有些时候局面并不是一边倒的.形势,这就需要认真判断自己到底是不是真正的先手,如果前途暗淡,而对方也有些手段,就要小心了,冒然进攻,用完了自己的力量,再去防守对手,就成了彻底的后手。
以攻为守,以守待攻
攻 不忘守,守不忘攻。有句话叫“最强的防守就是进攻”,防守别人棋的时候仔细看清局势,是不是有既能防守住对方又可以进攻的点。以守待攻,在对方狂攻一阵却 无胜棋后,你防守的棋是否形成了外围的攻势?在安全的前提下,防守对方的棋最好不要太消极,等他攻完,就可以利用防守时形成的攻势轻松收拾对方。
攻守转换,慎思变化
发 现进攻没有胜棋,而对方防守的子力形成了一定的威胁,一般就会转攻为守了。或者守住了对方的进攻,得到先手而转守为攻。攻守转换的时候,要分析局面,有些 冲四、活三是不是该先下了再去防守更好?还是冲后以后再防守会变得更困难?以守转攻的时候,要看清是不是真的已经完全守住了对方?他还有哪些力量,能不能 够成威胁?
先行争夺,地破天惊
用妙手强行夺得先手,这样的气势连天地都会惊动。
守取外势,攻聚内力
防 守的时候,尽可能防在外围,限制对方的空间,让他的棋没有发展前途。进攻则不能太分散子力,下得太*外,被对方占据要点,阻断子力联系,不能形成有效的进 攻。但攻聚内力并不等于放弃外围,使自己没有足够的空间进攻,守取外势也不能一味地在外围防守,而放弃内部必须占据的要点。
八卦易守,成角易攻
八 卦就是由象棋四个马步形成的一种棋形,如果摆满全盘,则对方没有取胜的可能。还有一种说法叫“马步是强防”,既使不能摆满全盘,很多时候自己的棋子形成马 步的点就是强防点。成角易攻,角就是三个紧紧*在一起的棋子构成的直角三角形,成角的形状后子力可互相多次利用,进攻源源不断。
阻断分隔,稳如泰山
这句话说的就是防守时的一种思想,阻断对方子力的联系,逐个击破。
不思争先,胜比登天
仅仅*消极的防御是赢不了棋的,防御的时候时刻要考虑夺回先手。两个棋力相当的棋手,一盘五子棋比赛过程,就是互相争先手的过程。
初盘争二,局终抢三
开局的时候双方都没有连续进攻取胜的手段,就需要在限制对方形成活二的基础上自己形成更多的活二,时机成熟,一举攻胜。到了局终双方各有些活二、眠三,这时有些三就要先活,有些眠三就要先冲,占据空间要点,切断对方子力联系。
留三不冲,变化万千
有 很多初学五子棋的朋友是有三必冲的,殊不知在鞘中的剑才是最强的剑,冲四犹如宝剑出鞘,如果不能一击致命,出鞘之后的剑就没有威力了。留三不冲,你的这个 冲就有两个点(一个连冲,一个跳冲)可以利用,相应对方防守的子也会少一个。有时把冲了以后活三改为直接叫四三,可以收到更好的效果。
多个先手,细算次先
五子要点,次序在前
这里说的是顺序问题。同样的棋,顺序对了可以取胜,顺序错了没有胜棋,在实战中可以遇到这类情况。不要被自己很多可以活三冲四的棋看花了眼,认真计算正确的进攻顺序以及对方防守后会不会形成反三、反四。
斜线为阴,直线为阳
阴阳结合,防不胜防
新 手的朋友很容易忽视斜线的子力,斜线成五子同样取胜,可不能大意。善于进攻的棋手,能够做到直线和斜线相互配合,多角度的攻击能够大大增加进攻的杀伤力。 之所以说斜线是阴因为不同颜色的两条斜线可以交*互不影响,相反的不用颜色的两条直线就不可能交*,因为无法穿越对方。
连三连四,易见为明
跳三跳四,暗剑深藏
连三连四很容易看出,很多朋友却老是忽视跳活三、跳冲四的下法,不晓得跳出去又是另一片天空,跳出去进攻更具有隐蔽性。 这两句放在一起是告诉棋手,连和跳并没有一定之规,关键看临场的形势,但是千万不能忽略可任何一种可能性,否则就会错失良机。
己落一子,敌增一兵
这 句话主要是说在进攻的时候不要忘记对方防守的子力,五子棋是你下一子,对方下一子,不比你少。你进攻一手棋,敌人防守一子,防守的棋子是不是会给你造成反 三、反四?会不会阻碍了你的后续进攻?所以下棋的时候一定要惜子如金,每一子都要发挥出最大的效力,千万不可随便将变化走完。
攻其要点,守其必争
进攻的时候占据重要位置,下在可持续进攻的点。防守就要守在对方进攻过程中非常想占据的连接点,你想下的点,我来下。
势已形成,败即降临
高手对弈很多时候是我们看不懂的,因为他们所追求的是“势”,一种压制住对方而取得压倒性优势的情况,这个时候可能不能简单的杀,但是通过精准的计算可以立即将这种“势”转化为杀。
五子精华,一子输赢
有些朋友输了以后说“你成五子了,我也活四了,我只比你差一颗子嘛”。其实五子棋争的就是这一步棋,谁争得了先手下成五子,谁就获胜,这也是五子棋的魅力所在。不要以一子之差原谅自己,一子就已经可以使你输棋了。
Ⅵ 五子棋技巧口诀
五子棋是世界智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏,是世界智力运动会竞技项目之一,通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成5子连线者获胜。那么,五子棋的技巧有哪些呢?下面我为大家收集整理了五子棋的技巧口诀,希望能为大家提供帮助。
五子棋入门技巧口诀:
先手要攻,后手要守。以攻为守,以守为攻。攻守转换,慎思变化。先行争夺,地破天惊。守取外势,攻聚内力。八卦易守,成角易攻。阻断分割,稳如泰山。不思争先,胜如登天。初盘争二,局终抢三。留三不冲,变化万千。多个先手,细算次先。五子要点,次序在前。斜线为阴,直线为阳。阴阳结合,防不胜防。连三连四,易见为明。跳三跳四,暗箭深藏。己落一子,敌增一兵。攻其要点,守其必争。势已形成,败即降临。五子精华,一子输赢。
五子棋入门技巧口诀详解
先手要攻,后手要守
这句话的表面意思应该很容易理解,先手当然应该进攻,不要贻误时机。但有些时候局面并不是一边倒的形势,这就需要认真判断自己到底是不是真正的先手,如果前途暗淡,而对方也有些手段,就要小心了,冒然进攻,用完了自己的力量,再去防守对手,就成了彻底的后手。
以攻为守,以守待攻
攻不忘守,守不忘攻。有句话叫“最强的防守就是进攻”,防守别人棋的时候仔细看清局势,是不是有既能防守住对方又可以进攻的点。以守待攻,在对方狂攻一阵却无胜棋后,你防守的棋是否形成了外围的攻势?在安全的前提下,防守对方的棋最好不要太消极,等他攻完,就可以利用防守时形成的攻势轻松收拾对方。
攻守转换,慎思变化
发现进攻没有胜棋,而对方防守的子力形成了一定的威胁,一般就会转攻为守了。或者守住了对方的进攻,得到先手而转守为攻。攻守转换的'时候,要分析局面,有些冲四、活三是不是该先下了再去防守更好?还是冲后以后再防守会变得更困难?以守转攻的时候,要看清是不是真的已经完全守住了对方?他还有哪些力量,能不能够成威胁?
先行争夺,地破天惊
用妙手强行夺得先手,这样的气势连天地都会惊动。
守取外势,攻聚内力
防守的时候,尽可能防在外围,限制对方的空间,让他的棋没有发展前途。进攻则不能太分散子力,下得太*外,被对方占据要点,阻断子力联系,不能形成有效的进攻。但攻聚内力并不等于放弃外围,使自己没有足够的空间进攻,守取外势也不能一味地在外围防守,而放弃内部必须占据的要点。
八卦易守,成角易攻
八卦就是由象棋四个马步形成的一种棋形,如果摆满全盘,则对方没有取胜的可能。还有一种说法叫“马步是强防”,既使不能摆满全盘,很多时候自己的棋子形成马步的点就是强防点。成角易攻,角就是三个紧紧*在一起的棋子构成的直角三角形,成角的形状后子力可互相多次利用,进攻源源不断。
阻断分隔,稳如泰山
这句话说的就是防守时的一种思想,阻断对方子力的联系,逐个击破。
不思争先,胜比登天
仅仅*消极的防御是赢不了棋的,防御的时候时刻要考虑夺回先手。两个棋力相当的棋手,一盘五子棋比赛过程,就是互相争先手的过程。
初盘争二,局终抢三
开局的时候双方都没有连续进攻取胜的手段,就需要在限制对方形成活二的基础上自己形成更多的活二,时机成熟,一举攻胜。到了局终双方各有些活二、眠三,这时有些三就要先活,有些眠三就要先冲,占据空间要点,切断对方子力联系。
留三不冲,变化万千
有很多初学五子棋的朋友是有三必冲的,殊不知在鞘中的剑才是最强的剑,冲四犹如宝剑出鞘,如果不能一击致命,出鞘之后的剑就没有威力了。留三不冲,你的这个冲就有两个点(一个连冲,一个跳冲)可以利用,相应对方防守的子也会少一个。有时把冲了以后活三改为直接叫四三,可以收到更好的效果。
多个先手,细算次先
五子要点,次序在前
这里说的是顺序问题。同样的棋,顺序对了可以取胜,顺序错了没有胜棋,在实战中可以遇到这类情况。不要被自己很多可以活三冲四的棋看花了眼,认真计算正确的进攻顺序以及对方防守后会不会形成反三、反四。
斜线为阴,直线为阳
阴阳结合,防不胜防
新手的朋友很容易忽视斜线的子力,斜线成五子同样取胜,可不能大意。善于进攻的棋手,能够做到直线和斜线相互配合,多角度的攻击能够大大增加进攻的杀伤力。之所以说斜线是阴因为不同颜色的两条斜线可以交*互不影响,相反的不用颜色的两条直线就不可能交*,因为无法穿越对方。
连三连四,易见为明
跳三跳四,暗剑深藏
连三连四很容易看出,很多朋友却老是忽视跳活三、跳冲四的下法,不晓得跳出去又是另一片天空,跳出去进攻更具有隐蔽性。这两句放在一起是告诉棋手,连和跳并没有一定之规,关键看临场的形势,但是千万不能忽略可任何一种可能性,否则就会错失良机。
己落一子,敌增一兵
这句话主要是说在进攻的时候不要忘记对方防守的子力,五子棋是你下一子,对方下一子,不比你少。你进攻一手棋,敌人防守一子,防守的棋子是不是会给你造成反三、反四?会不会阻碍了你的后续进攻?所以下棋的时候一定要惜子如金,每一子都要发挥出最大的效力,千万不可随便将变化走完。
攻其要点,守其必争
进攻的时候占据重要位置,下在可持续进攻的点。防守就要守在对方进攻过程中非常想占据的连接点,你想下的点,我来下。
势已形成,败即降临
高手对弈很多时候是我们看不懂的,因为他们所追求的是“势”,一种压制住对方而取得压倒性优势的情况,这个时候可能不能简单的杀,但是通过精准的计算可以立即将这种“势”转化为杀。
五子精华,一子输赢
有些朋友输了以后说“你成五子了,我也活四了,我只比你差一颗子嘛”。其实五子棋争的就是这一步棋,谁争得了先手下成五子,谁就获胜,这也是五子棋的魅力所在。不要以一子之差原谅自己,一子就已经可以使你输棋了。
Ⅶ 初学五子棋玩法步骤
初学五子棋玩法步骤
初学五子棋玩法步骤,五子棋是世界智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏,是世界智力运动会竞技项目之一,通常双方分别使用黑白两色的棋子,以下初学五子棋玩法步骤。
1、对局双方各执一色棋子。
2、空棋盘开局。
3、黑先、白后,交替下子,每次只能下一子。
4、棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动,不得从棋盘上拿掉或拿起另落别处。
5、黑方的第一枚棋子可下在棋盘任意交叉点上。
6、轮流下子是双方的权利,但允许任何一方放弃下子权(即:PASS权)
(7)五子棋算法详解扩展阅读:
发展历程
相传中华民族的祖先轩辕黄帝无意之中画下了十七条横线十七条竖线,这无意中的发明造就出了五子棋。早在公元595年古人就用瓷来烧制五子棋盘了。千百年来,人们用各种材质来制造围棋的棋子,如:玻璃、瓷器、玉、玛瑙、铜等等。
古代五子棋棋盘与围棋棋盘是通用的,汉魏时为十七路(17×17)棋盘,至南北朝时即已流行十九路(19×19)棋盘,直至1931年,才出现所谓五子棋专用棋盘。
五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。
在古代,五子棋棋具虽然与围棋相类同,但是下法却是完全不同的。正如《辞海》中所言,五子棋是“棋类游戏,棋具与围棋相同,两人对局,轮流下子,先将五子连成一行者为胜”
五子棋基本入门方法和技巧
1、靠:因为五子棋是平衡的艺术,因此原则上每步棋都应下在对方上一步棋周围贴身的八个位置上。当你不知道该如何下时可按此考虑,特别是对方在外围远处下子时,则在其左右必有好点。可降低对方的活动能力。
2、压:活动需要空间,防守主要的目的是压迫对方啲活动空间,在对方棋形的上方进行挤压,使其不能擡头,限制其发展,防止敌人以几何倍数向外扩张。下在外围也能为将来自己的扩展做打算。
3、托:将对方的棋形托向底线,使其失去根基,发展无望。即分割其与总体的联系,将之孤立起来,起到无为而治的目的。
4、点:在情况不明的地方点一手,看对方的应手而后定。将变化走明有时是明智之举。
5、穿心:功聚内力,防守就是要破坏其凝聚力,在对方集中之处的中心筋络上下子能起到事半功倍的效果。不过“心”肯定要选准,否则事得其反。
6、分割:在对方二块棋的交汇点上进行分割,以防止相互呼应。只要制住三点,连神龙也腾飞不起来。应特别注意对方的接应子,要坚决切断,不留活口,封杀出局。
7、反打:争取主动是积极的防守。反打即作出活二或死三,使之能在对方活三冲四时反活三反冲四。使自己能更灵活地防守,在对方进攻时进行反打有抢先防御,争取主动的效果。
棋无常型,水无常势,以柔克钢,以阴柔化致钢是五子棋的要诀。假如下棋双方都无错误,则每盘都是和局,只有抓住对方的防守失误才有获胜的希望。
玩五子棋的诀窍
1、该进攻时,不要防守:赢棋法则:当你越是积极的进攻,你越是容易获得取胜的机会。当你的对手走棋不积极时,你不必跟着他走棋,而是要考虑自己的棋是否可以进攻。
2、进攻始于活二:要尽可能的利用好棋盘上的每一个子,多形成活二。黑棋有不同的选择。黑若走在A点,虽然产生了两个二,但都不是活二,在进攻中几乎毫无威力。而走在B点会产生两个活二,为后续攻击打下了基础。显然B点比A点更有威力。总之,一个原则:一子落下,形成的活二越多越好。
3、在必须防守时,可以选择一个最助于自己进攻的防守点。白活三,黑有A、B两个防点来挡住白的活三。由此需要判断哪个防点,更有利于自己的攻击。很显然,走在A点,自己会形成连接,而白棋并无后续手段,由此在黑防A后,需要回头来防守黑棋,这样白就失掉先手。
这里,防在A点比B点更有利。黑棋防在A点虽然对自己将来的进攻有利,但黑棋仍然必须防在B点,因为白棋在上面可以连续攻击而获胜。这里提示我们,要判断哪个防点更有利,就必须考虑在防守以后,对手和自己的后续攻击,而后才能选择出正确的防点。
4、防守不总是要挡,有时采取牵制的手段更好,轮到黑棋走,黑必须要小心,因为白棋可以在B点连续进攻取胜。因此,黑棋需要提前防守白棋可能的攻击,哪种防守更有利呢?黑棋如果直接阻挡A或B,虽然可以挡住白棋的活二,但之后白会走C,这样局面趋于平衡,黑棋大好形势丧失殆尽。
此时,黑棋最好的防守是运用牵制的手段。C点是牵制点,落子C形成多个活二,此时不必再担心白棋在B点的进攻,因为白若B活三,则黑A形成反活三,之后黑棋可连续进攻获胜。
5、所有成功的攻击都要依赖组合攻击,“组合攻击”是指一子落下,同时产生两条或多条攻击线,而且每条线都能取胜,这样对手无法同时防守。组合攻击可以说获胜的唯一之路。最简单的“组合攻击”有三种类型:三三组合,四四组合和四三组合。根据五子棋禁手规则,黑棋三三和四四是禁手,所以黑棋唯一获胜的方法是四三,而白棋没有禁手的限制。
五子棋入门技巧口诀:
先手要攻,后手要守。以攻为守,以守为攻。攻守转换,慎思变化。先行争夺,地破天惊。守取外势,攻聚内力。八卦易守,成角易攻。阻断分割,稳如泰山。不思争先,胜如登天。初盘争二,局终抢三。留三不冲,变化万千。多个先手,细算次先。五子要点,次序在前。
斜线为阴,直线为阳。阴阳结合,防不胜防。连三连四,易见为明。跳三跳四,暗箭深藏。己落一子,敌增一兵。攻其要点,守其必争。势已形成,败即降临。五子精华,一子输赢。
五子棋入门技巧口诀详解
先手要攻,后手要守
这句话的表面意思应该很容易理解,先手当然应该进攻,不要贻误时机。但有些时候局面并不是一边倒的形势,这就需要认真判断自己到底是不是真正的先手,如果前途暗淡,而对方也有些手段,就要小心了,冒然进攻,用完了自己的力量,再去防守对手,就成了彻底的后手。
以攻为守,以守待攻
攻不忘守,守不忘攻。有句话叫“最强的防守就是进攻”,防守别人棋的时候仔细看清局势,是不是有既能防守住对方又可以进攻的点。以守待攻,在对方狂攻一阵却无胜棋后,你防守的棋是否形成了外围的攻势?在安全的前提下,防守对方的棋最好不要太消极,等他攻完,就可以利用防守时形成的攻势轻松收拾对方。
攻守转换,慎思变化
发现进攻没有胜棋,而对方防守的子力形成了一定的威胁,一般就会转攻为守了。或者守住了对方的进攻,得到先手而转守为攻。攻守转换的时候,要分析局面,有些冲四、活三是不是该先下了再去防守更好?还是冲后以后再防守会变得更困难?以守转攻的时候,要看清是不是真的已经完全守住了对方?他还有哪些力量,能不能够成威胁?
先行争夺,地破天惊
用妙手强行夺得先手,这样的气势连天地都会惊动。
守取外势,攻聚内力
防守的时候,尽可能防在外围,限制对方的空间,让他的棋没有发展前途。进攻则不能太分散子力,下得太*外,被对方占据要点,阻断子力联系,不能形成有效的进攻。但攻聚内力并不等于放弃外围,使自己没有足够的空间进攻,守取外势也不能一味地在外围防守,而放弃内部必须占据的要点。
八卦易守,成角易攻
八卦就是由象棋四个马步形成的'一种棋形,如果摆满全盘,则对方没有取胜的可能。还有一种说法叫“马步是强防”,既使不能摆满全盘,很多时候自己的棋子形成马步的点就是强防点。成角易攻,角就是三个紧紧*在一起的棋子构成的直角三角形,成角的形状后子力可互相多次利用,进攻源源不断。
阻断分隔,稳如泰山
这句话说的就是防守时的一种思想,阻断对方子力的联系,逐个击破。
不思争先,胜比登天
仅仅*消极的防御是赢不了棋的.,防御的时候时刻要考虑夺回先手。两个棋力相当的棋手,一盘五子棋比赛过程,就是互相争先手的过程。
初盘争二,局终抢三
开局的时候双方都没有连续进攻取胜的手段,就需要在限制对方形成活二的基础上自己形成更多的活二,时机成熟,一举攻胜。到了局终双方各有些活二、眠三,这时有些三就要先活,有些眠三就要先冲,占据空间要点,切断对方子力联系。
留三不冲,变化万千
有很多初学五子棋的朋友是有三必冲的,殊不知在鞘中的剑才是最强的剑,冲四犹如宝剑出鞘,如果不能一击致命,出鞘之后的剑就没有威力了。留三不冲,你的这个冲就有两个点(一个连冲,一个跳冲)可以利用,相应对方防守的子也会少一个。有时把冲了以后活三改为直接叫四三,可以收到更好的效果。
多个先手,细算次先
五子要点,次序在前
这里说的是顺序问题。同样的棋,顺序对了可以取胜,顺序错了没有胜棋,在实战中可以遇到这类情况。不要被自己很多可以活三冲四的棋看花了眼,认真计算正确的进攻顺序以及对方防守后会不会形成反三、反四。
斜线为阴,直线为阳
阴阳结合,防不胜防
新手的朋友很容易忽视斜线的子力,斜线成五子同样取胜,可不能大意。善于进攻的棋手,能够做到直线和斜线相互配合,多角度的攻击能够大大增加进攻的杀伤力。之所以说斜线是阴因为不同颜色的两条斜线可以交*互不影响,相反的不用颜色的两条直线就不可能交*,因为无法穿越对方。
连三连四,易见为明
跳三跳四,暗剑深藏
连三连四很容易看出,很多朋友却老是忽视跳活三、跳冲四的下法,不晓得跳出去又是另一片天空,跳出去进攻更具有隐蔽性。这两句放在一起是告诉棋手,连和跳并没有一定之规,关键看临场的形势,但是千万不能忽略可任何一种可能性,否则就会错失良机。
己落一子,敌增一兵
这句话主要是说在进攻的时候不要忘记对方防守的子力,五子棋是你下一子,对方下一子,不比你少。你进攻一手棋,敌人防守一子,防守的棋子是不是会给你造成反三、反四?会不会阻碍了你的后续进攻?所以下棋的时候一定要惜子如金,每一子都要发挥出最大的效力,千万不可随便将变化走完。
攻其要点,守其必争
进攻的时候占据重要位置,下在可持续进攻的点。防守就要守在对方进攻过程中非常想占据的连接点,你想下的点,我来下。
势已形成,败即降临
高手对弈很多时候是我们看不懂的,因为他们所追求的是“势”,一种压制住对方而取得压倒性优势的情况,这个时候可能不能简单的杀,但是通过精准的计算可以立即将这种“势”转化为杀。
五子精华,一子输赢
有些朋友输了以后说“你成五子了,我也活四了,我只比你差一颗子嘛”。其实五子棋争的就是这一步棋,谁争得了先手下成五子,谁就获胜,这也是五子棋的魅力所在。不要以一子之差原谅自己,一子就已经可以使你输棋了
Ⅷ C语言五子棋算法
任何一种棋类游戏其关键是对当前棋局是否有正确的评分,评分越准确则电脑的AI越高。五子棋游戏也是如此,但在打分之前,我们先扫描
整个棋盘,把每个空位从八个方向上的棋型填入数组gStyle(2, 15, 15, 8, 2),其中第一个下标为1时表示黑棋,为2时表示白棋,第二和第三
个下标表示(x,y),第四个下标表示8个方向,最后一个下标为1时表示棋子数,为2时表示空格数,如:gStyle(1,2,2,1,1)=3表示与坐标(2,2)在第1个方向上相邻的黑棋棋子数为3
gstyle(1,2,2,1,2)=4表示与坐标(2,2)在第1个方向上的最近的空格数为4
在定义方向时,也应该注意一定的技巧,表示两个相反的方向的数应该差4,在程序中我是这样定义的:
Const DIR_UP = 1
Const DIR_UPRIGHT = 2
Const DIR_RIGHT = 3
Const DIR_RIGHTDOWN = 4
Const DIR_DOWN = 5
Const DIR_DOWNLEFT = 6
Const DIR_LEFT = 7
Const DIR_LEFTUP = 8
这样我们前四个方向可以通过加四得到另一个方向的值。如果你还是不太明白,请看下面的图:
---------
---------
---oo----
-ox*xx---
---------
---------
图中的*点从标为(4,4),(打*的位置是空位),则:
gStyle(2,4,4,1,1)=1在(4,4)点相邻的上方白棋数为1
gStyle(2,4,4,1,2)=2在(4,4)点的上方距上方白棋最近的空格数为2
gStyle(1,4,4,3,1)=2在(4,4)点相邻的右方黑棋数为2
gStyle(1,4,4,3,2)=1在(4,4)点的右方距右方黑棋最近的空格数为3
...一旦把所有空点的棋型值填完,我们很容易地得出黑棋水平方向上点(4,4)的价值,由一个冲1(我把有界的棋称为冲)和活2(两边无界的
棋称为活)组成的。对于而白棋在垂直方向上点(4,4)的价值是一个活1,而在/方向也是活1所以,只要我们把该点的对于黑棋和白棋的价值算出
来,然后我们就取棋盘上各个空点的这两个值的和的最大一点作为下棋的点。然而,对各种棋型应该取什么值呢?我们可以先作如下假设:
Fn 表示先手n个棋子的活棋型,如:F4表示先手活四
Fn'表示先手n个棋子的冲棋型,如:F4'表示先手冲四
Ln 表示后手n个棋子的活棋型,如:L3表示后手活三
Ln'表示后手n个棋子的冲棋型,如:L3'表示后手冲三
.
.
.
根据在一行中的棋型分析,得到如下关系:
L1'<=F1'<L2'<=F2'<=L1<F1<L2<F2<L3'<=F3'<L4'<F4'=F4
从这个关系包含了进攻和防守的关系(当然,这个关系是由我定的,你可以自己定义这些关系)。对这些关系再进一步细化,如在一个可下
棋的点,其四个方向上都有活三,也比不上一个冲四,所以我们可以又得到4*F3<L4'这个关系,同样,我们还可以得到其它的关系,如:4*F2<L3、4*L3<F3...,这些的关系由于你的定法和我的定法制可能不一样,这样计算机的AI也就不一样,最后我们把分值最小的L1'值定为1,则我们就得
到了下面各种棋型的分值,由C语言表示为:
F[2][5]={{0,2,5,50,16000},{0,10,30,750,16000}};
L[2][5]={{0,1,5,50,3750},{0,10,30,150,4000}};
F数组表示先手,第一个下标为0时表示冲型,第二个下标表示棋子数,则F2'对应F[0][2]L数组表示后手,第一个下标为0时表示冲型,第二
个下标表示棋子数,则L2对应F[1][2]Ok,棋型的分值关系确定好了以后,我们把每一个可下点的四个方向的棋型值相加(包括先手和后手的分
值),最后选择一个最大值,并把这一点作为计算机要下的点就OK了:)。后话:
1、得到最大值也许不止一个点,但在我的程序中只选择第一个最大点,当然你可以用于个随机数来决定
选择那一个最大值点,也可以对这些最大值点再作进一步的分析。
2、在这个算法中我只考虑了周围有棋子的点,而其它点我没有考虑。
3、可以再更进一步,用这个算法来预测以后的几步棋,再选择预测值最好的一步,这样电脑的AI就更高了
4、这个算法没有考虑黑棋的禁手(双3、双四和多于五子的连棋)。因为在平时我下的五子棋是没有这些
禁手的。
Ⅸ 五子棋人工智能算法讲解
五子棋算法可简可繁,要看你对自己五子棋程序智能的要求, 人机对战的意思就是人和电脑下,也就是说电脑会思考如何下棋....其实这才是五子棋程序的核心.如果只实现人与人对战的话,是一件很简单的事情,无非就是绘制棋盘,然后绘制下棋的效果,再写个下棋合法性判断,胜负判断....大概就搞定了....所以核心其实是人机对战的电脑那部分人工智能.这东西吧,可以研究的很多,不过主要的几个设计要点就是搜索算法和估值算法,这两个是最主要的,还有提高电脑思考销率的方法就有多cpu的计算机多线程思考的设计....通过一些手段让电脑变得更像人类棋手的,例如利用一些遗传算法之类的让电脑具有学习能力,可以在失败中吸取教训,开局库,历史启发之类的一大堆......但是总而言之,这一系列算法的设计没有一个标准,只要能让你的电脑下棋下的更聪明,更快那就是好算法.国内有一个叫王晓春的写过一本叫<<pc游戏编程( 人机博弈)>>的书,这是一本研究人机博弈程序很经典的书,书的后面还附了一个五子棋的程序实例,你可以参考一下.下面是csdn的下载地址,你也可以自己去搜一下.http://download.csdn.net/source/1925326
Ⅹ 五子棋入门技巧口诀
五子棋一直都是大家喜爱的棋类,它比之围棋、象棋的规则要简单许多。而且棋盘简易,随处可画,随处可玩。但是你要是认为五子棋是一个简单的游戏那就大错特错了。那么看似简易的规则隐藏着什么五子棋技巧呢?又有哪些五子棋教程供我们学习呢?
一般初学者觉得只要看到,只要熟悉了棋谱,自然能做到百战不殆。这种想法是十分愚蠢的。
所谓排兵布阵,不是指很僵化教条的按照棋谱一步步走,重要的在于领略其精神。形似不如神似, 输赢的真正关键,在于对弈经验和计算能力。
熟能生巧,经验丰富之后,计算能力的高低也就决定了你能下到什么样的水平。
这个计算能力不是很好解决,很大程度上是有天赋决定的,当然也有后天的训练。
所以,初学者最紧要的事情不是去看棋谱,学习什么定式,而是去实战,实战的时候要用心,用脑子去想,注意对手的优势在那里,认真学习,五子棋水平才能不断提高。下棋最忌讳的就是浮躁了。
当然下五子棋定基础定式还是有的,通过定式掌握很多有效的攻防技巧。
各个开局的基本定式应做到心中有数,但是实战中 计算能力 会发挥主要作用。总之“计算为主,定式为辅”。
很重要的一点,不管做什么,耐心是少不了的。
五子棋虽然规则简单,但下棋能力的提升不是在短时间内能够完成的,这需要经验,等你练到一定程度,有了“棋感”的时候,就可以鹤立鸡群了!
一、五子棋入门技巧口诀
先手要攻,后手要守。以攻为守,以守为攻。攻守转换,慎思变化。
先行争夺,地破天惊。守取外势,攻聚内力。八卦易守,成角易攻。
阻断分割,稳如泰山。不思争先,胜如登天。初盘争二,局终抢三。
留三不冲,变化万千。多个先手,细算次先。五子要点,次序在前。
斜线为阴,直线为阳。阴阳结合,防不胜防。连三连四,易见为明。
跳三跳四,暗箭深藏。己落一子,敌增一兵。攻其要点,守其必争。
势已形成,败即降临。五子精华,一子输赢。
二、五子棋入门技巧口诀详解
先手要攻,后手要守
这句话的表面意思应该很容易理解,先手当然应该进攻,不要贻误时机。但有些时候局面并不是一边倒的形势,这就需要认真判断自己到底是不是真正的先手,如果前途暗淡,而对方也有些手段,就要小心了,冒然进攻,用完了自己的力量,再去防守对手,就成了彻底的后手。
以攻为守,以守待攻
攻不忘守,守不忘攻。有句话叫“最强的防守就是进攻”,防守别人棋的时候仔细看清局势,是不是有既能防守住对方又可以进攻的点。以守待攻,在对方狂攻一阵却 无胜棋后,你防守的棋是否形成了外围的攻势?在安全的前提下,防守对方的棋最好不要太消极,等他攻完,就可以利用防守时形成的攻势轻松收拾对方。
攻守转换,慎思变化
发现进攻没有胜棋,而对方防守的子力形成了一定的威胁,一般就会转攻为守了。或者守住了对方的进攻,得到先手而转守为攻。攻守转换的时候,要分析局面,有些 冲四、活三是不是该先下了再去防守更好?还是冲后以后再防守会变得更困难?以守转攻的时候,要看清是不是真的已经完全守住了对方?他还有哪些力量,能不能 够成威胁?
先行争夺,地破天惊
用妙手强行夺得先手,这样的气势连天地都会惊动。
守取外势,攻聚内力
防守的时候,尽可能防在外围,限制对方的空间,让他的棋没有发展前途。进攻则不能太分散子力,下得太外,被对方占据要点,阻断子力联系,不能形成有效的进攻。但攻聚内力并不等于放弃外围,使自己没有足够的空间进攻,守取外势也不能一味地在外围防守,而放弃内部必须占据的要点。
八卦易守,成角易攻
八卦就是由象棋四个马步形成的一种棋形,如果摆满全盘,则对方没有取胜的可能。还有一种说法叫“马步是强防”,既使不能摆满全盘,很多时候自己的棋子形成马步的点就是强防点。成角易攻,角就是三个紧紧在一起的棋子构成的直角三角形,成角的形状后子力可互相多次利用,进攻源源不断。
阻断分隔,稳如泰山
这句话说的就是防守时的一种思想,阻断对方子力的联系,逐个击破。
不思争先,胜比登天
仅仅消极的防御是赢不了棋的,防御的时候时刻要考虑夺回先手。两个棋力相当的棋手,一盘五子棋比赛过程,就是互相争先手的过程。
初盘争二,局终抢三
开局的时候双方都没有连续进攻取胜的手段,就需要在限制对方形成活二的基础上自己形成更多的活二,时机成熟,一举攻胜。到了局终双方各有些活二、眠三,这时有些三就要先活,有些眠三就要先冲,占据空间要点,切断对方子力联系。
留三不冲,变化万千
有很多初学五子棋的朋友是有三必冲的,殊不知不出手的拳头才是最强的拳头,冲四犹如握拳出手,如果不能一击致命,出手之后的拳头就没有威力了。留三不冲,你的这个冲就有两个点(一个连冲,一个跳冲)可以利用,相应对方防守的子也会少一个。有时把冲了以后活三改为直接叫四三,可以收到更好的效果。
多个先手,细算次先
五子要点,次序在前
这里说的是顺序问题。同样的棋,顺序对了可以取胜,顺序错了没有胜棋,在实战中可以遇到这类情况。不要被自己很多可以活三冲四的棋看花了眼,认真计算正确的进攻顺序以及对方防守后会不会形成反三、反四。
斜线为阴,直线为阳
阴阳结合,防不胜防
新手的朋友很容易忽视斜线的子力,斜线成五子同样取胜,可不能大意。善于进攻的棋手,能够做到直线和斜线相互配合,多角度的攻击能够大大增加进攻的杀伤力。 之所以说斜线是阴因为不同颜色的两条斜线可以交互不影响,相反的不用颜色的两条直线就不可能交,因为无法穿越对方。
连三连四,易见为明
跳三跳四,暗剑深藏
连三连四很容易看出,很多朋友却老是忽视跳活三、跳冲四的下法,不晓得跳出去又是另一片天空,跳出去进攻更具有隐蔽性。这两句放在一起是告诉棋手,连和跳并没有一定之规,关键看临场的形势,但是千万不能忽略可任何一种可能性,否则就会错失良机。
己落一子,敌增一兵
这句话主要是说在进攻的时候不要忘记对方防守的子力,五子棋是你下一子,对方下一子,不比你少。你进攻一手棋,敌人防守一子,防守的棋子是不是会给你造成反三、反四?会不会阻碍了你的后续进攻?所以下棋的时候一定要惜子如金,每一子都要发挥出最大的效力,千万不可随便将变化走完。
攻其要点,守其必争
进攻的时候占据重要位置,下在可持续进攻的点。防守就要守在对方进攻过程中非常想占据的连接点,你想下的点,我来下。
势已形成,败即降临
高手对弈很多时候是我们看不懂的,因为他们所追求的是“势”,一种压制住对方而取得压倒性优势的情况,这个时候可能不能简单的杀,但是通过精准的计算可以立即将这种“势”转化为杀。
五子精华,一子输赢
有些朋友输了以后说“你成五子了,我也活四了,我只比你差一颗子嘛”。其实五子棋争的就是这一步棋,谁争得了先手下成五子,谁就获胜,这也是五子棋的魅力所在。不要以一子之差原谅自己,一子就已经可以使你输棋了。
三、结束语: