久しぶりの更新ですね(前編)
とある日、kagamiz先輩が僕のブログを面白いと言ってくれました。そういえば更新してなかったのでやろうか、いやでも面倒だしなあ、なんてことを考えつつ言葉のキャッチボールをしていると「ブログ書きましょう」という無言の圧力を感じました。そんなわけで1ヶ月ぶりくらいの更新*1です。
まずは最近のプログラミングについて。
GUIオセロ、(システムは)完成しました!やったぜ!
画面は発表会でのお楽しみということで載せませんが、以前に載せたものとそう大差ありません。あれから設定画面を追加し、CUIとGUIの切り替え、CPU難易度の変更等が行えるようにしました。いいフォントが見つかって良かったです。
勿論、課題が残っていない訳ではありません。
関数を用意し、その中でミニマックス法を用いてNPCが置くマスを決めるのですが、この計算が遅いんです。*3ミニマックス同士で対戦させると、軽く20分を超えました。たった60手でなんだそれ。たかだか一手に3分もかかることすらありました。駒の表示もないので、ひたすら3分も盤とにらめっこ。飽きます。
困り果てた結果kagamiz先輩に尋ねてコードを見てもらったところ、「計算回数が多すぎる」とのこと。最悪計算量は、盤の一辺のマスW(この場合はW = 8)に対し、W^9*4程にもなるとのことでした。そら遅いわ…
かくして高速化が最重要課題となったのですが、僕としては最小限に抑えたつもりなのです。つらい。他の方法なんて一切出て来ません。Undoを実装したものの、それでも遅いのは相変わらず。もっと根本から書き直すべきなのかもしれません。
開発とは全く無関係ですが、昨日くま先輩から「mallocの実装*5」を課題として与えられました。一応出来たものの、取ってくるサイズが4でなければまともにmallocできません。酷い出来です。完成はいつになるのやら…
後編は音ゲーのことばっかり書きます!乞うご期待!