25
Visual C++ 2008 Express Editionでjnethackのビルドに成功した。古いVisual Studioのプロジェクトファイルがあったので、VC++2008で開いて自動変換、互換性のないところを数行書き換えれば、普通に動くようになった。
妙なエラーが出るときもあるが、何回かビルドを繰り返せば成功する。理由は何となく解るような、解らないような。個人的にはどうでもいいレベル。
とりあえず、ゲームのルールを変えない範囲で手を入れてみよう。
個人的によくあるミスとしては、重要なメッセージを見過ごして死んだり、HPが少なくなっているのに気づかなくて死んだり、左斜め上にy連打で移動中に友好的な生き物を殴りつけて怒られたりというのがあるので、そこんところを何とかしたい。
たとえば、メッセージを読みやすい場所に配置したり、HPが少なくなってきたときに注意を喚起するような色表示をしたり、デフォルト選択肢がnの場合のyes/no選択でyを選択する場合は念のためCtrl+Alt+Yを入力させるぐらいのことはしても、ルールを変えている訳ではないと思うのだけれども、どうだろう。
VC++のプロジェクトは、ソースコードを読むのにも便利。global、doxygen、Source Navigatorと色々試してきたが、色々設定をいじらなくてもマクロを自動的に展開して構文解析してくれるのは強い。
ちなみにdoxygenだと、NDECL等、5つぐらいマクロ定義すればそこそこ読めるようになる。ただし、古い形式の関数宣言を解析できないため、クロスリファレンスが半分ぐらい繋がらない。
Souce Navigatorだと、同様にNDECL等マクロ定義すれば、かなり読めるようになる。古い形式の関数宣言も解析できる。ほとんどの関数のクロスリファレンスが拾える。メンバ変数は見れたり見れなかったり。ただ、ソフトの操作性の悪さが致命的。
その点、VC++の統合環境だと、最初から本気で構文解析してくれるので、とくにこちらからマクロ定義を指定する必要がない。メンバ変数のクロスリファレンスが完全に拾えるのも素敵。
しかしまあ、何がここまで駆り立てるのか。