所以假设我正在使用Java的Swing开发一个类似国际象棋的程序.我添加了一个MouseListener来处理用户输入.要进行移动,用户必须单击有效的部分,然后单击有效的位置.在转弯时跟踪2次鼠标点击的最佳方法是什么?我正在考虑使用某种变量来记录转弯的第一次点击或第二次点击.
你必须区分两种游戏状态,使用变量就可以了.你也可以按照NomeN评论的建议来思考,并通过交换它们来使用两个不同的监听器.
你的情况很简单,但总的来说,你用来处理这些东西的形式主义是一种有限的状态机,描述你的游戏状态以及如何从一个传递到另一个.
在这种情况下,你可以有一些状态,如:
然后你决定如何以及何时从一个州传递到另一个州
这只是为了给你一个想法,所以例如你MouseListener可以关心状态:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2005 次 |
| 最近记录: |