目录
西洋双陆棋
摆法
棋盘的每一条边上都有十二个三角形,从右下角开始依顺时针方向用数字1到24编号(对方则正好相反,从右上角开始依逆时针方向编号,己方的第一点就是对方的第二十四点,己方的第二点就是对方的第二十三点,依此类推)。每位玩者将两枚棋子放在第二十四点,三枚棋子放在第八点,五枚棋子放在第十三点,五枚棋子放在第六点。第一点到第六点叫做内盘,第七点到第十二点叫做外盘。第七点又叫做临界点,第十三点又叫做中点。
走法
游戏开始时,每位玩者掷一个骰子,点数较大者先走。双方轮流移动棋子,每次移动前掷两个骰子。掷骰子后,玩者必须按照掷得的点数移动棋子。比方说,如果掷到6和3,就必须将一枚棋子向前移动6个点,再将另一枚棋子向前移动3个点。也可以将同一枚棋子移动6个点再移动3个点,或先移动3个点再移动6个点,但不能直接移动9个点。如果掷到两个相同的点数,就要按照掷得的点数移动棋子两次。比方说,如果掷到两个5,就要将四枚棋子向前移动5个点。
攻击弱棋
棋子只能移动到未被占据或被己方棋子占据的点,也可以移动到仅被一枚对方棋子占据的点——对方的这枚棋子叫做弱棋。弱棋被攻击后放在棋盘中央的分界上。棋子不能移动到已被两枚或以上对方棋子占据的点。因此不可能有任何点同时被己方和对方的棋子占据。被攻击的棋子从分界上回到棋盘上之前,其它棋子不得移动。如果掷到2,就可将分界上的棋子移动到第二十三点;如果掷到3,就可将分界上的棋子移动到第二十二点,依此类推。
移离棋盘
如果所有棋子都回到了己方内盘,就可以开始将棋子移离棋盘。如果掷到1,就可将位于第一点的棋子移离棋盘;如果掷到2,就可将位于第二点的棋子移离棋盘,依此类推。不能将较低点的棋子移离棋盘,除非前面已没有棋子。比方说,如果掷到6和5,但第六点没有棋子,而第五点有两枚棋子,就必须从第五点将两枚棋子移走。如果在移离棋盘时有棋子被对方攻击,就必须等该棋子回到了己方内盘后才可以继续移离棋盘。
胜负与得分
首先将所有棋子移离的一方获得胜利。
对战示例:
策略:
简单的策略很容易想出来,不要单打独斗,尽量能在一根柱子上放2个棋子。能踩对方棋子的时候可以多踩几个。
中国双陆棋
中国古代的双陆是一种类似赌博的棋戏,南北朝时由西亚、印度一带传入中国。
规则和西洋双陆棋大同小异,只有些细节不同。
简单的分析
如果不考虑攻击,那么平均一次移动多少步?
int main()
{
int s = 0;
for (int i = 1; i <= 6; i++) {
for (int j = 1; j <= 6; j++) {
s += i + j;
if (j == i)s += i + j;
}
}
cout << s / 36.0;
return 0;
}
输出 8.16667
其实就是49/6
如果不考虑攻击,那么一共需要移动167步,所以最快大约21次可以全部走完。
但考虑互相攻击的话,即使50个回合可能也走不完。