我正在尝试交换到类的对象。这是一个类似http://www.neos-guide.org/sites/default/files/Fifteen_puzzle.png的益智游戏。我正在使用std :: swap但它不起作用。这是代码:
if (puzzle[i-1][j].getNum() == 16) {
std::swap(puzzle[i][j], puzzle[i-1][j]);
}
else if (puzzle[i+1][j].getNum() == 16) {
std::swap(puzzle[i+1][j], puzzle[i][j]);
}
else if (puzzle[i][j+1].getNum() == 16 && j != 3) {
std::swap(puzzle[i][j+1], puzzle[i][j]);
}
else if (puzzle[i][j-1].getNum() == 16 && j != 0) {
std::swap(puzzle[i][j-1], puzzle[i][j]);
}
这是我的谜题课:
class Puzzle {
private:
int x;
int y;
int num;
ALLEGRO_FONT *font;
public:
Puzzle();
~Puzzle();
void init(int posx, int posy, ALLEGRO_FONT *font);
void setNum(int num);
void draw();
void setXY(int x, int y);
int getX();
int getY();
int getNum();
bool click(int mx, int my);
};
我已尝试在2D数组上使用std :: swap,在同一类的两个对象上,在1D对象数组和2D对象数组上。有效。它只是在这个实现中不起作用。我还试图评论ALLEGRO_FONT因为我认为存在问题。但一切都没有改变。 cplusplus.com说我需要加入<algorithm>
或<utility>
。我试过两个(不是在同一时间),但它没有用。有什么建议?谢谢:))