【发布时间】:2018-03-10 08:58:57
【问题描述】:
我正在尝试创建一个函数来检查是否有胜利(水平)。 所以我在纸上想到了这一点,但无法让它完全发挥作用。我的代码目前有 2 个缺陷。
- 它只检查第一行。之后就不起作用了。
- 第一行中的任何内容。让我们说在点 0,1[X] 0,2[O] 0,3[X] 它会返回一个“真”
这里是代码。
//Public Var
int n = 3;
//How I test if function is True and when. (every time an O or X is placed i do this:)
if (checkwinnner() == true)
{
MessageBox.Show("Someone won.");
}
//Function
public bool checkwinnner()
{
bool bw = true;
for (int r = 0; r < n; r++)
{
bw = true;
if (bar[r, 0].Text != "")
{
for (int c = 1; c < n; c++)
{
if (bar[r, 0].Text != bar[r, c].Text)
{
bw = false; break;
}
}
bw = true;
}
else
{
bw = false;
}
}
return bw;
}
到目前为止,这就是此功能的全部内容。我很忙与它自动取款机。所以。我用bool 来检查是否有人赢了。真的是赢了假的还没有赢。
- N = 高度和范围。它始终是 3x3,但可以通过文本框进行更改。
- R = 行
- C = 列
所以我首先放入了一个 for 循环来循环每一行。 然后我检查文本是否不为空。因为如果它是空的,它不能在水平的 3x3 字段中连续 3 个。之后,我需要为每一列做一个 for 循环。并检查第 1 列中的文本是否等于 2 和 3。
但是我在帖子顶部说明了我的 buggs atm 并想问:
关于我可以解决什么或做错了什么的任何提示。我想使用这段代码,而不是一些 if 语句来检查像 if((0,1 && 0,2 && 0,3) == X || Y) 这样的按钮或类似的东西。因为该字段可以是 4x4 和 5x5 to。
提前谢谢你。我希望我的问题格式正确。
编码愉快。
【问题讨论】:
-
FWIW,你可以做
if (checkwinnner())。不需要== true部分。 -
好吧,假设它总是正方形的……只有行、列和两条对角线。如果在任何给定的行、列或对角线的所有框中都有相同的答案,那么就没有了。
-
直接 - 你初始化 n=0,然后在你的函数中设置一个默认值 true,并且你的循环检查行
-
@Corak:它甚至不会检查它是否会立即失败 0
-
@PaulF - 对,更糟。
标签: c# for-loop if-statement boolean tic-tac-toe