「プログラミング」に関する日記(37)

プログラミング関係の話題。プログラミングコーナーを更新したとか、プログラミングの内容に踏み込んだ話とか。

<前 次>

「AntiDirectX」じゃなくて

今日は書くネタがないのでプログラミングの「ゲーム音楽について」の続きを書いてみました。
Anti「DirectXのススメ」に書いた異常演奏に対する対策を追加しました。
まだ全部調べたわけではないのでもう少し調べてから10日頃にアップロードするつもりです。

「ふわふわふにゃ」のスコア報告はメールに"fff.dat"を添付して「fffスコア報告」という題名で送っていただけると嬉しいです。
掲示板での報告もいいんですがファイルを送ってくれる方が信用できますので。
本当はスコア送信フォームでも作りたいのですがここではCGIが使えないので自分で送ってもらうしかありません。
掲示板での報告もOKですよ、念のため。

ステージエディタ

「ふにゃふにゃ」のステージエディタを少し作ってみました。
主人公の初期状態を設定するウィンドウを作りました。
機能の実装はまだです。
表示画面(プレビューとも言いますね)も見た目だけ作りました。
BitBltとLine関数を使って表示することにしています。

同時進行で「クイズα」の問題作成のプログラムも作っています。
24日の更新はこちらになる可能性も無きにしも非ずです。

Anti「Cのススメ」は中々進みません。
書き出しに気を付けないとCプログラマーに思いっきり悪い印象を与えてしまい、逆効果になる可能性がありますので。

8の倍数

「ふにゃふにゃ」の隠れ機能と同様に、「Bomber丸World」のBGMは32個です。
DWORD型の変数を無駄なく利用できます。
この処理を作るためにどれだけサイズがでかくなるものやら…

「周りを海に囲まれて」のハープの音がおかしくなっていました。
近いうちに直すつもりです。
まともにコードのことを知らないと変な音楽ばかりできてしまいます。

今度の更新は多分24日、「Anti『Cのススメ』」にしようと思います。
TabIndexについては知らない人はいないでしょう。

秘密の更新(どこが)

またも更新履歴にない更新です。
ダウンロードのVBソースに「2つの構文の速度比較」を追加しました。
リンク集にもあるとあるサイトで話題になった事があります。
プログラミングの「VB小ネタ」で高速化について載せました。
小ネタに載せたことを速度比較で実際に使っています。
実は自己紹介も更新しました。
私についてよりわかるようにはならないと思いますが…

「Bomber丸World」のDirectMusic関連の不都合は未だに直りません。
DirectX SDKインストールしなおしたのに…
もうここまできたらやねうらお氏の所に文句を言いに行くしかなさそうです。

Rect関数

予告通り、「IntersectRect」を更新しました。
次は「TabIndex」にでもしようかと思っています。
思っているだけですので必ずするとは限りませんが…

「ふにゃふにゃ」で、ステージ情報クラスに移行できていなかった部分があったので修正しました。
「まちかどバトル」の遅さは未だに解決策が出ません。
蓄積ダメージの処理もそろそろ作ろうかと思います。

何かを書きたいと思った時、本当に書きたいことを忘れてしまって、どうでもいいことしか書けなかったという経験、皆さんにもありますよね?

絶対273度の怪

今日は何故か冷房についている温度計が0℃を示していました。

「ふにゃふにゃ」の「まちかどバトル」のステージ、サンプルステージよりも単純なつくりなのに動作が遅いです。
小さいのに。
ビットマップ表示も少ないのに。
ラインも少ないのに。
仕掛けも少ないのに。
色々試してみましたが、背景の表示に時間がかかっているようです。
サンプルステージよりも大き目の背景なので描画自体は速くなってもおかしくないんですが…

学校でタイル模様を見ていて思いました。
この模様の上にグラフを描いてみたらどうなるだろう……
というわけで、ダウンロードページに歪んだ平面上に関数のグラフを描くソフトのソースを追加しておきました。
あまりにもつまらないものなので更新扱いは無しです。

無題

IntersectRectについて新しい、というより当たり前の事がわかりました。
次の更新はこのことになりそうです。

明日から新学期です。
プログラミングをしている時間が短くなりそうです。
(↑既に短くなっている時期だろ!)

蛍光灯は付けたらできるだけ早く消した方が電力消費が少ないのは当たり前ですが、実は蛍光灯を消してすぐに付けるよりは付けっぱなしの方がいいのです。
興味があったら調べてみてください。
最近の蛍光灯は進歩しているのでいつもこの通りとは限りませんが…

無題

