ポケモンの努力値振りをサポートするツールを Python で書いた。動作に必要なものはとくになし。先日書いた関数を GUI で実行するツールで、同一努力値を一匹以上のポケモンに同時に振りたい + パワー系アイテムが一個しかない、ってときに使う。

GUI を作るのに仲間のついちゃんの力を多大に借りた。ありがとさんくす。

(2020-06-18)追記

5年後にリメイクした。

プログラムのコードは60行程度なので載せとく。拙作でちょっと恥ずかしいけれど、見せることは上達過程のひとつだというのが俺の方針だ。今回はクラスとモジュールの扱い方がちょっと分かった気がするぜ。 __init__() 関数の意味が一週間たっても理解できなかったときはちょっとやめたくなってたが。

import Tkinter
import sys

class GELS(Tkinter.Frame):
    def __init__(self, master = None):
        Tkinter.Frame.__init__(self, master)
        self.master.geometry('300x100')
        self.master.title('Green Effort Leveling Support')

        ev_value = Tkinter.IntVar()
        ev_value.set(252)
        num_value = Tkinter.IntVar()
        num_value.set(1)
        result = Tkinter.StringVar()
        result.set('The result\'s gonna be written here.')

        def calculate(ev, num):
            for power in range(100):
                a = (25 * power) + (power * 5 * (num - 1))
                if a > ev:
                    power -= 1
                    rest = ev - ((25 * power) + (power * 5 * (num - 1)))
                    result.set('Give power-item each of them \n' + str(power) + 
                        ' times in flock battle. \nAnd then kick ' + 
                        str(rest) + ' pokemons\' ass.')
                    break

        def get_value():
            if ev_value.get():
                ev = ev_value.get()
            if num_value.get():
                num = num_value.get()
            calculate(ev, num)

        frame = Tkinter.Frame(self)
        frame.grid(row = 0, column = 0, pady = 8)
        label1 = Tkinter.Label(frame, text = 'EV')
        label1.grid(row = 0, column = 0)
        entry1 = Tkinter.Entry(frame, width = 5, textvariable = ev_value)
        entry1.grid(row = 0, column = 1)
        label2 = Tkinter.Label(frame, text = 'to')
        label2.grid(row = 0, column = 2)
        entry2 = Tkinter.Entry(frame, width = 5, textvariable = num_value)
        entry2.grid(row = 0, column = 3)
        label3 = Tkinter.Label(frame, text = 'pokemons')
        label3.grid(row = 0, column = 4)

        button = Tkinter.Button(frame, command = get_value, text = 'Calculate!')
        button.grid(row = 0, column = 5, padx = 8)

        frame_for_result = Tkinter.Frame(self)
        frame_for_result.grid(row = 1, column = 0, pady = 10)
        label4 = Tkinter.Label(frame_for_result, textvariable = result)
        label4.pack()

if __name__ == '__main__':
    gels = GELS()
    gels.pack()
    gels.mainloop()

以下の記事からリンクされています