制作终极女儿和十字架/ tic tac toe的过程

时间:2011-05-19 09:11:10

标签: android tic-tac-toe

我正在学习机器人,我想制作一款“终极”顽皮和十字架的游戏。这是你有一块大板,你必须连续5。当剩余空间不足以连续5次时,游戏结束。什么是最有效的方式来为玩家的分数添加一个点5.测试每个组合对3x3网格都很好,但如果它像20x20,它可能会成为一个问题。我现在不会担心AI。

更新

我认为你没有得到我想要达到的目标。并且堆栈溢出不会让新用户发布图像!所以这是一个ASCII描述:

HXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHXHHHHHHHHHXOOOXHHHHHHHHHHHHHHH
HHHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHOOOOOHHHHHHHHHHHXHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

这可以解释吗?

我也不想仅限于两名球员。

1 个答案:

答案 0 :(得分:0)

  1. 这不是关于算法的问题
  2. 你的学校有数学/算法吗?
  3. 真实答案:
  4. t-t-t的板是一个大小为AxA的整数矩阵,其中A是2N + 1(奇数)

    O是-1,X是1,空是0,numberOfMoves是AxA

    清除矩阵0

    在每个玩家移动后设置O(-1)或X(1)并执行numberOfMoves -

    之后

    在循环中对行进行求和

    代码:

    for(int r = 0; r < A; r++)
    {
      int sum = 0;
      for(int c = 0; c < A; c++)
        sum += matrix[r,c];
      if(sum == A) // it means that you set 1 in every cell in a row
        break;//X wins
      if(sum == -A) // it means that you set -1 in every cell in a row
        break;//O wins    
    }
    

    NXT。之后,您在循环中汇总列

    代码:

    for(int c = 0; c < A; c++)
    {
      int sum = 0;
      for(int r = 0; r < A; r++)
        sum += matrix[r,c];
      if(sum == A)
        break;//X wins
      if(sum == -A)
        break;//O wins   
    }
    

    然后你总结交叉

    int sumLR = 0;
    int sumRL = 0;
    for(int cr = 0; cr < A; cr++)
    {
        sumLR += matrix[cr, cr];
        sumRL += matrix[cr, A - cr - 1];
    }
    if(sumLR == A)
      break;//X wins
    if(sumLR == -A)
      break;//O wins
    if(sumRL == A)
      break;//X wins
    if(sumRL == -A)
      break;//O wins
    

    如果numberOfMoves == 0并且没有人赢,那么绘制