我正在考虑制作一个支持我的游戏的Android应用程序,但我无法找到有关如何操作的信息。这是一个应用说明:
应用程序应该有两个计时器(都设置为x分钟)。当第一个玩家开始转弯时(按一下按钮),他的时间开始耗尽。当第一个玩家移动时,他应该点击他的时间来阻止它,然后玩家2开始转弯。
现在,问题我无法找到解决方案 - 当玩家轮到他的时候,他失去的时间应该传递给其他玩家的计时器。
示例:两位玩家都以5分钟计时器开始。如果一名球员轮到他需要30秒,他的时间应该下降到04:30,此时他点击了他的计时器。在那段时间里,他失去了每一秒,另一位玩家在计时器上获得了时间,所以在他的回合开始时,他的时间是05:30。时间来回,计时器用完的玩家将失去游戏。
知道怎么做吗?
我仍然坚持如何制作它的想法,所以我没有代码可以分享。
谢谢大家的回答,并努力帮助我,如果你有一个我没有涉及的问题,我很乐意回答。
答案 0 :(得分:2)
首先,每次单击按钮时都需要实例化CountDownTimer
类。
有关参考,请点击此处:https://developer.android.com/reference/android/os/CountDownTimer.html
您有两个参数long millisInFuture
,long 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
}
同样的逻辑也适用于第二位玩家。如果这有助于您或我需要解释任何事情,请告诉我。