我正在學習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