予告通り、「IntersectRect」のサンプルをアップしました。

「ふにゃふにゃ」で主人公が普通に立っているときに瞬きをするようにしました。
それと、スクリプト側から主人公のポーズを指定できるようにしました。
攻撃の処理は厄介そうなので暫く放置されそうな雰囲気です。

「リダクター」で、パレットと絵の本体を読み込む部分を作りました。
減色後の画像のためのメモリ確保も。

無題

「IntersectRect」のサンプルができました。
とてもIf文では対応できないようなパターンでも使えます。
当たり判定をIf文でやっていて苦労した人にとっては感動的なくらいです。
22日にアップする予定です。

サンプル2でエイミーにコテンパンにやられている敵は「Bomber丸World」でボスとして登場する、プララというキャラクターです。
前半に登場しますが、結構強いです。
今日はそのプララのアイコンサイズの絵を描いていました。
というより100%アイコンですが。
ただでさえドット絵が下手なのにたったの4階調でメタリックを表現するのはかなり難しいです。
「Bomber丸World」のマップチップ用と「パネルα」の余ったマス用です。

山側からの風、天気は曇、虹が出ていた

「ふにゃふにゃ」で、四角形の手前に画像を表示しようとした時に画像が消えるバグを修正しました。
原因はswitch文の中に書いていたものと同じbreakをif文の中にも入れてしまったことでした。
switch文にかかるべきbreakがfor文にかかってしまっていたのです。

「IntersectRect」のサンプルを作っています。
Line関数も使います。

「リダクター」の制作も進めています。

無題

「ふにゃふにゃ」にステージ定義ファイルの読み込み部分を作りました。
ステージ定義ファイルは、始めの4バイトが「f2s1」、次の32バイトがステージタイトル、その後に二人の主人公の初期状態、使用する線の数、線の初期状態、という構成になっています。
これからの予定は、ステージ定義ファイルとスクリプトファイルがあればステージ定義ファイルを先に読み込んでからスクリプトを実行し、スクリプトしかなければスクリプトだけで実行し、ステージ定義ファイルしかなければスクリプトは別に用意されたものを実行し、どちらも無ければエラーを出すようにするつもりです。

まだ開発に時間がかかるかもしれないので、開発室を本格的に作るかもしれません。
もし作ることになったら、「Bomber丸World」の情報も流してみようと思います。

「mciSendString」で、入力ミスがあったので修正しておきました。
……プログラミングのコンテンツ、メインとか言っておきながらかなり手抜きですね、すみません。

無題

プログラミングのところを更新しました。
使える機能を挙げたら本当にキリが無いmciSendStringです。
MSDNライブラリに挙げられているだけでも数十個あったので、実際に使えるのは百個を超えるものと思われます。
パソコンによっても機能が違ってきます。
例えばうちでは"type mpegaudio"としてもMP3は鳴りません。

「ふにゃふにゃ」で、スクリプトクラスで行っていた処理の一部を別のクラスに移しました。
それと、ステージ定義ファイルのフォーマットも大雑把に決めてみました。
つまり、実際の動作は変わっていません。

それに伴って(どう伴うかは別として)、入力した文字のASCIIコードを表示するソフトを作ってみました。
やっていること自体は簡単だったのにVBでは文字をUnicodeで扱っているためそれに気付くのにかなり苦労しました。
「VisualBasic初心者連盟」の掲示板で質問しようと思ったら関係のあることが既に書き込まれていたのでそれを参考にさせて頂きました。

IMEツールバーが消滅しました。
経験からすれば、Windowsを再インストールしないと直らない状態です。
きっとどこかのファイルにツールバーを消すような情報があるんでしょうが、それを探すような技術は全然ありませんので、このまま使いにくい状態が暫く続きそうです。

無題

あくまでこのサイトのメインはプログラミングですからね。
ソフトの更新が多いのは変更点が多いからに他ならないのです。

そんなわけで次に更新する場所はプログラミングのところで、内容は「mciSendString」です。
MIDIでもWaveサウンドでもAVIでもWMAでも場合によってはMP3でも再生してしまうあれです。
あれはあれでもあのあれの色違いじゃありませんよ(わからんだろうなぁ)。
兎に角(『うさぎにつの』って読むなよ)、「MusicPlayer」の2以降に使われているあれです。
mciSendStringってできることが物凄く多いのでよく使われるものしか紹介はしません。

無題

リンクの「座標平面」のバナーが正しく表示されていなかったので修正しました。
ついでに文面もほんの少し変更しました。
見ないでね。

