gpt4 book ai didi

java - 双(象棋)计时器

转载 作者:行者123 更新时间:2023-12-02 02:12:11 25 4
gpt4 key购买 nike

我正在考虑制作一个 Android 应用程序来支持我的游戏,但我找不到有关如何操作的信息。以下是应用程序说明:

应用程序应该有两个计时器(都设置为 x 分钟)。当第一个玩家开始轮到他时(通过单击按钮),他的时间开始耗尽。当第一个玩家采取行动时,他应该点击他的时间来停止它,然后第二个玩家开始他的回合。

现在,我找不到解决方案 - 当玩家一轮到他时,他失去的时间应该传递给另一个玩家的计时器。

示例:两名玩家都以 5 分钟计时器开始。如果玩家一需要 30 秒才轮到他,那么他的时间应该减少到 04:30,此时他点击了计时器。在此期间,他每损失一秒,另一位玩家就会在计时器上获得时间,因此在他的回合开始时,他的时间是 05:30。时间来回流逝,计时器耗尽的玩家输掉游戏。

知道如何做到这一点吗?

我仍然坚持如何制作它的想法,所以我没有代码可以分享。

感谢大家的回答以及对我的帮助,如果您有我没有提到的问题,我很乐意回答。

最佳答案

首先,每次单击按钮时,您都需要实例化 CountDownTimer 类。

请参阅此处:https://developer.android.com/reference/android/os/CountDownTimer.html

您有两个参数long millisInFuturelong countDownInterval

开始之前,您需要创建两个全局变量,一个用于第一个玩家,一个用于第二个玩家,如下所示:

long firstPlayerRemainingTime  = 5 * 60 * 1000; // start time 5 minutes 
long secondPlayerRemainingTime = 5 * 60 * 1000;
long limitedTime = 30 * 1000; // 30 seconds
CountDownTimer mCountDownTimer;

现在我们来到了最重要的部分,那就是 onClickListener 方法内部的逻辑

我不知道是有两个按钮还是一个按钮,但我会选择两个按钮:

btnFirstPlayer.setTag(1); // start timer
btnFirstPlayer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (btnFirstPlayer.getTag() == 1) {
startTimer();
} else {
stopTimer();
}
});

private void startTimer() {
long startTime = firstPlayerRemainingTime;

btnFirstPlayer.setTag(2); // stop timer
btnFirstPlayer.setText("Stop");

mCountDownTimer = new CountDownTimer(firstPlayerRemainingTime, 1000) {
public void onTick(long millisUntilFinished) {
firstPlayerRemainingTime = millisUntilFinished;
tvPlayerOneTimer.setText("" + firstPlayerRemainingTime / 1000)

// Here you would like to check if 30 seconds has passed
if ((startTime / 1000) - (limitedTime / 1000)
== (firstPlayerRemainingTime / 1000)) {
stopTimer();
}

// Here you would like to increase the time of the second player
secondPlayerRemainingTime = ++1000;
}

public void onFinish() {
mTextField.setText("done!");
}

}.start();
}
}

private void stopTimer() {
btnFirstPlayer.setTag(1);
btnFirstPlayer.setText("Start");
mCountDownTimer.cancel();

// I guess here starts second player move

}

同样的逻辑也适用于第二个玩家。如果这对您有帮助或者我是否需要解释任何内容,请告诉我。

关于java - 双(象棋)计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49851110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com