我正在学习C++和SFML,试图创建一个国际象棋程序,我可以在棋盘上拖放棋子。我通过检查鼠标左键是否关闭以及鼠标是否在一块上来拖动它们。如果这两个都是真的,我将该部分的位置更改为鼠标的位置。我该如何参考一个函数?
唯一的问题是,当我真的很快拖动这些碎片时,因此让我的鼠标停下来,但没有徘徊在碎片上。
我想解决这个使用类似:
sf::Sprite pieceSelected;
sf::Sprite Pawn;
bool selected;
...
if (LeftButtonDown && isMouseOver(Pawn,Input)) {
pieceSelected=&Pawn;
selected = true;
}
if (LeftButtonDown && selected)
pieceSelected.SetPosition(MouseX - (XSizeSprite/2), MouseY - (YSizeSprite/2));
else
selected=false;
App.Draw(Pawn);
我想 'pieceSelected' 来,这样,当我移动“pieceSelected被引用 '典当' “我实际上是在同时移动”典当“。
EDIT
我固定这通过改变
sf:Sprite pieceSelected;
到
sf::Sprite * pieceSelected;
和
pieceSelected.SetPosition
到
pieceSelected->SetPosition
你可能会想要一个指针,看看你如何改变棋子,有时候根本没有棋子。 – chris 2013-04-07 21:37:26
'sf ::雪碧典当; sf :: Sprite&pieceSelected = Pawn;' – lapk 2013-04-07 21:37:41
'if(LeftButtonDown && selected)'的'else'部分不是必需的。 – didierc 2013-04-07 21:47:29