You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用矩阵判断井字棋游戏的获胜方?

井字棋获胜判断函数修正方案

你的现有代码存在几个关键问题,导致无法正确判断玩家是否获胜:

  • 循环范围错误:仅遍历到索引1,无法覆盖3x3矩阵的所有行、列和对角线
  • 逻辑判断错误:用Or连接的条件会导致只要有一个元素不相等就返回False,但实际应检查某一行/列/对角线的所有元素是否全等于目标值(valeur)
  • 提前返回问题:第一次循环就直接返回结果,未检查完所有可能的获胜情况

正确的判断逻辑需要覆盖三种获胜场景:

  • 任意一行的三个元素全为目标值
  • 任意一列的三个元素全为目标值
  • 两条对角线的三个元素全为目标值

以下是修正后的函数代码:

Dim matriceDuJeu(2, 2) As Integer
'...
Function verifierSiJoueurGagne(valeur As Integer) As Boolean
    ' 检查所有行
    For i = 0 To 2
        If matriceDuJeu(i, 0) = valeur And matriceDuJeu(i, 1) = valeur And matriceDuJeu(i, 2) = valeur Then
            Return True
        End If
    Next
    
    ' 检查所有列
    For j = 0 To 2
        If matriceDuJeu(0, j) = valeur And matriceDuJeu(1, j) = valeur And matriceDuJeu(2, j) = valeur Then
            Return True
        End If
    Next
    
    ' 检查主对角线(左上到右下)
    If matriceDuJeu(0, 0) = valeur And matriceDuJeu(1, 1) = valeur And matriceDuJeu(2, 2) = valeur Then
        Return True
    End If
    
    ' 检查副对角线(右上到左下)
    If matriceDuJeu(0, 2) = valeur And matriceDuJeu(1, 1) = valeur And matriceDuJeu(2, 0) = valeur Then
        Return True
    End If
    
    ' 所有情况都不满足,返回False
    Return False
End Function

代码说明

  • 优先遍历每一行,判断该行三个元素是否全匹配目标玩家的标记(1代表X,-1代表O)
  • 接着遍历每一列执行相同判断
  • 最后检查两条对角线的元素是否符合获胜条件
  • 只要任意一种场景满足,立即返回True;全部检查完毕都不满足则返回False

内容的提问来源于stack exchange,提问作者Moâtaz Belkouadssi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:30:53