東方LostWordというゲームを趣味でちょくちょくやっているので、その中に出てくるボスキャラ(紫)のダメージ計算プログラムを作ってみた(こんなものをプログラムと呼んで良いのか…?)。
プログラミング経験は一切無かったが「まあ所詮ただの計算だしいけるっしょ」くらいのノリで初めてみた。結果、途中で何度投げ出そうと思ったことか。
でもまあ時間を見つけては1週間に渡ってコツコツコードを書き、それっぽいものはできた。まあまだ不備があるっちゃあるのだが…。
出来栄えについて
外観はこんな感じ。
htmlの勉強をすればもっと進めれば凝ったデザインにできるんだろうが、あいにくそこまでの時間も根気も無かったので今回は断念。もし、万が一、Webデザイン方面へのやる気がでるようなことが会ったら、そのうち工夫しだすかもしれない。
使い方はキャラを選んでステータスとかを入力するだけ。ちょっと入力する項目が多いが、プログラミング歴7日の赤ちゃんにはこうするしかなかったのだ。
とりあえす、尖ったスキルとかスペル効果が無いリリーホワイトで計算してみる。
フルで育成して陽攻アップの絵札を付けると、上記のステータスになる。ということで、まずはキャラと育成具合を選択。
次にステータスを入力。
ラスワには陽攻3段階アップの絵札を付けているので、攻撃バフの陽攻の数値だけ3にしておく。
リリーホワイトに防御デバフのスキルは無いし、属性威力アップの絵札なんかは付けていないので、他の項目は入力しない。
という訳で、計算させたダメージ期待値がこれ。
ルナティック紫の体力が53200なので、バフさえ積まれなければリリーホワイトでもワンパンできるかな?というところ。
で、この計算結果合ってるの?
計算結果が合ってるか不安なので、実際にリリーホワイトでルナティック紫を100周してみた。以下のようにEXCELにダメージと紫が積んだバフをメモりながら100周。
結果がこんな感じ。
それぞれの試行回数は少ないが、実際のダメージ平均値とさっきのプログラムで出した計算値がそれほど離れていないので、まあOKなんじゃあないでしょうか(というかそうでないと修正のためコードの内容を洗い直すことになる…それは絶対嫌だ…)。
で、何のために作ったの?
何のために作ったのかといういうと、端的に言えば「自己満足」だ。
まあ元々「今更このゲームでルナティック紫のダメージ計算機を作った所でな…」とは思っていたが、プログラミングに触れたことのない自分にとっては良い教材になるのではないかとも思った。そういうわけでプログラミング初心者の題材としてありがたく使わせていただいたという訳である。
実際にプログラミングに初めて触れて、以下の3つを強く感じた。
- プログラミング解説サイトは"初心者"のレベルを高く見積もりすぎている
- 導入テキストとか一切なしで始めると碌なことにならない
- 世の中のプログラマーはマジですごい
まず1つ目の「プログラミング解説サイトは"初心者"のレベルを高く見積もりすぎている」だが、これは実際に「○○ プログラミング 初心者」とかで検索すると分かる。初心者相手にプログラミング専門用語のカタカナばっかり使って説明しないでくれ…。読者は赤ちゃんだと思って、りんごとかに例えて説明してほしい。
2つ目の「導入テキストとか一切なしで始めると碌なことにならない」だが、これはもうこの文面の通りだ。「検索すれば出てくるやろ!」の精神は、その分野についてある程度知ってるから成り立つのである。例えば自分の場合、プログラミング(javascript)では[a, b, c]のように括弧で囲まれたいくつかのデータのことを配列と呼ぶのだが、これを"配列"と呼ぶことが分かるまでに30分ほどかかった。呼び方が分からなくて「[] プログラミング 何」とかで検索したりした始末。何事もまず教科書を読むところから始めよう。
3つ目の「世の中のプログラマーはマジですごい」もこの文面の通り。プログラマーはすごいよ、ほんと。もうこれからはプログラマーって肩書きを見るだけで震えるようになるかもしれない。
これからプログラミングを続けるかどうか
やはり社会人になってから、仕事以外のことで何かを0から始めるのはキツい。
ただ、0を1にするのが一番キツいということも経験上知っている。今回やったことは0を1にしたと言えるはず(言っていいよな?)。
だから、また何か作りたいプログラムがあれば作って見るかもしれない。今回作った計算プログラムも、特攻を計算に入れてないとかまだ不備はあるし。
まあ結局は時間との相談になりそうだ。