java五子棋胜负判定_五子棋的判断输赢规则—Java编程(简单优化完整版)

这是一个Java实现的五子棋游戏胜负判断函数,通过遍历棋盘的水平、垂直、对角线四个方向,检查是否存在连续五个相同颜色的棋子,以确定游戏的胜负。函数首先从给定的棋盘位置开始,分别向左右、上下、左上右下、右上左下四个方向遍历,如果找到连续五个相同颜色的棋子,立即返回true,表示游戏结束。若所有方向遍历完未找到,则返回false,表示游戏继续。
摘要由CSDN通过智能技术生成

1 public boolean isWon2(int x, int y, char color) {

2         int count = 1;      //本身一点为 1

3         int posX = 0;

4         int posY = 0;

5         /**判断水平方向上的胜负

6         /* 将水平方向以传入的点x上的y轴作为分隔线分为两部分

7          * 先向左边遍历,判断到的相同的连续的点  count++

8          */

9         for(posX = x - 1; posX > 0 ; posX--) {

10             if (board[posX][y] == color) {

11                 count++;

12                 if (count >= 5) {

13                     return true;

14                 }

15             }else {

16                 break;

17             }

18         }    //向右边遍历

19         for(posX = x + 1; posX <= 15; posX++) {

20             if (board[posX][y] == color) {

21                 count++;

22                 if (count >= 5) {

23                     return true;

24                 }

25             }else {

26                 break;

27             }

28         }

29         /**判断垂直方向上的胜负

30         /* 将垂直方向以传入的点y上的x轴作为分隔线分为两部分

31          * 先向上遍历,判断到的相同的连续的点  count++

32          */

33         for(posY = y - 1; posY > 0; posY--) {

34             if (board[x][posY] == color) {

35                 count++;

36                 if (count >= 5) {

37                     return true;

38                 }

39             }else {

40                 break;

41             }

42         }//向下遍历

43         for(posY = y + 1; posY <= 15; posY++) {

44             if (board[x][posY] == color) {

45                 count++;

46                 if (count >= 5) {

47                     return true;

48                 }

49             }else {

50                 break;

51             }

52         }

53         /**判断左上右下方向上的胜负

54          * 以坐标点为分割线,将棋盘分为左右两个等腰三角形

55          * 先判断左边的

56          */

57         for(posX = x - 1, posY = y - 1; posX > 0 && posY > 0; posX--, posY--) {

58             if (board[posX][posY] == color) {

59                 count++;

60                 if (count >= 5) {

61                     count = 1;

62                     return true;

63                 }

64             }else {

65                 break;

66             }

67         }//判断右边的

68         for(posX = x + 1, posY = y + 1; posX <= 15 && posY <= 15; posX++, posY++) {

69             if (board[posX][posY] == color) {

70                 count++;

71                 if (count >= 5) {

72                     count = 1;

73                     return true;

74                 }

75             }else {

76                 break;

77             }

78         }

79         /**判断右下左下方向上的胜负

80          * 以坐标点为分割线,将棋盘分为左右两个等腰三角形

81          * 先判断左边的

82          */

83         for(posX = x + 1, posY = y - 1; posX <= 15 && posY > 0; posX++, posY--) {

84             if (board[posX][posY] == color) {

85                 count++;

86                 if (count >= 5) {

87                     return true;

88                 }

89             }else {

90                 break;

91             }

92         }//判断右边的

93         for(posX = x - 1, posY = y + 1; posX > 0 && posY <= 15; posX--, posY++) {

94             if (board[posX][posY] == color) {

95                 count++;

96                 if (count >= 5) {

97                     return true;

98                 }

99             }else {

100                 break;

101             }

102         }

103         return false;

104     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值