2016-05-07 3 views
0

私は新しいプログラマーです。私はJavaでコンソール/テキスト戦略ゲームを作っています。Java - プログラムを停止しないでx秒ごとに変数に+ 1を追加する方法は?

私のプログラムはあなたがwhile(真)スイッチの場合と同じように機能し、1つを押すと木を集め、石を2つ選ぶとオプションがあるので、木、石、食べ物が集まるようにしたい自動的に、私は

、それは任意のヘルプを歓迎します作り方見当がつかない簡略化されたコードは、基本的に私が何をしたいのか、この

while (true) { 
     Scanner in = new Scanner(System.in); 
     String volbačlověk = in.nextLine(); 

     switch (volbačlověk) { 
      case "1": 
       wood = wood + 1; 
       break; 
      case "2": 
       stone = stone + 1; 
       break; 
      case "3": 
       food = food + 1; 
       break; 
     } 
    } 

のように見える場合1,2,3が自動的にすべての行われるようにすることですx秒であるので、自動的にこれらのマテリアルを収集するように動作し、スイッチの場合にはビルオプションがあります。

私はプログラミングの初心者ですから、具体的にしてください私は恥じることはありません私は何とかそれを学ぶ必要があります。

+0

_自動的に収集しますか?ちなみに、 'wood = wood + 1'は' wood ++ 'と書かれています。 –

+0

[Timer](https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html) – mks

+0

を使用してください。これは毎秒実行されるため、どのように停止する予定ですか?無限ループ –

答えて

2

あなたは自動的にリソースの増加を達成するためにTimerクラスを使用することができます。

Timer timer = new Timer(); 
    timer.schedule(new TimerTask() { 

     @Override 
     public void run() { 
      // Increase value here... 
     } 
    }, 0, 1000); // 1000 = 1 Sek. 

も参照してくださいここに: How to use Timer class to call a method, do something, reset timer, repeat?

+0

「タイマー」は本当に賞賛されたアプローチではありません。 'ScheduleExecutorService'を使います。 –

+0

私はこの1つを試して、フォーラムのどこかで見つけましたが、私の問題は木のような私の変数を置くことができませんでした、石は、地域の、または多分私はコードの悪い部分にこのタイマーを入れていた? –

0

[OK]を、ので、あなたはすべてのxスイッチからいくつかのランダムなコードを実行したいです入力しないで秒、右ですか?

さて、あなたは新しいプログラマとして、あなたは、スイッチのあなたの範囲まで

をいくつかの乱数を生成することによって、そしてちょうどいくつかの時間のためにあなたのプログラムの睡眠のスレッドを作ることを行うことができ、あなたのコード、 でそうたとえば:

while(true){ 
    Random random = new Random(); 
    switch(random.nextInt(3)){ 
    case 1: 
      ////////blah blah 
    break; 
    ......... more alike 
    } 
    Thread.sleep(x seconds here); 
} 
+1

スリープはスレッド全体をブロックします... –

+0

実際に彼が新しいプログラマであるように、私はワーカーやスレッドについて話していれば、彼に厳しくなるかもしれません。 –

+0

ありがとう、私はすでに睡眠を使用する方法を知っていますが、それは私が欲しい解決策ではない。 –

1

これを行うには高度なものは必要ありません。 あなたが持っている場合、十分である:

  1. 時点での資源(木材、石材など)の量T0
  2. リソースごとの成長率、単位時間あたりの木のすなわち非常に多くのユニット。
  3. その後、あなたはその時点でリソースを計算することができ

をーt0実際の時間差。

+0

これについてもっと教えていただけますか? Iamは時間を含むプログラミングで実際に経験していないので、 –

+0

@VáclavStýblo木材は毎回2単位ずつ増加するとしましょう。ある時点で3つの木材があるとします。 5時間後のユニット数は何台ですか?それは確かに13です。これを知るには、「木」変数を1秒おきに増やす必要はありません。 – Ingo

関連する問題