こんにちワンツー。北に行きたいからドラクエのノリで南に進んでか。
前回に引き続き今回もデレステの回復処理の実装に挑戦してみたいと思います。
軽いノリでやってみましたけど中途半端で終わるのは嫌なのでそれっぽくなるまで続けていこうと思っています。
昔、読んだ本で「Grid」という本があるのですがそれは継続する力という意味らしいです。
中身は覚えてませんが、培ったGrid力を試すチャンスであります。
前回はざっくりいうと2分9秒間、11秒おきに分岐判定を行うというものを作ったつもりでしたが、
なんかうまく動いてないような気がしたのでその辺を調査し、修正していこうと思います。
まず、TimerクラスのscheduleAtFixedRateを調べてみると
第一引数に処理、第二引数が初回の待機時間、第三引数がその後の待機時間。
最初にタメがあるみたいですね。パワータイプの大技でもするんですか。
なんかこれは輪唱するようなイメージなので、今回はscheduleメソッドで十分なはずなので
scheduleで行きます。
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();
@Override
public void run() {
double d = Math.random();
System.out.println(count + "回目");
// 特技発動判定
if (d < probability) {
// 特技処理
System.out.println("特技発動");
recovery = recovery + 3;
System.out.println(("現在の総回復量" + recovery));
} else {
System.out.println("失敗");
}
count++;
long end = System.currentTimeMillis();
System.out.println((end - start) / 1000 + "秒経過");
System.out.println("-------------");
}
public int totalRecovery() {
return this.recovery;
}
}
public class Main {
public static void main(String[] args) {
Execute exe = new Execute();
Timer t = new Timer();
int recovery = 0;
t.schedule(exe, exe.cycle * 1000, exe.cycle * 1000);
try {
System.out.println("開始");
System.out.println("-------------");
// メインメソッドをプレイ時間一時停止する
Thread.sleep(exe.playTime * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
t.cancel();
System.out.println("総回復量" + exe.totalRecovery());
System.out.println("終了");
}
}
前回と比べ、結果の可視性が上がってちゃんと動いているのが確認できました。
次回は6秒問題とノーツ関係をどのようにしようか考えようと思います。
今回は前回の修正という形で終わったので前進したのかと言われると微妙ですが
コツコツやっていこうと思います。
うさぎとかめの童話でなぜうさぎはかめに負けたのか論争で
好きな見解が、見てる視点が違ったからというのあります。(さっき調べて好きなりました。)
ガルパ編も視野に入れているのでかめ目線でやっていこうと思います。