現在、私は左に移動する機能を持っています
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--;
左が ++ 右なので、右に移動するには -- だと思いますか?
あちこちでいくつかの変更を試みましたが、あまりうまくいかなかったので、コードを完全に理解していないと思い始めています。
誰かがコードが何をしているのかをもっと深く説明できますか (もっと詳細な説明が欲しかったコメントを読むことができます)。
EDIT左または右に移動するための適切なチェックがあります。たとえば、ピースがあるかどうかを確認する