玩家之前下棋和聊天的界面如图5所示。
图5 下棋和聊天界面
7 判断五子棋的输赢
本五子棋程序可以判断输赢。对于五子棋程序来说,判断输赢非常简单,只需要判断最后一个走的棋子在如下四个方向是否存在连续五个同色棋子,如果存在,则走该棋子的玩家赢。
(1)水平方向。
(2)垂直方向。
(3)西北到东南的方向。
(4)东北到西南的方向。
程序在判断每一个方向时,需要以当前棋子为中心,向两个方向对判断。如判断水平方向是否满足五子连续,需要以当前棋子为中心,先向左侧去判断是否满足条件,如果不满足,以左侧连续同色棋子的数目为基础,向右侧继续统计同色棋子的数目。如果满足条件,在水平方向上就满足连续五个同色棋子的条件。该玩家赢得游戏。这个算法的实现代码如下:
// 如果当前玩家赢得游戏,返回true,否则返回false
private bool verifyWinner()
{
// 当count变量的值为5时,表示在某个方向上已经有5个同色棋子,
// 当前玩家赢得游戏
int count = 0;
// 验证垂直方向,向上验证
for (int i = currentRow; i >= 0; i--)
{
// 判断当前棋子是否和最后一个走的棋子为同色
if (isSameChess(i, currentCol))
{
count++;
if (count == 5)
return true;
}
else
break;
}
// 验证垂直方向,向下验证
for (int i = currentRow + 1; i < Chessboard.GetLength(0); i++)
{
if (isSameChess(i, currentCol))
{
count++;
if (count == 5)
return true;
}
else
break;
}
|