gpt4 book ai didi

c - C 中的俄罗斯方 block 函数向右移动

转载 作者:行者123 更新时间:2023-11-30 19:48:51 25 4
gpt4 key购买 nike

目前我有向左移动的功能

int8_t move_piece_left(piece_type* piecePtr) {

int8_t row;
/*
* Check if piece is all the way to the left If so, return.
* (Remember, column number is based on bit position - higher
* numbers to the left.
*/
if(piecePtr->right_column + piecePtr->x_dimension >= BOARD_WIDTH) {
return 0;
}

/*
* Make the move.
*/
for(row=0; row < piecePtr->y_dimension; row++) {
piecePtr->rowdata[row] <<= 1;
}
piecePtr->right_column++;
return 1;

}

我认为对于向右移动这将是一个简单的改变,我确信它是,但我不认为它进展得那么顺利。所以显然我需要检查这件作品是否一直在右边而不是左边,也许它是

piecePtr->right_column--;

向右移动,因为左是++ 右是——我认为?

我在这里和那里尝试了一些更改,但没有太多效果,所以我开始认为我没有完全理解代码。

有人可以更深入地解释代码在做什么吗(我可以阅读我想要更深入解释的评论)。

编辑有适当的检查以便向左或向右移动。例如检查是否有一 block

最佳答案

rowData 似乎是这里的关键:它似乎以二进制形式包含该片段的所有像素(每行一个整数)。因此,如果将片段向右移动,除了更改测试和增量之外,还必须向右而不是向左移动其值。

另请注意,此代码不会以这种方式检查现有片段:它仅检查边界。

移动代码应该是这样的:

int8_t move_piece_right(piece_type* piecePtr) {

int8_t row;
/*
* Check if piece is all the way to the right If so, return.
* (Remember, column number is based on bit position - higher
* numbers to the left.
*/
if(piecePtr->right_column == 0) {
return 0;
}

/*
* Make the move.
*/
for(row=0; row < piecePtr->y_dimension; row++) {
piecePtr->rowdata[row] >>= 1;
}
piecePtr->right_column--;
return 1;
}

关于c - C 中的俄罗斯方 block 函数向右移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16581323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com