- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在考虑制作一个 Android 应用程序来支持我的游戏,但我找不到有关如何操作的信息。以下是应用程序说明:
应用程序应该有两个计时器(都设置为 x 分钟)。当第一个玩家开始轮到他时(通过单击按钮),他的时间开始耗尽。当第一个玩家采取行动时,他应该点击他的时间来停止它,然后第二个玩家开始他的回合。
现在,我找不到解决方案 - 当玩家一轮到他时,他失去的时间应该传递给另一个玩家的计时器。
示例:两名玩家都以 5 分钟计时器开始。如果玩家一需要 30 秒才轮到他,那么他的时间应该减少到 04:30,此时他点击了计时器。在此期间,他每损失一秒,另一位玩家就会在计时器上获得时间,因此在他的回合开始时,他的时间是 05:30。时间来回流逝,计时器耗尽的玩家输掉游戏。
知道如何做到这一点吗?
我仍然坚持如何制作它的想法,所以我没有代码可以分享。
感谢大家的回答以及对我的帮助,如果您有我没有提到的问题,我很乐意回答。
最佳答案
首先,每次单击按钮时,您都需要实例化 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
}
同样的逻辑也适用于第二个玩家。如果这对您有帮助或者我是否需要解释任何内容,请告诉我。
关于java - 双(象棋)计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49851110/
我正在考虑制作一个 Android 应用程序来支持我的游戏,但我找不到有关如何操作的信息。以下是应用程序说明: 应用程序应该有两个计时器(都设置为 x 分钟)。当第一个玩家开始轮到他时(通过单击按钮)
我知道这很业余,但我有一个任务是绘制一个 8x8 的国际象棋 table ,旁边有通常的“A B C ...”“1 2 3”文字。我必须使用 2 个 for 循环,但我被卡住了,我只能显示一行 8 条
我是一名优秀的程序员,十分优秀!