如何在connect four中添加计时器?JAVA
这是一个有点非常规的问题,但我想知道是否有人有任何想法可以在一个连接四人游戏(2名玩家)中实现计时器。我目前有正常游戏的功能代码,但想添加一种方式,让用户有5秒的时间移动,否则计算机将为他们随机移动。有人对如何实现这一目标有什么想法吗?这是我处理每一轮决策的主要功能如何在connect four中添加计时器?JAVA,java,arrays,timer,2d-games,Java,Arrays,Timer,2d Games,这是一个有点非常规的问题,但我想知道是否有人有任何想法可以在一个连接四人游戏(2名玩家)中实现计时器。我目前有正常游戏的功能代码,但想添加一种方式,让用户有5秒的时间移动,否则计算机将为他们随机移动。有人对如何实现这一目标有什么想法吗?这是我处理每一轮决策的主要功能 public void handleAction (int x, int y) { if (gameOver) { JOptionPane.showMessageDialog (this, "
public void handleAction (int x, int y)
{
if (gameOver)
{
JOptionPane.showMessageDialog (this, "Please Select Game...New to start a new game",
"Game Over", JOptionPane.WARNING_MESSAGE);
return;
}
int column = (x - BORDER_SIZE) / SQUARE_SIZE + 1;
int row = findNextRow (board, column);
if (row <= 0)
{
JOptionPane.showMessageDialog (this, "Please Select another Column",
"Column is Full", JOptionPane.WARNING_MESSAGE);
return;
}
animatePiece (currentPlayer, column, row);
board [row] [column] = currentPlayer;
int winner = checkForWinner (board, row, column);
if (winner == BANANA)
{
gameOver = true;
repaint ();
backgroundMusic.stop();
winBanana.play();
JOptionPane.showMessageDialog (this, "Banana Wins!!!",
"GAME OVER", JOptionPane.INFORMATION_MESSAGE);
}
else if (winner == STRAWBERRY)
{
gameOver = true;
repaint ();
backgroundMusic.stop();
winStrawberry.play();
JOptionPane.showMessageDialog (this, "Strawberry Wins!!!",
"GAME OVER", JOptionPane.INFORMATION_MESSAGE);
}
else {
currentPlayer *= -1;
if (currentPlayer == 1)
addStrawberry.play();
else
addBanana.play();
}
currentColumn = 3;
repaint ();
}
公共无效手动删除(int x,int y)
{
如果(游戏结束)
{
JOptionPane.showMessageDialog(这是“请选择游戏…新建以开始新游戏”,
“游戏结束”,作业窗格。警告消息);
返回;
}
int列=(x-边框大小)/正方形大小+1;
int行=findNextRow(板、列);
if(rowjava.lang.System.currentTimeMillis()方法将帮助您实现这一点
要开始在程序中实现这一点,您需要记录每一个新移动点的当前时间
然后,您必须实现一个重复循环来记录从它切换到另一个播放器的那一刻起每秒的时间,我建议在记录当前时间之前使用一个1秒延迟的while循环
然后,在系统进行随机移动之前,您将需要一个if语句来说明计时器何时达到所需的时间。以下是一些基本代码:
long start, end, timeElapsed;
start = System.currentTimeMillis();
while(.....){
Thread.sleep(1000L);
end = System.currentTimeMillis();
timeElapsed = (endstart)/1000;
}
if(timeElapsed == ....){
//enter code here
}
始终包含代码。一些实现计时器的方法可能更好,也可能更差,这取决于程序的组织方式。@MarsAtomic刚刚做的这是一个不完整的解决方案。如果时间流逝,很好,但是如果用户在计时器用完之前移动怎么办?您如何处理?目前,您的计时器总是会用完并在b上移动用户的ehalf。