オタクの落書き(改)

オタクがぶつぶつ言うだけ

虫と毒は同じ色にしてくれたらよかったのに

Aqoursファンミ東京公演は最高だった

ファンミの内容ではない。ポケカの皮をかぶっていながら本質はポケカでもない。

虫ポケが好きなだけなので決してメインに据えるつもりはないやつ

ベトベトン&アローラベトベトンくんはHP270。しかも4エネの重さながらも120も回復する技がある。GXと殴りあうならこだわりメットかな~~。逃げエネ4だしムキムキパッドもありだな~~。 じゃあ例えば200ダメージ相手と殴りあうとすると、メットだと270-(200-30)+120-(200-30)+120=170で2回受けられる、パッドだと320-200+120-200=40でやっぱり2回。じゃあどのくらいのダメージで差が出るのかな~~。

めんどくさい

お前はただのオタクじゃない、エンジニアであれ
"""
    beton.py
    very tasty poison!
"""

import sys
import matplotlib.pyplot as plt
import numpy as np

# static values
BETON_HP = 270
PAD = 50 # +50 HP
MET = 30 # -30 damage
HEAL = 120 # gain 120 HP
NATANE = 80 # gain 80 HP

# params to calculate damage (val * 10)
MIN_DAMAGE = 15
MAX_DAMAGE = 30
DAMAGE_FACTOR = 10
USE_NATANE = False

# range for plot
MIN_Y = -1
MAX_Y = 15
INTERVAL_X = 10
INTERVAL_Y = 1

# calculate how many times beton can stand a certain damage
def calc_clk(beton, damage, natane=USE_NATANE):
    cnt = 0
    if damage <= HEAL:
        return -1
    while (beton - damage) > 0:
        beton -=  damage
        if natane:
            beton += NATANE
            natane = False
        beton += HEAL
        cnt += 1
    return cnt

# plot the result
def plot_detremine_num():
    damage = list([])
    none = list([])
    pad = list([])
    met = list([])
    for n in range(MIN_DAMAGE, MAX_DAMAGE+1):
        d = n * DAMAGE_FACTOR
        damage.append(d)
        none.append(calc_clk(BETON_HP, d))
        pad.append(calc_clk(BETON_HP + PAD, d))
        met.append(calc_clk(BETON_HP, d - MET))

    x_damege = np.array(damage)
    y_none = np.array(none)
    y_pad = np.array(pad)
    y_met = np.array(met)
    plt.plot(x_damege, y_none, label="none")
    plt.plot(x_damege, y_pad, label="pad")
    plt.plot(x_damege, y_met, label="met")
    plt.xticks(np.arange(MIN_DAMAGE * DAMAGE_FACTOR, MAX_DAMAGE * DAMAGE_FACTOR + 1, INTERVAL_X))
    plt.yticks(np.arange(MIN_Y, MAX_Y + 1, INTERVAL_Y))
    plt.legend()
    plt.show()

# main func
def main():
    plot_detremine_num()

if __name__ == "__main__":
    main()

書いた。最初はコマンドライン引数のダメージだけで確定数を出そうとしたが、結局比較しにくかったので、せっかくなので可視化してみた。 matplotlibを選んだ理由は最初に出てきたからです(手段の比較検討を怠るエンジニアのクズ)。

f:id:someone34o2:20190304201724p:plain

横軸が一回に受けるダメージ、縦軸が確定数。-1のところは永遠に倒せないってことで。これでどっちを採用するのがいいとかどうとかはもうどうでもよくなった()。 草に混ぜるつもりなので遅延するためにナタネを挟んだ場合はこうなる。

f:id:someone34o2:20190304202210p:plain

y軸はみ出たけどいいでしょ、どうせ採用しないし・・・。

おんぼろPCだと初回起動に時間がかかったが、それでもさくっと描画してくれた。 計算して(用プログラム書いて)満足したのでもうモルフォン中心に戻すか・・・。

ところでポケモン的な「確定数」って英語でなんて言うんだろうか。分からないからclk(clock)にしてみた。有識者教えて。