如何使用开关来偏移 for 循环的开始?
How do I use a switch to offset the start of a for loop?
我正在尝试制作跳棋游戏,现在我正在构建棋盘。棋盘是一个二维整数数组,我正在根据棋子的位置进行更改。
// 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 = ""[k];
k = k[""];
k = 1 / (1 + k);
棋盘格单元格也可以直接初始化为0
和1
为:
Board_Squares[i][j] = (i + j) & 1;
我正在尝试制作跳棋游戏,现在我正在构建棋盘。棋盘是一个二维整数数组,我正在根据棋子的位置进行更改。
// 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 = ""[k];
k = k[""];
k = 1 / (1 + k);
棋盘格单元格也可以直接初始化为0
和1
为:
Board_Squares[i][j] = (i + j) & 1;