2014年10月4日土曜日

BaseBall Simulation できました。

作り始めから半年以上経ちましたが、ようやくそれっぽいものが出来ました。

BaseBall Simulation
http://coffeespecial.web.fc2.com/baseballsimulator/index.html

ずーっとC#で頑張ってましたが、C#で作ってもさくっと使えないのが残念なので、Webで動くjavascriptで作ってみました。9回延長戦なしの試合を10000試合行って、その結果を表示します。

選手データを読み込ませる方法をどうやろうか色々考えてる最中で、今はとりあえずすべてrandomにそれなりの選手を6チーム分作ってます。各チームに平均打者と平均投手、それにダルビッシュと二軍選手を混ぜてるので、ピッチャーをダルビッシュにしたらどのぐらい点数が入らなくなるか、とかやってみると面白いかもしれません。

アルゴリズムとしては、ボールに当たる、三振する、ホームランを打つ、の各OddsRatioを打者投手で計算して、起こり易さをOddsとして求めてから確率に変換するという方法を取ってます。なので投手を平均投手にすれば、打者の元能力と同じような打率、出塁率になるようになっています。

javascriptは、以前勉強しようと思った時に、あの適当な型の扱いと呪文のような

(function(x){});

が良くわからなくて挫折していたのですが、C#っぽく静的に型をつけれて、尚且つVisualStudioの補完機能を使えるTypeScriptというjavascriptのコードをコンパイルしてくれるやつを使ってなんとかかんとか再チャレンジしました。

TypeScriptはクラス、インターフェースとかもろもろのオブジェクト指向的な記述をC#と似たような形で導入できるので、プロトタイプチェーンとはなにもんじゃ、クラスがないとは何事だ!死ね! という人にも扱いやすいんじゃないかなと思います。

実際ぼくもこれを使って、javascriptじゃないみたいにjavascriptを書いていくうちに、だんだんとjavascriptの雰囲気というか、どうやって書けば良いのかをコンパイル後のjsファイルを読んだりしてみて、手を動かしながら理解できてきた気がします。しっかりjsを使いこなすためには一度はちゃんと言語仕様について勉強しないとだめなのもたしかなのですが、そればっかり先行して、まったくやる気がでないよりは、それっぽいものを書いてそれっぽく動いてくれたほうがやる気も出る(気がする)ので、オススメです。やっぱり慣れてない言語を扱うときに、IDEの補完機能があるないは全然書くスピードが違いますね。

あと、何気でVisualStudioWebのhtmlとcssの編集も、かなーり優秀で良いです。4,5年前に初めてhtmlに触った時にこれを使いたかったなって凄い思いました。やっぱり補完機能って神。