当然有啦,有一个叫腾讯五子棋,试试就知道了~😊
1.下五子棋的话,有时候不同的规则也是有着不一样的玩法,第一种规则就是棋子是无限的,一直下到其中一方五个棋子连成一条直线是算赢。
2.这样的玩法呢,就是带来很大的挑战性,作为先手落子的话,我们就是需要自己不断地给对手施加压力,自己不断地找机会连成五子。
3.棋子在棋盘上面的各种位置都要注意防守,先手方在下的时候,千万不能让对手取得先机,否则就很被动。
4.连成五子的时候,一定是就像一棵大树一样的,不断的扩张自己的棋路,所以才能取得最后的胜利。
进入游戏当中,我们点击个人中心就可以创建五子棋语音。
首先讲一下这种算法的大概思路:
利用HashMap中key与value的对应关系。我们可以设置一个权值表。
weightMap.put("00", 0);
weightMap.put("0", 0);
//定义活一连
weightMap.put("010", 1);
weightMap.put("0-10", 1);
//定义活二连
weightMap.put("0110", 4);
weightMap.put("0-1-10", 4);
就设置成这样,给不同的情况设置一个value值,即权值,来表示危险程度。
当人下棋时,电脑下棋子在最大的地方阻止人赢。
当电脑下棋时,也选择权值最大的地方让电脑自己赢。
这样就只用每下一颗棋子,判断一遍整个棋盘空的部分的权值。
然后存入数组之中。筛选出权值最大的地方下棋。
2.部分代码
for(int i=0;i<chessExist.length;i++){
for(int j=0;j<chessExist[0].length;j++){
if(chessExist[i][j]==0){
String code="0";
int chess=0;//判断棋子出现次数
//判断是否为空位
//判断纵向向下方向
for(int k=1;k<=j;k++){
//如果向上的棋子是空棋
if(chessExist[i][j-k]==0){
//0的第一次出现,加上自身code=0,那么就有两个0连在一起了
code=chessExist[i][j-k]+code;
break;
}
//出现的是棋子的情况
else{
if(chess==0){
chess=chessExist[i][j-k];
code=chessExist[i][j-k]+code;
}
else if(chess==chessExist[i][j-k]){
code=chessExist[i][j-k]+code;
}else if(chess!=chessExist[i][j-k]){
code=chessExist[i][j-k]+code;
break;
}
}
}
weightchess[i][j]=weightMap.get(code)+weightchess[i][j];
//重置这些参数
code="0";
chess=0;
和判断输赢相同,这只是一个方向上的判断。重置参数后继续判断其他方向,因为代码都差不多,这里就不多写了,需要源码的可以留言交流
五子棋最少两个人玩儿,最多四个人玩儿,是世界智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏,是世界智力运动会竞技项目之一,通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成5子连线者获胜。棋具与围棋通用,起源于中国上古时代的传统黑白棋种之一。主要流行于华人和汉字文化圈的国家以及欧美一些地区,是世界上最古老的棋。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。已在各个游戏平台有应用。
五子棋很多开局已经证明黑必胜了。
在有禁手,三换五打中,直指黑必胜:花,雨,溪,金,寒
白必胜:游
平衡:瑞(一打必胜,二打平衡),疏,松(但现在好像证明黒优)
斜指黑必胜:浦,云,峡,水,恒
白必胜:慧
平衡:斜(但现在好像也证明黒优)
以前四大平衡局:瑞 疏 松 斜
但现在常用的是瑞(二打),疏
不可能下过电脑的,五子棋在现有规则下在十年前就已经穷尽(有相应的地毯谱),人脑的极限也就是跟电脑下成和棋。实际上现在的五子棋比赛,比的就是谁背的谱多,说白就是记忆力比赛。这也是限制五子棋发展重要原因。
五子棋游戏与编程水平有很大差异,棋力也有天地之别,所以先手后走的都有。