私は現在アンドロイドのクイズゲームを開発中です。 プレイヤーは最初に特定の数の「命」を持ち、質問に対する答えが間違っているときは、彼は彼の「命」を失います。 数字がゼロになると、もう一度再生できるようになるまでに時間を待たなければなりません。 ライフカウントがゼロになるたびに、ユーザーが待たなければならない時間に加えて、その時間を節約するというアイデアを思いつきました。 次に、私は現在の時刻と保存された時刻との差異をチェックします。 しかし、ユーザーが日付を変更した場合、彼はこの制限を渡します。彼が「生きる」(Androidゲーム)を超えた場合、プレイするのを待つ時間を管理する
これを防止するためのより良いアイデアはありますか?
コード:
private void heartsManager() {
falseB.setEnabled(false);
trueB.setEnabled(false);
heartsCount = Utils.getIntFromPreferences(this,5,"Hearts","SHARED_SAVED_DATA");
long TimeToUnlock = Utils.getLongFromPreferences(this,0 ,"Saved_Time", "SHARED_SAVED_DATA");
Date curDate = new Date();
long currentTime = curDate.getTime();
if(currentTime<TimeToUnlock) {
timeDifference = (TimeToUnlock - currentTime);
}else{
timeDifference=0;
}
if(heartsCount<1&&levelCompleted==levelID) {
timeCountDown();
}else {
hourGlassToHeart.setImageResource(R.drawable.heart);
hearts.setText(String.valueOf(heartsCount));
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
falseB.setEnabled(true);
trueB.setEnabled(true);
}
}, 1500);
}
}
private void timeCountDown(){
new CountDownTimer(timeDifference, 1000) {
public void onTick(long millisUntilFinished) {
hearts.setText(String.format("%02d:%02d",(millisUntilFinished/600000),(millisUntilFinished % 60000/1000)));
hourGlassToHeart.setImageResource(R.drawable.hourglass);
}
public void onFinish(){
hourGlassToHeart.setImageResource(R.drawable.heart);
falseB.setEnabled(true);
trueB.setEnabled(true);
heartsCount=heartsCount+1;
hearts.setText(String.valueOf(heartsCount));
}
}.start();
}
ありがとうございます。私はまた、インターネット時間に依存する以外はこれに対する解決策がないと考えました。 BroadcastReceverは今、大丈夫です –