假设我正在使用Java的Swing开发一个类似于国际象棋的程序。我添加了一个MouseListener来处理用户输入。为了移动棋子,用户必须点击有效的棋子,然后再点击有效的位置。在一回合中,跟踪这2次鼠标点击的最佳方法是什么?我考虑使用某种变量来记录是否是回合的第一次或第二次点击。
enum State { TURN_P1, TURN_P2, MAIN, PAUSE, ... }
public State gameState
...
public void mouseClicked(MouseEvent e)
{
if (gameState == TURN_P1)
{
...
if (move_is_legal and so on)
gameState = TURN_P2;
}
else if (gameState == TURN_P2)
{
...
if (move_is_legal and so on)
gameState = TURN_P1;
}
}
抱歉,我回答得太快了。是的,需要一个结构来编码点击位置,查找介于其中的运动事件,然后记录第二个点击。它应该有一个初始化状态、一个接受状态,并且可能还需要记录一个中止状态(例如按下 ESC 键)。