我正在创建一个游戏,该游戏使用“能量点”作为货币来执行游戏中的某些动作(您必须花费能量点来完成某些任务)。当玩家达到零能量点或没有足够的能量来执行某项任务时,我应该等待几个小时才能继续,或者观看视频以获取一些快速点。
它应该具有以下功能:
我使用以下代码创建了PopupDialog。如果条件为showPopupDialog()
,自然会调用函数energyCost < energyPoints
。
public void showPopupDialog(){
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("Not Enough Energy!");
dialog.setMessage("You don't have enough Energy Points to do this!
Would you like to watch a video to get more Energy?");
((AlertDialog.Builder) dialog).setPositiveButton("Watch", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//ad plays here
energyPoints = energyPoints + 500;
ep.setText(energyPoints+"");
}
});
((AlertDialog.Builder) dialog).setNegativeButton("Wait", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
energyPoints = energyPoints+500;
ep.setText(energyPoints+"");
}
}.start();
}
});
dialog.show();
}
我想知道如何进行以下修改:
即使该应用已关闭,或者我离开了活动,倒数计时器也应该持续。这样,当我在4个小时后回来时,一些能量点就会恢复。
当当前计时器正在进行时,您无法单击“等待”(因此触发另一个计时器)。您必须等待分配的时间,然后才能再次单击它。
等待结束后,游戏会发送一条通知,让玩家知道会继续。
答案 0 :(得分:0)
准确地说,最简单的方法是服务器/客户端交互,因此您不能仅仅通过将时间设置为4h来操纵时间。
如果您可以进行操作-只需读取/写入外部文件中设置的最新时间即可。
答案 1 :(得分:0)
在不了解很多代码的情况下,我将提出一个概念。
将计时器本身用于演示目的,但出于真实的工作逻辑,请创建“最后添加的时间戳”之类的时间戳。
这将使您每次需要使用时,可以显示或获取实际点,获取最后的时间戳,将其与当前时间进行比较,然后采取相应的措施。例如,我检查最后一个,比较时,相差3h。如果每10分钟我有5分,那么我将获得3 * 60/10 * 5 =总得分。
这将使您只关注时间已过去的事实,而不是创建计时器。
然后,当应用程序关闭时,您将存储上一个时间戳,并在重新打开时再次进行比较,并采取相应的措施。