问题描述
我正在尝试制作一个跳棋游戏,现在我正在制作棋盘。棋盘是一个二维整数数组,我根据棋子的位置进行更改。
// Sets up Red Pieces
int k = 0;
for (i = 0; i < 3; i++)
{
for (j = k; j < 8; j += 2)
{
// Red piece is on square at coords [i][j]
Board_Squares[i][j] += 2;
}
printf("\n");
// k starts at 0,and in switch should alternate between 1 and 0,switch (k)
{
case 0:
k = 1;
case 1:
k = 0;
}
}
然而,这段代码只给了我这个:
0 2 0 2 0 2 0
0 2 0 2 0 2 0
0 2 0 2 0 2 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
任何帮助都是愚蠢的。警告:我可能很笨。
另外,在这里使用 switch 语句是否正确?
解决方法
您代码中的问题来自于缺少 break
语句:case
的代码会贯穿到下一个案例的代码中。
这样修改:
switch (k) {
case 0:
k = 1;
break;
case 1:
k = 0;
break;
}
同样的切换效果可以用简单的表达式来实现:
k = 1 - k;
k ^= 1;
k = !k;
k = k == 0;
或者一些更复杂和晦涩的:
k = !!!k;
k = k ? 0 : 1;
k = (k + 1) & 1;
k = "\1"[k];
k = k["\1"];
k = 1 / (1 + k);
棋盘格也可以直接初始化为 0
和 1
为:
Board_Squares[i][j] = (i + j) & 1;