我正在编写一些Java代码来实现Connect 4游戏.当玩家在水平,垂直或对角线上连续放置四个筹码时,会宣布获胜者.显然我可以写一些for循环并每次检查一个胜利者,但是想要更优雅地做一些建议.我正在考虑将所有获胜组合添加到某些数据结构中,只是检查最后一步所涉及的组合,但我不确定这是否可能或如何实现它.我是Java的新手,所以对于使用什么数据结构或如何实现的任何提示或建议将非常感激.谢谢
编辑:好的,有人可以告诉我在哪里开始实施这里的家伙回答:算法检查连接四个字段
无论如何,为了检查胜利条件,您需要在整个棋盘上进行某种循环或递归。只要你的循环一旦停止成为获胜条件就停止在任何方向上进行检查(例如,如果你从左到右检查并且在两次迭代后发现不同的颜色),那么它应该没问题。
优化这一点的一种方法是仅在进行新动作时检查胜利条件,然后您只需要检查该动作周围的那些,而不是整个棋盘。如果您需要检查整个棋盘而不是逐回合,那么进一步的步骤是保留已下棋的列表,并从第一个棋子开始进行检查,然后您可以在获胜棋子下完后立即停止。
其他答案声称你不能在没有循环的情况下检查胜利.今天我将扮演魔鬼的拥护者:你可以做到(虽然你仍然不应该这样做)!对于典型的7*6 Connnect Four板,每种颜色只有69个可能的获胜位置,即使你是一个慢打字员,也可以在一两个下午轻松编码.
此代码假设你有字符的7x6 2D阵列称为matrix,其中包含了三个值之一'B','R'或者' ',分别对应于黑色,红色,或空的瓦片.它要么返回获胜者的角色,要么null还没有获胜者.
char getWinner(){
if (matrix[0][0] == 'B' and matrix[1][0] == 'B' and matrix[2][0] == 'B' and matrix[3][0] == 'B'){return 'B';}
if (matrix[0][0] == 'R' and matrix[1][0] == 'R' and matrix[2][0] == 'R' and matrix[3][0] == 'R'){return 'R';}
if (matrix[1][0] == 'B' and matrix[2][0] == 'B' and matrix[3][0] == 'B' and matrix[4][0] == 'B'){return 'B';}
if (matrix[1][0] == 'R' and matrix[2][0] == 'R' and matrix[3][0] == 'R' and matrix[4][0] == 'R'){return 'R';}
if (matrix[2][0] == 'B' and matrix[3][0] == 'B' and matrix[4][0] == 'B' and matrix[5][0] == 'B'){return 'B';}
if (matrix[2][0] == 'R' and matrix[3][0] == 'R' and matrix[4][0] == 'R' and matrix[5][0] == 'R'){return 'R';}
if (matrix[3][0] == 'B' and matrix[4][0] == 'B' and matrix[5][0] == 'B' and matrix[6][0] == 'B'){return 'B';}
if (matrix[3][0] == 'R' and matrix[4][0] == 'R' and matrix[5][0] == 'R' and matrix[6][0] == 'R'){return 'R';}
if (matrix[0][1] == 'B' and matrix[1][1] == 'B' and matrix[2][1] == 'B' and matrix[3][1] == 'B'){return 'B';}
if (matrix[0][1] == 'R' and matrix[1][1] == 'R' and matrix[2][1] == 'R' and matrix[3][1] == 'R'){return 'R';}
if (matrix[1][1] == 'B' and matrix[2][1] == 'B' and matrix[3][1] == 'B' and matrix[4][1] == 'B'){return 'B';}
if (matrix[1][1] == 'R' and matrix[2][1] == 'R' and matrix[3][1] == 'R' and matrix[4][1] == 'R'){return 'R';}
if (matrix[2][1] == 'B' and matrix[3][1] == 'B' and matrix[4][1] == 'B' and matrix[5][1] == 'B'){return 'B';}
if (matrix[2][1] == 'R' and matrix[3][1] == 'R' and matrix[4][1] == 'R' and matrix[5][1] == 'R'){return 'R';}
if (matrix[3][1] == 'B' and matrix[4][1] == 'B' and matrix[5][1] == 'B' and matrix[6][1] == 'B'){return 'B';}
if (matrix[3][1] == 'R' and matrix[4][1] == 'R' and matrix[5][1] == 'R' and matrix[6][1] == 'R'){return 'R';}
if (matrix[0][2] == 'B' and matrix[1][2] == 'B' and matrix[2][2] == 'B' and matrix[3][2] == 'B'){return 'B';}
if (matrix[0][2] == 'R' and matrix[1][2] == 'R' and matrix[2][2] == 'R' and matrix[3][2] == 'R'){return 'R';}
if (matrix[1][2] == 'B' and matrix[2][2] == 'B' and matrix[3][2] == 'B' and matrix[4][2] == 'B'){return 'B';}
if (matrix[1][2] == 'R' and matrix[2][2] == 'R' and matrix[3][2] == 'R' and matrix[4][2] == 'R'){return 'R';}
if (matrix[2][2] == 'B' and matrix[3][2] == 'B' and matrix[4][2] == 'B' and matrix[5][2] == 'B'){return 'B';}
if (matrix[2][2] == 'R' and matrix[3][2] == 'R' and matrix[4][2] == 'R' and matrix[5][2] == 'R'){return 'R';}
if (matrix[3][2] == 'B' and matrix[4][2] == 'B' and matrix[5][2] == 'B' and matrix[6][2] == 'B'){return 'B';}
if (matrix[3][2] == 'R' and matrix[4][2] == 'R' and matrix[5][2] == 'R' and matrix[6][2] == 'R'){return 'R';}
if (matrix[0][3] == 'B' and matrix[1][3] == 'B' and matrix[2][3] == 'B' and matrix[3][3] == 'B'){return 'B';}
if (matrix[0][3] == 'R' and matrix[1][3] == 'R' and matrix[2][3] == 'R' and matrix[3][3] == 'R'){return 'R';}
if (matrix[1][3] == 'B' and matrix[2][3] == 'B' and matrix[3][3] == 'B' and matrix[4][3] == 'B'){return 'B';}
if (matrix[1][3] == 'R' and matrix[2][3] == 'R' and matrix[3][3] == 'R' and matrix[4][3] == 'R'){return 'R';}
if (matrix[2][3] == 'B' and matrix[3][3] == 'B' and matrix[4][3] == 'B' and matrix[5][3] == 'B'){return 'B';}
if (matrix[2][3] == 'R' and matrix[3][3] == 'R' and matrix[4][3] == 'R' and matrix[5][3] == 'R'){return 'R';}
if (matrix[3][3] == 'B' and matrix[4][3] == 'B' and matrix[5][3] == 'B' and matrix[6][3] == 'B'){return 'B';}
if (matrix[3][3] == 'R' and matrix[4][3] == 'R' and matrix[5][3] == 'R' and matrix[6][3] == 'R'){return 'R';}
if (matrix[0][4] == 'B' and matrix[1][4] == 'B' and matrix[2][4] == 'B' and matrix[3][4] == 'B'){return 'B';}
if (matrix[0][4] == 'R' and matrix[1][4] == 'R' and matrix[2][4] == 'R' and matrix[3][4] == 'R'){return 'R';}
if (matrix[1][4] == 'B' and matrix[2][4] == 'B' and matrix[3][4] == 'B' and matrix[4][4] == 'B'){return 'B';}
if (matrix[1][4] == 'R' and matrix[2][4] == 'R' and matrix[3][4] == 'R' and matrix[4][4] == 'R'){return 'R';}
if (matrix[2][4] == 'B' and matrix[3][4] == 'B' and matrix[4][4] == 'B' and matrix[5][4] == 'B'){return 'B';}
if (matrix[2][4] == 'R' and matrix[3][4] == 'R' and matrix[4][4] == 'R' and matrix[5][4] == 'R'){return 'R';}
if (matrix[3][4] == 'B' and matrix[4][4] == 'B' and matrix[5][4] == 'B' and matrix[6][4] == 'B'){return 'B';}
if (matrix[3][4] == 'R' and matrix[4][4] == 'R' and matrix[5][4] == 'R' and matrix[6][4] == 'R'){return 'R';}
if (matrix[0][5] == 'B' and matrix[1][5] == 'B' and matrix[2][5] == 'B' and matrix[3][5] == 'B'){return 'B';}
if (matrix[0][5] == 'R' and matrix[1][5] == 'R' and matrix[2][5] == 'R' and matrix[3][5] == 'R'){return 'R';}
if (matrix[1][5] == 'B' and matrix[2][5] == 'B' and matrix[3][5] == 'B' and matrix[4][5] == 'B'){return 'B';}
if (matrix[1][5] == 'R' and matrix[2][5] == 'R' and matrix[3][5] == 'R' and matrix[4][5] == 'R'){return 'R';}
if (matrix[2][5] == 'B' and matrix[3][5] == 'B' and matrix[4][5] == 'B' and matrix[5][5] == 'B'){return 'B';}
if (matrix[2][5] == 'R' and matrix[3][5] == 'R' and matrix[4][5] == 'R' and matrix[5][5] == 'R'){return 'R';}
if (matrix[3][5] == 'B' and matrix[4][5] == 'B' and matrix[5][5] == 'B' and matrix[6][5] == 'B'){return 'B';}
if (matrix[3][5] == 'R' and matrix[4][5] == 'R' and matrix[5][5] == 'R' and matrix[6][5] == 'R'){return 'R';}
if (matrix[0][0] == 'B' and matrix[0][1] == 'B' and matrix[0][2] == 'B' and matrix[0][3] == 'B'){return 'B';}
if (matrix[0][0] == 'R' and matrix[0][1] == 'R' and matrix[0][2] == 'R' and matrix[0][3] == 'R'){return 'R';}
if (matrix[0][1] == 'B' and matrix[0][2] == 'B' and matrix[0][3] == 'B' and matrix[0][4] == 'B'){return 'B';}
if (matrix[0][1] == 'R' and matrix[0][2] == 'R' and matrix[0][3] == 'R' and matrix[0][4] == 'R'){return 'R';}
if (matrix[0][2] == 'B' and matrix[0][3] == 'B' and matrix[0][4] == 'B' and matrix[0][5] == 'B'){return 'B';}
if (matrix[0][2] == 'R' and matrix[0][3] == 'R' and matrix[0][4] == 'R' and matrix[0][5] == 'R'){return 'R';}
if (matrix[1][0] == 'B' and matrix[1][1] == 'B' and matrix[1][2] == 'B' and matrix[1][3] == 'B'){return 'B';}
if (matrix[1][0] == 'R' and matrix[1][1] == 'R' and matrix[1][2] == 'R' and matrix[1][3] == 'R'){return 'R';}
if (matrix[1][1] == 'B' and matrix[1][2] == 'B' and matrix[1][3] == 'B' and matrix[1][4] == 'B'){return 'B';}
if (matrix[1][1] == 'R' and matrix[1][2] == 'R' and matrix[1][3] == 'R' and matrix[1][4] == 'R'){return 'R';}
if (matrix[1][2] == 'B' and matrix[1][3] == 'B' and matrix[1][4] == 'B' and matrix[1][5] == 'B'){return 'B';}
if (matrix[1][2] == 'R' and matrix[1][3] == 'R' and matrix[1][4] == 'R' and matrix[1][5] == 'R'){return 'R';}
if (matrix[2][0] == 'B' and matrix[2][1] == 'B' and matrix[2][2] == 'B' and matrix[2][3] == 'B'){return 'B';}
if (matrix[2][0] == 'R' and matrix[2][1] == 'R' and matrix[2][2] == 'R' and matrix[2][3] == 'R'){return 'R';}
if (matrix[2][1] == 'B' and matrix[2][2] == 'B' and matrix[2][3] == 'B' and matrix[2][4] == 'B'){return 'B';}
if (matrix[2][1] == 'R' and matrix[2][2] == 'R' and matrix[2][3] == 'R' and matrix[2][4] == 'R'){return 'R';}
if (matrix[2][2] == 'B' and matrix[2][3] == 'B' and matrix[2][4] == 'B' and matrix[2][5] == 'B'){return 'B';}
if (matrix[2][2] == 'R' and matrix[2][3] == 'R' and matrix[2][4] == 'R' and matrix[2][5] == 'R'){return 'R';}
if (matrix[3][0] == 'B' and matrix[3][1] == 'B' and matrix[3][2] == 'B' and matrix[3][3] == 'B'){return 'B';}
if (matrix[3][0] == 'R' and matrix[3][1] == 'R' and matrix[3][2] == 'R' and matrix[3][3] == 'R'){return 'R';}
if (matrix[3][1] == 'B' and matrix[3][2] == 'B' and matrix[3][3] == 'B' and matrix[3][4] == 'B'){return 'B';}
if (matrix[3][1] == 'R' and matrix[3][2] == 'R' and matrix[3][3] == 'R' and matrix[3][4] == 'R'){return 'R';}
if (matrix[3][2] == 'B' and matrix[3][3] == 'B' and matrix[3][4] == 'B' and matrix[3][5] == 'B'){return 'B';}
if (matrix[3][2] == 'R' and matrix[3][3] == 'R' and matrix[3][4] == 'R' and matrix[3][5] == 'R'){return 'R';}
if (matrix[4][0] == 'B' and matrix[4][1] == 'B' and matrix[4][2] == 'B' and matrix[4][3] == 'B'){return 'B';}
if (matrix[4][0] == 'R' and matrix[4][1] == 'R' and matrix[4][2] == 'R' and matrix[4][3] == 'R'){return 'R';}
if (matrix[4][1] == 'B' and matrix[4][2] == 'B' and matrix[4][3] == 'B' and matrix[4][4] == 'B'){return 'B';}
if (matrix[4][1] == 'R' and matrix[4][2] == 'R' and matrix[4][3] == 'R' and matrix[4][4] == 'R'){return 'R';}
if (matrix[4][2] == 'B' and matrix[4][3] == 'B' and matrix[4][4] == 'B' and matrix[4][5] == 'B'){return 'B';}
if (matrix[4][2] == 'R' and matrix[4][3] == 'R' and matrix[4][4] == 'R' and matrix[4][5] == 'R'){return 'R';}
if (matrix[5][0] == 'B' and matrix[5][1] == 'B' and matrix[5][2] == 'B' and matrix[5][3] == 'B'){return 'B';}
if (matrix[5][0] == 'R' and matrix[5][1] == 'R' and matrix[5][2] == 'R' and matrix[5][3] == 'R'){return 'R';}
if (matrix[5][1] == 'B' and matrix[5][2] == 'B' and matrix[5][3] == 'B' and matrix[5][4] == 'B'){return 'B';}
if (matrix[5][1] == 'R' and matrix[5][2] == 'R' and matrix[5][3] == 'R' and matrix[5][4] == 'R'){return 'R';}
if (matrix[5][2] == 'B' and matrix[5][3] == 'B' and matrix[5][4] == 'B' and matrix[5][5] == 'B'){return 'B';}
if (matrix[5][2] == 'R' and matrix[5][3] == 'R' and matrix[5][4] == 'R' and matrix[5][5] == 'R'){return 'R';}
if (matrix[6][0] == 'B' and matrix[6][1] == 'B' and matrix[6][2] == 'B' and matrix[6][3] == 'B'){return 'B';}
if (matrix[6][0] == 'R' and matrix[6][1] == 'R' and matrix[6][2] == 'R' and matrix[6][3] == 'R'){return 'R';}
if (matrix[6][1] == 'B' and matrix[6][2] == 'B' and matrix[6][3] == 'B' and matrix[6][4] == 'B'){return 'B';}
if (matrix[6][1] == 'R' and matrix[6][2] == 'R' and matrix[6][3] == 'R' and matrix[6][4] == 'R'){return 'R';}
if (matrix[6][2] == 'B' and matrix[6][3] == 'B' and matrix[6][4] == 'B' and matrix[6][5] == 'B'){return 'B';}
if (matrix[6][2] == 'R' and matrix[6][3] == 'R' and matrix[6][4] == 'R' and matrix[6][5] == 'R'){return 'R';}
if (matrix[0][3] == 'B' and matrix[1][2] == 'B' and matrix[2][1] == 'B' and matrix[3][0] == 'B'){return 'B';}
if (matrix[0][3] == 'R' and matrix[1][2] == 'R' and matrix[2][1] == 'R' and matrix[3][0] == 'R'){return 'R';}
if (matrix[3][3] == 'B' and matrix[2][2] == 'B' and matrix[1][1] == 'B' and matrix[0][0] == 'B'){return 'B';}
if (matrix[3][3] == 'R' and matrix[2][2] == 'R' and matrix[1][1] == 'R' and matrix[0][0] == 'R'){return 'R';}
if (matrix[0][4] == 'B' and matrix[1][3] == 'B' and matrix[2][2] == 'B' and matrix[3][1] == 'B'){return 'B';}
if (matrix[0][4] == 'R' and matrix[1][3] == 'R' and matrix[2][2] == 'R' and matrix[3][1] == 'R'){return 'R';}
if (matrix[3][4] == 'B' and matrix[2][3] == 'B' and matrix[1][2] == 'B' and matrix[0][1] == 'B'){return 'B';}
if (matrix[3][4] == 'R' and matrix[2][3] == 'R' and matrix[1][2] == 'R' and matrix[0][1] == 'R'){return 'R';}
if (matrix[0][5] == 'B' and matrix[1][4] == 'B' and matrix[2][3] == 'B' and matrix[3][2] == 'B'){return 'B';}
if (matrix[0][5] == 'R' and matrix[1][4] == 'R' and matrix[2][3] == 'R' and matrix[3][2] == 'R'){return 'R';}
if (matrix[3][5] == 'B' and matrix[2][4] == 'B' and matrix[1][3] == 'B' and matrix[0][2] == 'B'){return 'B';}
if (matrix[3][5] == 'R' and matrix[2][4] == 'R' and matrix[1][3] == 'R' and matrix[0][2] == 'R'){return 'R';}
if (matrix[1][3] == 'B' and matrix[2][2] == 'B' and matrix[3][1] == 'B' and matrix[4][0] == 'B'){return 'B';}
if (matrix[1][3] == 'R' and matrix[2][2] == 'R' and matrix[3][1] == 'R' and matrix[4][0] == 'R'){return 'R';}
if (matrix[4][3] == 'B' and matrix[3][2] == 'B' and matrix[2][1] == 'B' and matrix[1][0] == 'B'){return 'B';}
if (matrix[4][3] == 'R' and matrix[3][2] == 'R' and matrix[2][1] == 'R' and matrix[1][0] == 'R'){return 'R';}
if (matrix[1][4] == 'B' and matrix[2][3] == 'B' and matrix[3][2] == 'B' and matrix[4][1] == 'B'){return 'B';}
if (matrix[1][4] == 'R' and matrix[2][3] == 'R' and matrix[3][2] == 'R' and matrix[4][1] == 'R'){return 'R';}
if (matrix[4][4] == 'B' and matrix[3][3] == 'B' and matrix[2][2] == 'B' and matrix[1][1] == 'B'){return 'B';}
if (matrix[4][4] == 'R' and matrix[3][3] == 'R' and matrix[2][2] == 'R' and matrix[1][1] == 'R'){return 'R';}
if (matrix[1][5] == 'B' and matrix[2][4] == 'B' and matrix[3][3] == 'B' and matrix[4][2] == 'B'){return 'B';}
if (matrix[1][5] == 'R' and matrix[2][4] == 'R' and matrix[3][3] == 'R' and matrix[4][2] == 'R'){return 'R';}
if (matrix[4][5] == 'B' and matrix[3][4] == 'B' and matrix[2][3] == 'B' and matrix[1][2] == 'B'){return 'B';}
if (matrix[4][5] == 'R' and matrix[3][4] == 'R' and matrix[2][3] == 'R' and matrix[1][2] == 'R'){return 'R';}
if (matrix[2][3] == 'B' and matrix[3][2] == 'B' and matrix[4][1] == 'B' and matrix[5][0] == 'B'){return 'B';}
if (matrix[2][3] == 'R' and matrix[3][2] == 'R' and matrix[4][1] == 'R' and matrix[5][0] == 'R'){return 'R';}
if (matrix[5][3] == 'B' and matrix[4][2] == 'B' and matrix[3][1] == 'B' and matrix[2][0] == 'B'){return 'B';}
if (matrix[5][3] == 'R' and matrix[4][2] == 'R' and matrix[3][1] == 'R' and matrix[2][0] == 'R'){return 'R';}
if (matrix[2][4] == 'B' and matrix[3][3] == 'B' and matrix[4][2] == 'B' and matrix[5][1] == 'B'){return 'B';}
if (matrix[2][4] == 'R' and matrix[3][3] == 'R' and matrix[4][2] == 'R' and matrix[5][1] == 'R'){return 'R';}
if (matrix[5][4] == 'B' and matrix[4][3] == 'B' and matrix[3][2] == 'B' and matrix[2][1] == 'B'){return 'B';}
if (matrix[5][4] == 'R' and matrix[4][3] == 'R' and matrix[3][2] == 'R' and matrix[2][1] == 'R'){return 'R';}
if (matrix[2][5] == 'B' and matrix[3][4] == 'B' and matrix[4][3] == 'B' and matrix[5][2] == 'B'){return 'B';}
if (matrix[2][5] == 'R' and matrix[3][4] == 'R' and matrix[4][3] == 'R' and matrix[5][2] == 'R'){return 'R';}
if (matrix[5][5] == 'B' and matrix[4][4] == 'B' and matrix[3][3] == 'B' and matrix[2][2] == 'B'){return 'B';}
if (matrix[5][5] == 'R' and matrix[4][4] == 'R' and matrix[3][3] == 'R' and matrix[2][2] == 'R'){return 'R';}
if (matrix[3][3] == 'B' and matrix[4][2] == 'B' and matrix[5][1] == 'B' and matrix[6][0] == 'B'){return 'B';}
if (matrix[3][3] == 'R' and matrix[4][2] == 'R' and matrix[5][1] == 'R' and matrix[6][0] == 'R'){return 'R';}
if (matrix[6][3] == 'B' and matrix[5][2] == 'B' and matrix[4][1] == 'B' and matrix[3][0] == 'B'){return 'B';}
if (matrix[6][3] == 'R' and matrix[5][2] == 'R' and matrix[4][1] == 'R' and matrix[3][0] == 'R'){return 'R';}
if (matrix[3][4] == 'B' and matrix[4][3] == 'B' and matrix[5][2] == 'B' and matrix[6][1] == 'B'){return 'B';}
if (matrix[3][4] == 'R' and matrix[4][3] == 'R' and matrix[5][2] == 'R' and matrix[6][1] == 'R'){return 'R';}
if (matrix[6][4] == 'B' and matrix[5][3] == 'B' and matrix[4][2] == 'B' and matrix[3][1] == 'B'){return 'B';}
if (matrix[6][4] == 'R' and matrix[5][3] == 'R' and matrix[4][2] == 'R' and matrix[3][1] == 'R'){return 'R';}
if (matrix[3][5] == 'B' and matrix[4][4] == 'B' and matrix[5][3] == 'B' and matrix[6][2] == 'B'){return 'B';}
if (matrix[3][5] == 'R' and matrix[4][4] == 'R' and matrix[5][3] == 'R' and matrix[6][2] == 'R'){return 'R';}
if (matrix[6][5] == 'B' and matrix[5][4] == 'B' and matrix[4][3] == 'B' and matrix[3][2] == 'B'){return 'B';}
if (matrix[6][5] == 'R' and matrix[5][4] == 'R' and matrix[4][3] == 'R' and matrix[3][2] == 'R'){return 'R';}
return null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12618 次 |
| 最近记录: |