[[ハルト]] *プログラム関連(C#) [#n6fd120a] -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制御等がしやすくなるかも。~ こう書き換える。~ こうすることでfps制御等がしやすくなる。~ formのイベントとして処理するのではなく、メインループをここに作る感じ。~ あとはformのコンストラクタあたりで以下のように初期化 DX.SetUserWindow(this.Handle); //親ウインドウをこのフォームに設定 DX.DxLib_Init(); //初期化 これでDxLibの描画をフォームに渡せるので、 自作関数(上のOnPaint)で普通に描画すればフォームにDxLibが使えます。~ OnPaintを呼び出すのは外部(ここではMain関数)であることがポイント~ ちなみにC#デフォルトのTimerコンポーネントではfps制御等には全く役に立たないので使わないように。~ (そういう用途に使うものではない)~ *プログラム関連 (C/C++)[#h7084a04] 別ページに分けてみました。なんかあったら勝手に追加します。~ **Windows7におけるVisualStudio2008のリンクエラーについて [#i04e37ed] 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便利機能集 [#p9c2747f] 確かにまとめたものがあってもいいよなーと思って作ってしまった。~ デバッグに役立つショートカットキーとか、各種ウインドウ等の説明が書いてあります。~ (6/25)なんか急に思い立って少し加筆修正。~ 欲しければどうぞ。~ 【[[VisualStudio_function.pdf:http://sherbet.transjiggen.com/ccs/ccs_wiki2/index.php?plugin=attach&pcmd=open&file=VisualStudio_function.pdf&refer=%A5%CF%A5%EB%A5%C8]]】~ 4-7のカーソル位置保存する機能は2010にはないのかもしれない。~ ***csv文字列の読み込み [#i67a0d47] 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でのメモリリークの検出 [#la1fd484] とりあえず[[参考リンク:http://marupeke296.com/TIPS_No7_SearchMemoryLeak.html]]参照のこと。 *DXライブラリ関係 [#oce48752] ・最低限+αのソース→【[[dxlibmain.cpp:http://sherbet.transjiggen.com/ccs/ccs_wiki2/index.php?plugin=attach&pcmd=open&file=dxlibmain.cpp&refer=%A5%CF%A5%EB%A5%C8]]】~ ダブルバッファリングとウィンドウタイトル変更、ウインドウモードなどの関数をあらかじめ書いておいたソース。 DXライブラリ導入後、コピーして貼りつければ多分動きます。(Escapeで終了)~ ***基本的な扱い方 [#a040f033] まずは[[リファレンス:http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html]]や[[サンプルプログラム:http://homepage2.nifty.com/natupaji/DxLib/dxprogram.html]]や[[DXライブラリ ゲームプログラム講座:http://homepage2.nifty.com/natupaji/DxLib/dxlecture_main.html]]。~ [[C言語ゲームプログラムの館:http://dixq.net/g/]]なんかも役立つと思います。~ あとノベルゲー寄りですがここも→[[ゲーム作りで学ぶ!実践的C言語プログラミング:http://www.usamimi.info/~guiprog/game/]]~ 10年度の講座のも一応貼っておく~ [[DXライブラリ講座]] ***その他の扱い方 [#y851e281] [[ゲーム製作技術メモ]]←こちらに任せます(というかリンク先に書きます) **その他 [#xd11ce8a] ゆんさんのメモ書き。役立つのに埋もれてるので(特に後者)リンクしときます。(半分くらい自分用)~ [[C2C++:http://sherbet.transjiggen.com/ccs/ccs_wiki2/index.php?%A4%E6%A4%F3%2FC2C%2B%2B]]~ [[バグを減らすために:http://sherbet.transjiggen.com/ccs/ccs_wiki2/index.php?%A4%E6%A4%F3%2F%A5%D0%A5%B0%A4%F2%B8%BA%A4%E9%A4%B9%B0%D9%A4%CB]]~