こんにちワンツー 運転手さん、グロリア乗ってるんですね
最近かなりはまってるゲームがありまして、subnauticaと言うゲームなのですが、
ゲーム内容は海底探索のサバイバルゲームです。
簡単に説明すると海の中で色々な素材を集めて生き延びると言う感じで潜水艦とかも作れるみたいです。
まだ始めたばかりですが、海底2万マイル目指して潜っていこうと思います。
さてこのシリーズも3回目となりましたか。。。
今回やることは6秒問題とノーツ関係ですね。
早速やっていきましょう!
現在の実装だと
11秒毎に特技発動判定があって特技発動となったらライフが3回復すると言うことになっています。
これを6秒間、回復処理を行うと言う感じにしていきましょう。
import java.util.*;
public class Execute extends TimerTask {
int cycle = 11;
int playTime = 129;
int recovery = 0;
int count = 1;
double probability = 0.77;
long start = System.currentTimeMillis();
Timer t2 = new Timer();
Execute2 exe = new Execute2();
@Override
public void run() {
double d = Math.random();
System.out.println(count + "回目");
// 特技発動判定
if (d < probability) {
// 特技処理
System.out.println("特技発動");
t2.schedule(exe, exe.term * 1000, exe.term * 1000); // 今回追加
recovery += 3;
System.out.println(("現在の総回復量" + recovery));
t2.cancel(); // 今回追加
} else {
System.out.println("失敗");
abilityOn = false;
}
count++;
long end = System.currentTimeMillis();
System.out.println((end - start) / 1000 + "秒経過");
System.out.println("-------------");
}
public int totalRecovery() {
return this.recovery;
}
}
結果としてはエラーが出ました。
2回目
特技発動
Exception in thread "Timer-1" java.lang.IllegalStateException: Timer already cancelled.
at java.util.Timer.sched(Timer.java:397)
at java.util.Timer.schedule(Timer.java:248)
at Execute.run(Execute.java:22)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
TimerTaskを継承したクラスのrunメソッドの中でまたTimerTaskクラスをぶっこんだら行けるか思ったけどダメみたいです。。。
ちょっと時間がないので今回はこの辺で(笑)
僕の中のタイマータスクが狂ってたようです。
ピーパー!
どうかしてるぜ