面白いことを思いついたんですが使えないことがわかりました。
残念です。

IntersectRect関数は、戻り値で矩形同士の当たり判定も行えて、尚且つ当たっている部分もわかります。
「ふにゃふにゃ」ではそれを利用してビットマップの表示を行っています。
便利です。

駅前でツバメの鳴き声が聞こえたのに姿は見えず、もどかしい思いをさせられる日々を一週間ほど続けていましたが、ついにツバメを見つけることができました!
嬉しいです。

無題

「Bomber丸World」でyaneSDK2ndを最新版にしてやっと気付いたんですが、マルチスレッド周りのエラーはただ単に私がプロジェクトの設定でマルチスレッドにするのを忘れていただけだったようです。
・・・・にも関わらずDirectMusicのエラーはとれず。
もしかしたらDirectX SDKが悪いのかもしれません(私はDirectMusicを扱う部分には一切触れていませんし、やねうらお氏のせいであればとっくに苦情がきているはずです)。
DirectMusicを使わない設定にしてとりあえずエラーが無くなったことにしていますが、いつか直すつもりです。

「ふにゃふにゃ」で、新しいステージを作り始めました。
ステージタイトルは「まちかどバトル」です。
ステージ名が仮名だけなのはふにゃだから、ということにしておきます。
人通りが少なく、車も全然通らない場所(かもしれない)ですが、実は地下に入れたりもします(多分)。
前にあったステージは操作説明用ステージとして残すつもりです。

無題

yaneSDK2nd finalをダウンロードしました。
これならエラーがなくなるかな?
多分無理だと思うけど。
何故なら、マルチスレッドあたりに問題があると見ているからです。
エラーが出るのはDirectMusicのまわりだけなので、BGM再生の部分だけDLL化してマルチスレッドとは無関係にしてしまうという手もありだと思います。
これの意味することはつまり、「MusicPlayer6」の制作・・・・になるのかなぁ。
MusicPlayerばかり増えすぎですね。

無題

プログラミングに「IntersectRect」を追加しました。

最近開発が停滞しているRPG「Bomber丸World」の戦闘は、終了する条件が色々あったりします。
敵を倒した、逃げ出した、なども勿論ありますが、他には仲間が死ぬ(即ゲームオーバー)、仲間全員が大ダメージにより戦闘不可能になる、戦意喪失、その他特殊な条件、など。
「ふにゃふにゃ」と同じく、一部にスクリプトを使っている(予定)ので、色々特殊な戦闘を作れます。

無題

「ふにゃふにゃ」のビットマップ読み込み部分をyanePackExに対応させました。
実は昔日記にはビットマップ読み込み部分を自作していたと書いたんですが、それがうまくいかなかったので暫くの間標準APIを使っていました。
そしていつしかその事を忘れ、自作関数を使っているつもりにずっとなっていたんですが、この前プログラムをざっと見直してみたら、標準APIのままになっていたので自作関数に戻したんですが、当然うまくいきませんでした。
しかしその原因がCreateDIBSectionにあることはわかっていました。
でもCreateDIBSectionはDIBから普通のビットマップ(DDB)を作るものだし…
と思いながらインターネットで検索すると、これはDDBからDIBを作るための関数だということがわかりました。
逆じゃん!!
とは思いつつも、もう一つ思い当たる関数、CreateDIBitmapについて調べてみることにしました。
しかしこれはDDBからDIBを作るものだし、と思っていたら…
ハイ、これもまた逆でした。
まあ、そんなわけでめでたく自作関数はうまく動いたわけです。

どこがめでたいんだなんて言わないでくださいよ!

今日は何故かスクロールバーの動きがおかしいです。
使いにくくて仕方がありません。

無題

プログラミングコーナーを更新しました。
でも以前にも日記に書いたように、音楽用語には全然自信が無いのです。
音楽は好きですが音学は嫌いなのです。
しかも重要な用語に限って中学や高校の教科書には書いてないし・・・・
だから間違いを見つけたら、一人で「フフフ、ときおのバカめ」なんて思いながら黙って見ていないですぐに報告してください。

「ふにゃふにゃ」には連立方程式が多く使われています。
例えば、線を表示するかどうかを判定するだけで約20個使っています。
殆どコピペだけど。

「Bomber丸World」のBGMの音程がずれているのを発見したのでいつか修正するつもり(今じゃない)。

無題

もうすぐ最終更新日から一週間か・・・・
BitBlt応用編を早く終わらせねば。
今使用する画像を加工しているところです。
パレットを一つ一ついぢっております。
大変です。

<前 次>