ハルト
プログラム関連(C#) †
- C#-DXLib関連
DXLibDotNetでのDrawFormatStringの自作。
適当にDxLib.cs弄って追加するなりpartialにするなり。
使い方はC/C++DXLibのではなく、C#のWriteLineなどの使い方({0},{1}などを置き換える)
public static int DrawFormatString(int x, int y, int color, string str, params object[] args)
{
for (int i = 0; i < args.Length; ++i)
{
str = str.Replace("{" + i.ToString() + "}", args[i].ToString());
}
return DX.DrawString(x, y, str, color);
}
- フォームとDxLibを共存させてみようとかいう方法その1
普通にVisualStudioでフォームアプリケーション作ってProgram.csを見ると以下のようになっているはず。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
このコードを
static void Main()
{
Application.EnableVisualStyles(); //visualスタイルの有効化
//フォーム生成
Form1 form = new Form1();
form.Show();
while (form.Created) //フォームがある間ループ
{
//自作関数。
form.OnPaint();
Application.DoEvents();
}
}
こう書き換える。
こうすることでfps制御等がしやすくなる。
formのイベントとして処理するのではなく、メインループをここに作る感じ。
あとはformのコンストラクタあたりで以下のように初期化
DX.SetUserWindow(this.Handle); //親ウインドウをこのフォームに設定
DX.DxLib_Init(); //初期化
これでDxLibの描画をフォームに渡せるので、
自作関数(上のOnPaint)で普通に描画すればフォームにDxLibが使えます。
OnPaintを呼び出すのは外部(ここではMain関数)であることがポイント
ちなみにC#デフォルトのTimerコンポーネントではfps制御等には全く役に立たないので使わないように。
(そういう用途に使うものではない)
プログラム関連 (C/C++) †
別ページに分けてみました。なんかあったら勝手に追加します。
Windows7におけるVisualStudio2008のリンクエラーについて †
Windows7でVisualStudio2008を使ってビルドするとエラーが発生することがあるようです。(PC依存、または開発規模依存かもしれない)
「Microsoft(R) Incremental Linkerは動作を停止しました」というメッセージボックスが出て、LNK1000だかなんだかがエラーとして通知されます。
直し方は
http://archive.msdn.microsoft.com/KB948127 (msdn)
のページのDownloadsタブから修正パッチ"VS90-KB948127.exe"をダウンロードして実行すれば直るようです。
詳しくはここ→http://support.microsoft.com/kb/948127
会室でエラー発生が確認されたPCには入れました
VisualStudio便利機能集 †
確かにまとめたものがあってもいいよなーと思って作ってしまった。
デバッグに役立つショートカットキーとか、各種ウインドウ等の説明が書いてあります。
(6/25)なんか急に思い立って少し加筆修正。
欲しければどうぞ。
【VisualStudio_function.pdf】
4-7のカーソル位置保存する機能は2010にはないのかもしれない。
csv文字列の読み込み †
Cでcsvからのデータ読み込み。いい方法があれば教えてほしいです
以下のようなファイルに普通にsscanf(fscanf)を使おうとするとカンマも文字列とみなされ、読み込みが失敗する。
データ
100,0.3,helloworld,25
読み込み(文字列strに上記データが入っているとする)
sscanf( str , "%d,%f,%s,%d" , ... );
→これでは%sでhelloworld,25が読み込まれて最後の%dが正常に機能しない。
そこで、%sでなく%[^,]を使うとうまくいく。
%[^*]は*に入れた文字以外を読み込むという意味
上の例では、
sscanf( str , "%d,%f,%[^,],%d" , ... );
とするとうまく読み込めるはず
VisualStudioでのメモリリークの検出 †
とりあえず参考リンク参照のこと。
DXライブラリ関係 †
・最低限+αのソース→【dxlibmain.cpp】
ダブルバッファリングとウィンドウタイトル変更、ウインドウモードなどの関数をあらかじめ書いておいたソース。
DXライブラリ導入後、コピーして貼りつければ多分動きます。(Escapeで終了)
基本的な扱い方 †
まずはリファレンスやサンプルプログラムやDXライブラリ ゲームプログラム講座。
C言語ゲームプログラムの館なんかも役立つと思います。
あとノベルゲー寄りですがここも→ゲーム作りで学ぶ!実践的C言語プログラミング
10年度の講座のも一応貼っておく
DXライブラリ講座
その他の扱い方 †
ゲーム製作技術メモ←こちらに任せます(というかリンク先に書きます)
その他 †
ゆんさんのメモ書き。役立つのに埋もれてるので(特に後者)リンクしときます。(半分くらい自分用)
C2C++
バグを減らすために