c# -切换数组元素90°
本文关键字:#176 数组元素 | 更新日期: 2023-09-27 18:18:19
我正在尝试制作一款俄罗斯方块游戏。到目前为止,除了旋转函数,我已经完成了所有的工作。总结一下。计划是将以下数组元素旋转90°:(在本例中为bool数组)
. . . . . . . . . .
. . x . . . . . . .
. . x x . ====== > . . x x .
. . . x . . x x . .
. . . . . . . . . .
我写了下面的代码:
private bool[,] rotateGrid(bool[,] _grid)
{
bool[,] g = new bool[5, 5];
for(int i=0; i<5; i++)
{
bool[] row = new bool[5];
for(int j=4; j>=0; j--)
{
int jInvert = 4 - j;
row[jInvert] = grid[j, i];
}
for(int j=0; j<5; j++)
{
grid[i, j] = row[j];
}
}
return g;
}
如果我用一个完整数组调用这个函数,它会返回一个空数组。
为什么?
My Code in java,只需将其转换为c#。如果您想做得更好,可以使用lambda表达式。使用lambda表达式,您可以在一行代码中完成此操作:)
/*rotates a block 90* right*/
private static boolean[][] rotateBlock(boolean[][] block){
boolean [][] temp;
int longestRow = longestRow(block);
temp = new boolean[longestRow][block.length];
int counter = 0;
for(int i = 0; i < longestRow;i++){
for(int j = 0; j < block.length;j++){
if(i < block[j].length){
if(block[j][i]){
temp[i][counter] = true;
counter++;
}
}
else{
//null = false
temp[i][counter] = false;
counter++;
}
}
counter = 0;
}
return temp;
}