- 1 名前:名前は開発中のものです。 mailto:sage [2012/02/23(木) 21:35:32.53 ID:Si08WDH/]
- Cを習得した程度のスキルでも、
ゲームのグラフィックを比較的容易に描画する事のできる、 「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 homepage2.nifty.com/natupaji/DxLib/ 【過去スレ】 DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/ DXライブラリ 総合スレッド 2008 pc11.2ch.net/test/read.cgi/gamedev/1224923873/ DXライブラリ 総合スレッド その3 pc11.2ch.net/test/read.cgi/gamedev/1238429676/ DXライブラリ 総合スレッド その4 pc11.2ch.net/test/read.cgi/gamedev/1249822550/ DXライブラリ 総合スレッド その5 pc11.2ch.net/test/read.cgi/gamedev/1259912953/ DXライブラリ 総合スレッド その6 hibari.2ch.net/test/read.cgi/gamedev/1267108154/ DXライブラリ 総合スレッド その7 hibari.2ch.net/test/read.cgi/gamedev/1286180687/ DXライブラリ 総合スレッド その8 hibari.2ch.net/test/read.cgi/gamedev/1301818631/ DXライブラリ 総合スレッド その9 hibari.2ch.net/test/read.cgi/gamedev/1310904069/ DXライブラリ 総合スレッド その10 hibari.2ch.net/test/read.cgi/gamedev/1313655495/ DXライブラリ 総合スレッド その11 toro.2ch.net/test/read.cgi/gamedev/1322844235/
- 732 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 06:22:59.75 ID:WoSDo/nx]
- 実際役に立たないから困る
- 733 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 08:27:06.44 ID:n+C8wzG1]
- 実際ゲームのメイン部分ってwhileじゃないと駄目なの?
GPの館に書いてあったんだが
- 734 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 08:46:09.63 ID:P26WoJ+E]
- 他の制御構文は
for:初期化式と再初期化式が省略可能だが余分 do〜while:初回無条件に実行が必要じゃない goto:基本的に使用は避ける 無駄が無いからwhileを使う
- 735 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 10:45:28.39 ID:/AN6bfUC]
- while以外に何を使いたいんだ?w
- 736 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 11:24:27.70 ID:7q5MiGtI]
- do〜whileを使うプログラマ、使わせるSEはクズ
- 737 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 13:32:48.02 ID:DvZhu9E1]
- 統一させないといけない仕事ならともかく、
趣味でやる分には好きにすればいいと思うよ
- 738 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 15:26:41.12 ID:WoSDo/nx]
- while(true)よりfor(;;)の方が速いらしい
- 739 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 15:36:07.96 ID:7MbmXZQt]
- そもそもそれぞれ機能が違うんだから「ループ処理」みたいにバカな一括りにしてないで使い分けろよw
- 740 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 17:48:29.94 ID:K4tOkwgR]
- そんな微妙な差をきにするほどのゲームなのかと聞きたい
- 741 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 18:39:55.59 ID:WoSDo/nx]
- for, foreach, while, doはforに統一してもいいよな。
for(int i=0; i<5; i++){} for(Type object : array){} for(true){} {}for(true)
- 742 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 20:11:20.70 ID:jK/Ti//s]
- >>740
宗教寄りな個々の拘りの問題で、出来上がる物にそこまで影響してこないでしょ >>736 がそう思う理由を聞きたい。普段から殆ど使わないけど、なにかか不味かったけ?
- 743 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 20:18:12.31 ID:FJN+ySbI]
- do〜whileの存在なんて忘れかけてたわw
- 744 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 20:30:17.74 ID:Q/+zfBD6]
- do〜whileは一生使わないと思う
- 745 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 21:38:56.48 ID:NycYNCvV]
- 僕この前使ったことあるよ!!
二次元上の点をランダムな点(ただしPCの半径n以外)を得るコードの時に人生で初めて
- 746 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 21:42:25.47 ID:I2CLfunR]
- do whileはstd::next_permutationで使うくらい
- 747 名前:名前は開発中のものです。 [2012/05/15(火) 22:14:03.49 ID:AbQ+Urgd]
- do{
処理; if(エラーチェック1) break; 処理; if(エラーチェック2) break; 処理; return;//正常終了 }while(false); エラー処理 return; これでgoto要らず・・・
- 748 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 22:15:08.62 ID:SjeSUqBD]
- 構文がもし do while(条件) { ... } だったら、もうちょっと使ってたかもしれない
- 749 名前:名前は開発中のものです。 mailto:sage [2012/05/15(火) 22:34:26.99 ID:AbQ+Urgd]
- あと有名なのははDuff's Device
send(to, from, count) register short *to, *from; register count; { register n=(count+7)/8; switch(count%8){ case 0: do{ *to = *from++; case 7: *to = *from++; case 6: *to = *from++; case 5: *to = *from++; case 4: *to = *from++; case 3: *to = *from++; case 2: *to = *from++; case 1: *to = *from++; } while(--n>0); } }
- 750 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 01:14:43.27 ID:E/82p3zm]
- >>749
なんだこれは
- 751 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 01:33:14.92 ID:E/82p3zm]
- >>659だけど
他で作った好きな要素数の配列をnewしてアドレス変数をポンポン交換してって 使い終わったやつはdeleteで開放 で擬似的に動的配列になるかね 日本語意味不明だけど解読してくれると嬉しい
- 752 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 01:53:38.37 ID:uCI89rGL]
- 配列は定数しか無理だよ
動的配列のvectorじゃだめなん?
- 753 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 03:41:31.70 ID:veKNCjZ1]
- vectorが内部でやってることだろ。
基本を抑えずvector使っても結局詰まるよ。
- 754 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 04:11:42.74 ID:xN96LXhW]
- vectorとか適当にぶん回しても要素1000くらいまでならマジ優等生
何も考えずにvector使えばいいよ
- 755 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 20:28:31.12 ID:veKNCjZ1]
- おまじないプログラマーの甘言を真に受けないように
- 756 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 21:05:20.10 ID:Zs3i0kMO]
- プログラマーとして一流になる必要などなくて、ゲームが作れればいいんだから、
さっさとvector使えばええやん C++ STL vectorとかでぐぐれば資料もたくさんあるから、必要な情報も得やすい
- 757 名前:名前は開発中のものです。 [2012/05/16(水) 21:17:43.67 ID:xcEAC60x]
- 名前空間とかわけわからんdせう
- 758 名前:名前は開発中のものです。 [2012/05/16(水) 21:22:50.79 ID:xcEAC60x]
- クラスをインスタンス化する時コンストラクタやiniメソッドでメンバを初期化するとする
この時わざわざ class Constructor{ private: int x,y,z; public: Constructor(tmpx,tmpy,tmpz){ x=tmpx; y=tmpy; z=tmpz; } } って名前変えて一個ずつ代入していくのが面倒なんだけど、この方法しかないの? Constructor(x,y,z){} が出来るならいいんだけど
- 759 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 21:52:32.82 ID:Ii6Gjoka]
- Constructor(int tmpx, int tmpy, int tmpz) : x(tmpx), y(tmpy), z(tmpz) {}
とかどうよ
- 760 名前:名前は開発中のものです。 [2012/05/16(水) 22:06:52.36 ID:xcEAC60x]
- やっぱなんかダサイねん(´・ω・`)
tmpとか無くしたい x→tmpx→x ↓ x→x
- 761 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 22:10:09.69 ID:DWTPf8LX]
- テンプレートで初期化を自動化するstatic関数作ればいいじゃん
こういうのってC++でもできるよね?
- 762 名前:名前は開発中のものです。 [2012/05/16(水) 22:13:40.69 ID:xcEAC60x]
- なんかこう、パラメータヒントの変数名がtmpでダサい(´・ω・`)
- 763 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 22:22:46.08 ID:GI6piSjh]
- 大文字・小文字で区別ができるんじゃ?
- 764 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 22:23:30.21 ID:aRUZ3+na]
- 同じ名前でもいいぞ、混乱しないようにメンバ変数にthis付けたほうが安全だけど
- 765 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 22:30:48.24 ID:uOBgzP4U]
- class point {
private: int x,y; public: point() { *this = point(x,y); } point(int x,int y) : x(x),y(y) { } }; ってダメかね
- 766 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 22:54:49.23 ID:vXiMaXO2]
- >>758
内部変数とアクセッサ・引数用の変数ネーミングのルールを作る。 内部変数は省略形で書き易く、アクセッサ・引数用は分かりやすく。 それ以上気にすると先に進まん。 なんかいい方法があれば後で直せば良いや、くらいで。
- 767 名前:名前は開発中のものです。 mailto:sage [2012/05/16(水) 23:53:20.10 ID:O28tHfhr]
- >>764
安全っつーか、thisつけないとアクセスできないでしょ
- 768 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 00:12:52.18 ID:lbGUPy7y]
- 俺ならこうだな
変数は構造体の中にまとめる 変数が増えても構造体をいじるだけでいい typedef struct xyz { int x; int y; int z; }stXYZ; class Constructor { private: stXYZ xyz; public: Constructor(stXYZ *pstTmp) { memcpy(&xyz,pstTmp,sizeof xyz); } }; //呼び出し側 stXYZ stTmp = {1,2,3}; Constructor constructor(&stTmp);
- 769 名前:名前は開発中のものです。 [2012/05/17(木) 00:24:19.25 ID:Jj8o5dc4]
- >>768
(・δ・`)
- 770 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 04:59:40.80 ID:4FnschNb]
- >>767
初期化子リストじゃだめなの? class foo { public: foo (int x, int y) : x(x), y(x) {} private: int x,y; };
- 771 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 08:20:02.90 ID:XdhnKfWC]
- できればコンストラクタに引数渡したくないな
- 772 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 09:51:33.09 ID:Jj8o5dc4]
- よくわからんけど引数から直接メンバにデータを渡す事は変数介さないと無理でok?
- 773 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 10:48:59.52 ID:72LABUA9]
- そこは見た目だけの問題だからintとか組み込み型だと最適化で消える場合もある
- 774 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 12:18:20.00 ID:kt0acN7f]
- レベル高すぎてついていけない
- 775 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 12:51:45.63 ID:XdhnKfWC]
- 別にsetter, getterない publicなメンバ変数を持ってもいいし、
visual studio c++ 専用だけどpropertyという機能もある
- 776 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 16:09:41.33 ID:jk5kVr/j]
- >>774
安心しろ、俺もだ
- 777 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 16:36:03.67 ID:LEC6LKtf]
- C++の構造体ってデフォがpublicなクラスみたいなもんだし
メンバ関数作って使い方の感覚得るとかいんじゃね
- 778 名前:名前は開発中のものです。 [2012/05/17(木) 17:43:23.17 ID:ucuijB6C]
- 厨房だけど、何からすればいいか分からん
C言語は入門書一冊熟読した 知識はそれだけです
- 779 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 17:53:24.70 ID:A/eH0jcf]
- 何すれば良いか分からんやつは大抵できないから好き勝手ゲーム作ったりしてれば良いと思う
- 780 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 18:19:27.36 ID:Le624jWk]
- ファミコンのマリオみたいなの作るといいよ
あの滑らかなジャンプの曲線の動きとか作るのすげー勉強になるし、実際に動いてるの見ると楽しい
- 781 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 18:25:10.94 ID:sA5HBbyr]
- >>778
作りたいもの作ればいいよ。 作りたいものがなければ違うことやればいいと思うよ
- 782 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 18:42:01.27 ID:Lq82mTDs]
- ちょっと待て、熟読したとは言ったが、実際にコードを入力して試したのか?
ともかく、DxLibとC言語で簡単なゲーム作る本があるから探して買うか図書館で借りるかして試してみればいいよ。
- 783 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 18:44:31.06 ID:CIWlPPKp]
- 昔はベーマガを見て覚えたもんだが
- 784 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 19:04:17.83 ID:1miPR200]
- 俺は見た(読む)だけじゃ絶対身につかなかったな。
実際に動かして見てやっと理解できる。
- 785 名前:名前は開発中のものです。 mailto:sage [2012/05/17(木) 21:17:20.29 ID:MVax3Amg]
- 俺はサンプルプログラムを1個改造して、
次のサンプルプログラムを1個改造して、 気に入ったのがあったら沢山改造して、というのを繰り返して身に着けたな
- 786 名前:名前は開発中のものです。 mailto:age [2012/05/18(金) 00:14:29.29 ID:4zRGqSRr]
- rpg.nengu.jp/game/dl/
このサイトのソース読みながら覚えたいのですが RPG.vcprojをドラッグアンドドロップして vc++2008に変換しようとすると 「ゲームファイルの初期化に失敗しました」と何度試しても出ます。 VC++2010は低スペなので使えないのですがどうすれば変換できるのでしょうか もしダメならこれ以外でVC++2008で公開されているrpgのサンプルがあれば教えてください お願いします
- 787 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 00:56:44.66 ID:Kw1eEMY1]
- staticで保持して置いた配列を使い終わったら開放したいんだけどどうしたらいいでしょうか?
- 788 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 00:58:13.40 ID:gx1xQNnD]
- staticの固定長配列はプログラムが終了すると自動的に解放されます
それ以外に開放手段はありません
- 789 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 00:59:03.38 ID:Kw1eEMY1]
- 関数func1,func2でそれぞれstatic変数を宣言した時、中身は共通になりますか?
- 790 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 00:59:42.96 ID:mamO/m7+]
- C++なら終了するまでスコープから外れないので解放されない。
解放する必要があるなら、 配列へのポインタで変数を確保してnewでヒープを確保、 必要になったらdeleteすればok
- 791 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 00:59:50.88 ID:Kw1eEMY1]
- >>788
ありがとうございます
- 792 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 01:00:56.05 ID:mamO/m7+]
- >>789
関数内で宣言されるstatic変数はスコープは関数の内部のみ。 従って別物。
- 793 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 01:04:36.26 ID:Kw1eEMY1]
- >>790
なんかよくわからないので具体的にコード書いてくれると嬉しいです。 ・配列arrの引数m分だけ要素数を持つint型配列を引数&pに作成する関数 とかだとわかりやすくて自分が喜びます。 図々しくてすみません。
- 794 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 01:05:51.71 ID:Kw1eEMY1]
- やはり某製作支援サイトのようにメインループの前に変数宣言した方が良いのかな・・・
- 795 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 01:20:06.21 ID:mamO/m7+]
- >>793
//えーと、 // 適当な配列 int[] arr = {0,1,2,3,4,5,6,7,8,9,} void dynamic_array(int*& p, int length) { //lengthnこのintを確保 p = new int[length]; // arrからコピー for(int i = 0; i < length; ++i) { p[i] = arr[i]; } } // pを解放するときは、 // delete[] p;
- 796 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 02:44:50.20 ID:g6CQrJUG]
- >>793
>>795 のSTL版 #include <vector> void dynamic_array(int*& p, int length) { auto v = std::vector<int>(length); p = v.data(); }
- 797 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 12:33:49.02 ID:AXglkRe5]
- なんでここC++スレになってるんだ
- 798 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 12:39:42.25 ID:aBuN5zeL]
- DXライブラリで詰まる人はcなのかライブラリなのか区別が付かないからではないでしょうか
- 799 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 12:52:20.63 ID:tTxAGc55]
- 俺みたいにDXライブラリに頼らなくてはゲームも作れないレベルの人間だと
C++についてもよくわかってなかったりするからつい、だろうね。 他のスレだと”DXライブラリに頼らなくていい人”ばかりに思えて気後れする。
- 800 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 14:58:56.44 ID:AqX5CuAi]
- >>796
dynamic_array終了時に開放されね? >>787が単にヒープに置きたいということでなければ>>795の方法しかないと思う もしくはvector自体new/deleteするか
- 801 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 21:35:11.00 ID:0qQFV47b]
- 今時ダウンロードしてまでゲームやる人いるのかね
- 802 名前:名前は開発中のものです。 mailto:sage [2012/05/18(金) 22:52:22.12 ID:Avt8/Znc]
- >>800
>vector自体new/delete スマポをnewするとか意味ないだろ。 >>796はドヤ顔でSTL勧める本人がSTLを理解してなかった良い例。
- 803 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 00:27:03.52 ID:VD4oJ3BE]
- STLのmapに(キー重複しない)insertを繰り返していくと、
メモリはわずかながら消費されていくと思うんだけど、 それってnewが繰り返されてるってことだよね。 アクション性の高いゲームでメインループ内でnewとか使っていいのかな。 普段は軽い処理でも、メモリ確保と開放が絡むと、どこかでカクついたりしないか心配。 気にせずやってるけどカクつきなんて発生したことないよ、ということなら安心なんだけど。
- 804 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 00:28:28.08 ID:r1qEY4jZ]
- 冷静に考えて、今時って携帯ゲームやネトゲが主体だろ?
DXライブラリでパソコンで動くゲームって当たり前だが そういうのが逆に新鮮じゃね?
- 805 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 00:49:21.53 ID:TBtSNI4j]
- >>803
もしも、メインループで毎フレームほど行なうっていうのなら、 そういう処理を行なう事自体を、見直す必要があると思うけど。
- 806 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 01:02:15.71 ID:a+urZXjQ]
- GCが起動するわけでもないならnew/deleteにあまり神経質になる必要はないと思うけど・・
- 807 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 01:10:30.26 ID:ZOsD1vO4]
- >>803
new deleteが重いというけど、なにをnew deleteするかでまた違うのよ。 new int とか new char[32] みたいに1回で終われば気にするほどでもない。 new Hoge で Hogeのコンストラクタの中でまたたくさん new() よばれているような 階層深く大きいクラスのnew, deleteが重いから、 その場合だけオブジェクトプールを検討すればいい。
- 808 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 01:27:35.13 ID:QmsbQiPL]
- 一応ラウンド(ステージ)管理クラス生成時に
設定されたキャラクターの数だけ配列を宣言する形なんだけど 配列用ポインタを持たせたら、参照先が使い捨てになる。 で、動的に配列の要素数を操作すればポインタで使い捨てじゃなくてもいいんじゃないかと
- 809 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 02:35:24.88 ID:ZOsD1vO4]
- それは最大数がステージの開始時にわかってて、
最大数分のメモリを確保しっぱなしにするって話だろ? それができる(普通な)規模のステージならそれがいい。 ステージだとかシーンと呼ばれる単位で一括確保・解放できればそれがベスト。
- 810 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 09:17:44.64 ID:9Hyd3HTN]
- 最近のPCの場合、個人制作のゲームなら
全部メモリ確保してもいいともうけどな
- 811 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 10:43:57.82 ID:lxOdfsYj]
- new/delete遅い遅いっつーけどwinの実装はくそ速いぞ。
一定サイズ以下ならただのプールからの切り出しだし。
- 812 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 10:46:39.32 ID:VD4oJ3BE]
- >>807
オブジェクトはゲーム起動時に最大数をメモリ確保してある前提だったりする。 そこで、mapにinsertするpairが仮にintとポインタだったとして、 insertのときにそのintとポインタ分の小さいnewが起動するし、 eraseのときにはそれがdeleteされると思う。 で、その回数が膨大になったとき、GCみたいな時間くう処理が起動して カクついたら困るなーと。特にアクション性の高いゲームだと。 たとえばメモリを新たに大量確保する処理が起動して時間くうとか。 そんなものは発生しない、なら、安心してコンテナ使ってゲーム作れるんだけど。 アクション性の高いゲームでも普通にコンテナ使うのが定番だよ、ということなら安心なんだけど、 そのあたりよくわからなくて。
- 813 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 11:09:09.97 ID:ArUyj87Z]
- >>809
具体的なコードがわからないんだよ class RoundAdmin{ Character character[]; RoundAdmin(int i){ for(int t=0;t<i;t++){ character[i] = new Character; } } }
- 814 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 11:09:37.11 ID:ArUyj87Z]
- iPhoneスペース無視されてワロタ
- 815 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 11:24:53.82 ID:8/80f/4q]
- >>812
メモリを確保する時間よりも、メモリが確保できるかどうかが問題だな コンテナが定番かどうかはこういうのが詳しい ttp://d.hatena.ne.jp/i-saint/20101012/1286822888 個人・小規模でPCゲー製作ならSTLで充分かと
- 816 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 11:38:54.28 ID:ArUyj87Z]
- >>813続き
イメージとしてはこれができたら楽なんだ winmain(~~~~~){ int state; while(error()){ switch(state){ case 0: RoundAdmin RAdmin=new RoundAdmin(); break; case 1: state=RAdmin.Func(); break; case 99: delete RAdmin; break; } } }
- 817 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 11:52:46.30 ID:aIMhivPJ]
- try,catch,throwじゃ駄目なのか?
- 818 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 12:00:09.24 ID:gXEjt6C9]
- goto使えば良いんでね?
- 819 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 12:22:43.39 ID:VD4oJ3BE]
- >>815
ありがとう。参考になる 自分はまさに個人・小規模でPCゲー製作だから、 out of memoryの心配だけはないんだよな
- 820 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 12:24:45.52 ID:HSIQMcFD]
- オーバーライドして作ったクラスのオブジェクトをコンテナに突っ込んでイテレータで回しながら共通関数を実行するんだろ
- 821 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 12:49:35.26 ID:JpqeYW60]
- >>820
ポリモーフィズムと言え。ややこしい
- 822 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 12:58:30.97 ID:zRojJiyg]
- >>816
OGRE3DのAdvancedOgreFrameworkがシーンの使い分けを解りやすく実装してるよ 仕組みだけなので2Dでも十分使える、ただ3DゲームならOGRE3D使ったほうがDXライブラリより楽だけど
- 823 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 13:12:00.32 ID:dlfQry7w]
- メモリ確保かー。
そういえばこの間、少し大きめの構造体の配列を用意しようとしたんだけど STRUCT_HOGE hoge[1024]; だと実行時エラーで、 STRUCT_HOGE *hoge = new STRUCT_HOGE[1024]; だと問題なく動くってことがあった。 頭では理解してたけど、実際遭遇したのは初めてだった。
- 824 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 13:46:07.27 ID:PlH7X2T2]
- >>823
初心者が良くやるミスだね
- 825 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 14:26:49.52 ID:1CGbweqQ]
- ちなみにそれ原因は何ですか?
- 826 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 14:51:44.70 ID:VD4oJ3BE]
- stackとheapでぐぐれ
- 827 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 14:53:36.27 ID:ZHekMysl]
- ただのスタックオーバーフローってこと?
- 828 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 14:57:27.20 ID:VD4oJ3BE]
- yes
- 829 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 15:14:52.35 ID:GOROOjbN]
- >>823
大文字で書かれると分かりにくいのは俺が初心者だからかな 普通小文字じゃない?
- 830 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 15:18:21.89 ID:ArUyj87Z]
- >>817-818
それしか方法ないのかなー 最悪、最大数宣言して存在フラグなんだけど
- 831 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 16:51:36.07 ID:dlfQry7w]
- >>824
それなりにプログラムやってるけど、遭遇したの初めてでなー。 >>829 こういう例示だと、結構使い分けることも多い気がする
- 832 名前:名前は開発中のものです。 mailto:sage [2012/05/19(土) 17:03:35.58 ID:ZOsD1vO4]
- >>812
>mapにinsertするpairが仮にintとポインタだったとして、 >insertのときにそのintとポインタ分の小さいnewが起動するし、 >eraseのときにはそれがdeleteされると思う。 ツリーマップは木構造のノードに必要なデータ、キー、バリューを 一つの構造体として1回のnew(), delete()で済ませる。 だからstd::listの追加・削除・挿入は比較的速いアルゴリズムと言われてるが、 これとnew(), delete()の回数自体は変わらない。(木構造を辿る負荷は別計算) でも毎フレームstd::mapに大量の追加・削除されるのって そもそも連装配列に向いてないペアなんじゃないか?(キーがHPとか?) 例えば >>816 なら関数ポインタ or クラス継承して ストラテジーパターンのポインタを使うべきだ。
|

|