2017-03-29 7 views
-1

私は現在アンドロイドのクイズゲームを開発中です。 プレイヤーは最初に特定の数の「命」を持ち、質問に対する答えが間違っているときは、彼は彼の「命」を失います。 数字がゼロになると、もう一度再生できるようになるまでに時間を待たなければなりません。 ライフカウントがゼロになるたびに、ユーザーが待たなければならない時間に加えて、その時間を節約するというアイデアを思いつきました。 次に、私は現在の時刻と保存された時刻との差異をチェックします。 しかし、ユーザーが日付を変更した場合、彼はこの制限を渡します。彼が「生きる」(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(); 
} 

答えて

1

は、ユーザが電話機の時間(Intent.ACTION_TIME_CHANGED)を変更した場合を検出BroadcastReceiverを作成します。ユーザーがそれをした場合、自分の現地時間を信用せず、サーバーに正しい時間を問い合わせます。あなたがあなたのサーバーに接続しない限り、あなたがプレイすることを許さないということを意味します。

あなたのマニフェストにBroadcastReceiverを追加するか、それを開始することを忘れないでください。

意見:私は、時間を変更するユーザーの周りの方法はないと思います。平均的なユーザーはこの「ハック」について知らないので、業界のほとんどがそれを受け入れます。

+0

ありがとうございます。私はまた、インターネット時間に依存する以外はこれに対する解決策がないと考えました。 BroadcastReceverは今、大丈夫です –

関連する問題