我正在学习机器人,我想制作一款“终极”顽皮和十字架的游戏。这是你有一块大板,你必须连续5。当剩余空间不足以连续5次时,游戏结束。什么是最有效的方式来为玩家的分数添加一个点5.测试每个组合对3x3网格都很好,但如果它像20x20,它可能会成为一个问题。我现在不会担心AI。
更新
我认为你没有得到我想要达到的目标。并且堆栈溢出不会让新用户发布图像!所以这是一个ASCII描述:
HXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHXHHHHHHHHHXOOOXHHHHHHHHHHHHHHH
HHHHHXHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHOOOOOHHHHHHHHHHHXHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
这可以解释吗?
我也不想仅限于两名球员。
答案 0 :(得分:0)
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并且没有人赢,那么绘制