プログラム

ツールっぽいものを作る

ずいぶん久々になってしまいましたがまだまだ頑張ります。しばらくは、サウンドプログラムの勉強も兼ねて、サウンド再生アプリ兼ツールを作成してみる。 ※ちょっと関連ある記事(d:id:p-tal:20091020) ということでまずは雛型作り。簡単にウィンドウを出してE…

とにかくincludeする

どんなプロジェクトでも使用するtypedefやマクロなどは、全ファイルにincludeしても構わないのでは・・・という点から、それを便利に行う方法を模索。『プロパティ > 構成プロパティ > C/C++ > 詳細 > 必ずインクルード』の部分にファイル名を入れておけばOK…

#ifと#ifdefの違い

#if (x) … x が true なら実行される #ifdef (x) … x が #defineで定義されていれば実行される 実際にプログラム上で使用する機会はデバッグ表示の有無なんかがほとんど。 なお、Visual Studioの場合はDebugモード時に自動的に 「#define _DEBUG 1」 が定義…

namespaceの定義

namespaceを定義する際には、最後の「}」の後のセミコロンは不要。 namespace Test { class TestClass { public: TestClass(); ~TestClass(); }; } 今までセミコロンを付けてたけど、今後は外しておこう。でも実際のところ付けててもコンパイラが無視してコ…

DLLを作る

libファイルの作成はできたので、次にDLLを作成してみる。 まずはプロジェクトを作り、DLLの項目にチェック。 通常と同じようにヘッダを作り、出力したい関数に「__declspec(dllexport)」を加える。 クラスの場合はクラス名の前に「__declspec(dllexport)」…

libファイルを作る

ランダム数値の生成とか、今までcppのまま持ってたのをlibにしてみることに。まずlib用のプロジェクトを作成。cppとヘッダを入れてビルド。DebugフォルダかReleaseフォルダにlibファイルが生成される。この際に出力フォルダ、ファイル名を指定しておくと便利…

fpsと処理率

FPSを60に調整。前フレームの終了時の時間を保存し、今フレームの最後でその終了時の時間+(16ms)になるまでSleep。 正確な60fpsではないけど、これで一応OK。 void adjustFPS() { // 終了予定時間 DWORD endTime = m_prevFrameFinishTime + 16; // 予定時間…

Unicode対応のプロジェクトにする

新規プロジェクトを始めるにあたって、プロジェクトをUnicode対応にすることに。 基本的にchar型を使っていた場所でエラーが出るので、文字列の前に_TまたはLを入れればOK。 #include <tchar.h> // ----------------------------------------------------------- // </tchar.h>…

Visual Studioのデバッグ機能

開発環境はVisual Studio 2005 を使用しているのだけれど、今更ながらデバッグ機能優秀ぶりを実感することができたので、メモ。■ 変数の値を直接変えられる ウォッチ式から直接代入ができると。 const値は変更できないっぽい。 ■ 編集およびビルドの再開 ゲ…

RawInputで複数のマウスからの入力を取得する

RawInputの勉強。ようやく二つのマウスからの入力を取得できるようになった。 まずは初期化。 #define WINVER (0x500) // RawInput用 #define _WIN32_WINNT (0x0501) // RawInput用 #include <windows.h> … void init() { // 現在接続されている入力デバイスの数を取得 </windows.h>…

マウスを二つ接続する(2)

d:id:p-tal:20090829の続き。通常はマウスを二つ接続したところでそれぞれの入力はあたかも一つのマウスだけがあるかのように処理される。 これはWindowsの仕様っぽい?どうやらDirectInputも同様のようで、マウスが複数あること自体がそもそもおかしい事の…

マウスを二つ接続する

マウスを二個接続してゲームに使えるかなと思い、研究開始。DirectInputでジョイパッドを複数認識する時みたいにEnumDevicesで出来るかなーと思ったけど、どうも上手くいかず。 調べてみると結構面倒みたいだ。マウスをジョイパッドとして認識出来れば複数マ…

Structure Synthで簡単3Dアート

Context Free の3D版、Structure Synthをいじってみた。Context Freeについては以前使ってみたので、(d:id:p-tal:20090805) 使い方はほぼ同じのStructure Synthでも結構楽に作成できた。 また、レンダラーのsunflowを使うと良いみたいなので、さっそく導入・…

Unicodeを使用するべき?

先日のフォント描画クラスについて。「SHIFTJIS_CHARSET」にすれば漢字が入力できる!とか思ってたけど、♡とか外国の文字は入れられないということに今更気づいた。どうやらUnicodeにすれば入力できるようだけど、プロジェクトのプロパティがマルチバイト文…

空間分割による衝突判定

今までアクションゲームを制作してきたときには、いつも衝突判定時の処理落ちに悩まされてきた。そこで、4分木を使った衝突判定について勉強してみることに。まずは理屈を把握し、実際にコーディングしてみよう。 ※参考にさせていただきました。▼マルペケつ…

フォント読み込み、描画

フォントをttfファイルなどから読み込む場合、AddFontResourceEx()を使用する。 static const char* FONTPASS = "C:/..../Judge Hard.TTF"; static const char* FONTNAME = "Judge Hard"; ... // 読み込み AddFontResourceEx(FONTPASS, FR_PRIVATE, NULL); s…

フォント文字の描画(その2)

一文字は表示できたので、文字列を描画するクラスを作成してみた。 上 : MS Pゴシック / 下 : MS P明朝▼ 使用法とか CFontString str(D3DXVECTOR2(100.0f, 200.0f), 0xffffff); str.init("テスト@test", pD3DDevice, 100, SHIFTJIS_CHARSET, "MS P…

フォント文字の描画

基本的にはASCIIコード表に対応したビットマップファイルを使って描画をしていたけど、プロポーショナルフォントにも対応させたくなったのでフォント表示について研究。テクスチャ書き込みとか久々だなーと苦労しながらなんとか成功。 フォント "consolas", …

リハビリ

休みが続いてプログラムからは離れてたけど(離れざるを得なかった感じ)、そろそろプログラムに復帰。しばらく期間が空いてプロジェクトの制作状態がつかめなくなってるので、まずはコードのリファクタリングをしつつ、全体像を再びつかんでいこう。

Context Freeで簡単デザイン

文脈自由文法のプログラムで絵描きができるContext Freeでデザインっぽいことをしてみる。 適当にさくっと作ってみてもそれっぽいものができるのがこのプログラムの良いところ。ゲームで簡単な一枚絵やテクスチャ等が必要になったときに役立ちそうな気がした…

パラメータは外部ファイルに

よくパラメータは外部ファイルで定義したほうが良いと聞くけど、いまいち利点が分からなかった。 ビルドの時間がいらなくなるということみたいだけど、まあそれくらい・・・って認識だったので。 でも最近になって自分なりに便利さがようやく分かってきた。 …

関数のコメントをどうするか

関数のコメント。自分としては分かりやすくしようとコメントを付けるようにしている。 //------------------------------------------------------------------ // 関数名 func // 概要 xxをする // 引数 param1 パラメータ // param2 パラメータ // 戻り値 …