- 1 名前:デフォルトの名無しさん [05/02/25 05:10:53 ]
- ※回答する人も、質問する人も必ず読んでください
【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する香具師 】 ・ どんな事で躓いているのか明確にしる。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。
- 798 名前:名前は開発中のものです。 mailto:sage [2008/02/06(水) 19:57:00 ID:lwQjFBy5]
- >>797
BGMやSEはフリー素材を探してみます MSのサイトからVC# 2008 のEXPRESS EDITION を落としました ガンバルゾ
- 799 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 04:50:06 ID:0WsdZlaN]
- がんがれ
- 800 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 07:01:56 ID:vAjuqD62]
- 右も左も前も後ろも上も下もわからないので
Windowsゲームプログラミング(著:赤坂 玲音) という本を買おうと思うのですが、 一般的なC言語の参考書でいうところの基本編ではなく 応用編のほうまで勉強しないと理解するのは難しいですか? 今は配列とかポインタとか構造体とかfopenぐらいの初心者用の参考書で勉強中です アドバイスよろしくお願いしますm(_ _)m
- 801 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 11:08:36 ID:X3Tglhmn]
- >Windowsゲームプログラミング
内容は著者のサイトにあるWindowsAPIの解説に、テトリスとか 基本的なゲームを作る内容を加えたものなので、まずそっちを 読んでみれば良いかも。 C言語の入門書の次に読むには悪くないと思う。 ゲームを作る上での話(キーを押したら弾打ったり、タイトル 画面からシーンを切り替えたいみたいなこと)は、C言語関係の 本には載ってないので、自分の使用言語である程度の知識を 得たら、まずいろいろ読みまくるのが良いのでは。 読んでて分かんない部分があれば、その時点でネットで 調べたり教科書で覚えればいいし、具体的なサンプル見て 勉強していった方が飽きないし、頭に入りやすいと思う。
- 802 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 18:41:14 ID:s69uaGj+]
- > 今は配列とかポインタとか構造体とかfopenぐらいの初心者用の参考書で勉強中です
あと関数を書けるようになったら、C++だって大丈夫(C言語の機能しか使えないけどw
- 803 名前:名前は開発中のものです。 mailto:sage [2008/02/10(日) 10:37:35 ID:cP4krxKj]
- アドバイスありがとうございますm(_ _)m
実際にサンプルをいじってみて、 わからないことや、やりたいことができたら そのつど調べてみようと思います
- 804 名前:名前は開発中のものです。 mailto:sage [2008/02/10(日) 17:41:03 ID:cP4krxKj]
- 買ってきてから知った
第2版が26日に発売って…なんてこったい
- 805 名前:名前は開発中のものです。 mailto:sage [2008/02/10(日) 19:02:16 ID:YRzw/q4P]
- 26日までの時間を買ったんだよ!
- 806 名前:名前は開発中のものです。 [2008/02/13(水) 04:00:42 ID:nKzj8Y4Z]
- 今RPGを作っているのですが、オープニング画面、マップ画面、メニュー画面、戦闘画面などでキー入力や描画の処理が変わりますよね
自分が考えているのは今どの場面かを入れる変数を作って、 case WM_KEYDOWN: if(wp == VK_UP){ switch(now){ case OPENING: {処理;} case MAP {処理;} } } といったものなのですが、「なんか違うなー・・・」と感じてしまいました これ以外に良い方法ありませんか?
- 807 名前:名前は開発中のものです。 mailto:sage [2008/02/13(水) 04:21:06 ID:vPNwDT7b]
- >>806 www.google.co.jp/search?q=State+%e3%83%91%e3%82%bf%e3%83%bc%e3%83%b3
- 808 名前:名前は開発中のものです。 mailto:sage [2008/02/13(水) 09:55:04 ID:Bwqd+W+c]
- enum { E_KEY_UP = 1, E_KEY_DOWN = 2, E_KEY_LEFT = 4 E_KEY_RIGHT = 8, };
int g_key_now; case WM_KEYDOWN: if(wp == VK_UP){ g_key_now |= E_KEY_UP; break; } case WM_KEY_UP: if(wp == VK_UP){ g_key_now &= ~E_KEY_UP; break; } あとはopening処理、map処理の中でそれぞれg_key_nowの内容を見れ。
- 809 名前:名前は開発中のものです。 mailto:sage [2008/02/13(水) 13:47:09 ID:nKzj8Y4Z]
- >>807-808
ありがとうございました 参考にします
- 810 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 17:17:54 ID:G8Sp5cnc]
-
本来こうやって扱うデータを t->x[ i ]; 間違って t->x; こうやっちゃった時に何か知らせる手段はありませんか?
- 811 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 17:26:18 ID:GHm3FFF+]
- ここで聞いちゃう?
- 812 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 18:07:59 ID:lllhF3T4]
- C/C++でなく,NETを使うとか
- 813 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 18:34:31 ID:G8Sp5cnc]
- >>811
すいません WinAPIでゲーム作ってたもので、スレ間違えてたかもしれないです >>812 .NETって便利なんですか? でもとりあえず今回は、WinAPIでやり遂げます
- 814 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 22:53:31 ID:wcRsgxJ1]
- >>810
その2つの型が違えば問題ないはずなんだけど。 C++ ならクラスを使って意図的に違う型にしてしまえばいい。
- 815 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 23:28:26 ID:G8Sp5cnc]
- >>814
if( t->x[ i ] == ○○ ) ○ if( t->x == ○○ ) × 敵の移動の分岐をかいてて、 こういう記述ミスがあって 気づきやすい所だったから良かったものの、わかりにくい所だったらヤバいなぁとおもったのです 違う型にするっていうのは良くわからないです けど、 == 判定だから、t->x 自身を使えないようにしないとかなぁっておもったり。 そもそもこんなところミスするようじゃダメなのかな・・・
- 816 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 23:32:54 ID:scJliyMv]
- 関数一個書いたらステップ実行でテストする。
関数内部のパス(通り道)を全部通るように条件を変えてきちんとテストする。
- 817 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 23:33:08 ID:wcRsgxJ1]
- >>815
いやミスするのが悪いんじゃなくて、その2つのうち後者が明らかに間違いなのに エラーにならないようにしてるのが悪い。 t->x[ i ] と t->x の型は何だ? たとえば x が int [5] なら t->x[i] は int で t->x は int* になる。 int とも int* とも比較できてコンパイルエラーにならないものといえば 定数 0 ぐらいしか思い当たらないけど。
- 818 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 05:42:59 ID:PjSoEStG]
- class cmp
{ public: operator int*() { return &a; } operator int() { return a; } int a; }; こんなクラスじゃない?
- 819 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 11:19:40 ID:UIc4fn4M]
- >>817
Boolean型でした すいません。なんでxにして書き込んじゃったんだろう・・・ ループ(){ if( t->I[ i ] == FALSE )continue; //処理 } t->I[ i ]がTRUEだったら 処理をさせるというところで、添え字を忘れていました。
- 820 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 21:15:47 ID:/NUBYqIN]
- >>819
FALSE が 0 なんだろうな。 C++ なら、配列を std::vector とか operator [] を持ったクラスに置き換えることで 添え字忘れをコンパイルエラーにできるよ。
- 821 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 21:43:43 ID:UIc4fn4M]
- >>820
検索してみたら凄い複雑でした。 が、 がんばってみます
- 822 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 22:10:22 ID:ESvEWD62]
- 今時、生の配列なんてつかわねーよ JK
- 823 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 11:02:54 ID:xmvf+jZ6]
- >>822
そうなんですか〜 でも、Vectorみたいな機能のある ゲームによく使われる言語ってC++だけじゃないですか?
- 824 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 15:52:37 ID:GhRRsOcA]
- でも、の意味がわからない
- 825 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 19:14:09 ID:lVPKkR1+]
- 作者も言われたんだろうか?
www.kent-web.com/pubc/book/test/uploader/uploader.cgi?mode=downld&no=690
- 826 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 19:15:07 ID:lVPKkR1+]
- 誤爆
- 827 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 15:45:57 ID:bPKCPzKB]
- >>824
今時と申されたので、C++やってない人はどうなのかなと思って「でも」と付けたのですが
- 828 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 02:08:27 ID:OuSoXFED]
- 普通の配列はダメですかorz
- 829 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 09:29:45 ID:EAhmszDh]
- ダメというか・・・生の配列は、面倒くさくない?
スクリプト言語みたいに整備されてるわけじゃないし
- 830 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 10:16:44 ID:aQ0SDMkZ]
- 生の配列って言うのが、静的確保した配列のことなのか、
vectorやlistでない単なる配列のことなのか
- 831 名前:名前は開発中のものです。 mailto:sage [2008/03/13(木) 15:09:01 ID:d99ZfhW7]
- 低レイヤーな言語での言語仕様に含まれる配列機能のこと
- 832 名前:名前は開発中のものです。 mailto:sage [2008/03/13(木) 22:56:00 ID:Bu/r75Um]
- >>830
後者だろ
- 833 名前:名前は開発中のものです。 mailto:sage [2008/03/15(土) 15:13:57 ID:Ih29OWzv]
- そんなに配列使わないかな。
俺はコンテナも使うけど配列も使う。 間に挿入したり要素数が状況によって全く異なる場合など コスト面からコンテナを使うしかない場合も多いけど。
- 834 名前:名前は開発中のものです。 mailto:sage [2008/03/20(木) 10:03:34 ID:EXQJqkak]
- 配列というか配列演算子は使うでしょ。
HeapAllocで適当にメモリ確保して、配列演算子でアクセス。 後はほっとけばアプリ終了時に勝手にガーベッジコレクションされる。
- 835 名前:名前は開発中のものです。 mailto:sage [2008/03/20(木) 19:42:02 ID:3UvZiAFC]
- Javaやってるとnewしたまんまほったらかしにするのは
道具をしまったりゴミをゴミ箱にまとめるのをサボってるようで あまりいい気がしない。
- 836 名前:名前は開発中のものです。 mailto:sage [2008/03/21(金) 18:18:37 ID:cEumy9Hm]
- >>835
アセンブラからCに入ったときはnew・deleteすら気持ち悪かったよ メモリマップが書けなくなるから Javaは純粋なメモリ以外のリソースはdisposeが用意されてることが多いし あまり気にならなかったな、そういうもんだと思った
- 837 名前:名前は開発中のものです。 mailto:sage [2008/03/21(金) 20:21:50 ID:ZTMinpqE]
- 自前でガベコレ作れるのがC++。
まあ、STL使えれば十分なんだけどな、大概のケースでは。
- 838 名前:名前は開発中のものです。 mailto:sage [2008/03/22(土) 23:20:05 ID:4IZtFb4c]
- 確かに最初はmallocもどこから確保してくるのか不思議に思った。
- 839 名前:名前は開発中のものです。 mailto:sage [2008/03/26(水) 02:06:12 ID:ldqMhhG3]
- なんという歴史スレ
- 840 名前:名前は開発中のものです。 mailto:sage [2008/03/26(水) 11:22:54 ID:F88bQWhP]
- >>839
つまり、mallocやnewがメモリーをどんなアドレスで取得してるか、 といった事を調べる話題になるわけだな?
- 841 名前:名前は開発中のものです。 mailto:sage [2008/03/26(水) 12:06:51 ID:EIOlO8Pg]
- >>838
それ言い出すと、ファイルハンドルが何処から発生するか気にするか? といった話にすらなりかねん。
- 842 名前:名前は開発中のものです。 mailto:sage [2008/04/28(月) 17:01:51 ID:RhBkZtBI]
- Basicから入ったから、Cで明示的にメモリ確保するのが気持ち悪かった
その後、Delphiやってたから、C++でメモリ確保しないクラスが気持ち悪かった
- 843 名前:名前は開発中のものです。 mailto:sage [2008/05/08(木) 23:18:51 ID:SrRQ+rts]
- 今作っているゲームはWM_CREATEでけっこうな量のファイルを読み込んでいるので、
Windowが表示されるまでにそれなりに時間がかかってしまいます。 誤って何度も起動してしまわないように、Nowloadingと表示させてから読み込みたいのですが、どのように書けばいいのでしょうか?
- 844 名前:名前は開発中のものです。 mailto:sage [2008/05/09(金) 00:49:24 ID:haEAxt1Y]
- WM_CREATEじゃなくてゲームループで嫁
- 845 名前:名前は開発中のものです。 mailto:sage [2008/05/09(金) 01:00:00 ID:PjWlUEdO]
- >>843
WM_CREATE PostMessageで適当なメッセージ(WM_USERとか)を投げる WM_PAINT 初期化フラグが立っていなかったらNowloadingとだけ表示する WM_USERとか 読み込み処理をする、適度にInvalidateRectとUpdateWindowを何度も実行する ただ、必須スペックに想定してるマシンで5秒以上かかるようなら ちゃんとイベント処理をこなせるようにしといたほうがいいよ メイン処理が別スレッドならそれを先に開始するとか、タイマー系イベントでちょっとづつ読み込むとか
- 846 名前:843 mailto:sage [2008/05/09(金) 11:55:14 ID:hS3O5d5Q]
- 参考にして作ろうと思います。
ありがとうございました。
- 847 名前:名前は開発中のものです。 mailto:sage [2008/05/10(土) 23:33:42 ID:3aq7UNCV]
- WM_USERよりもWM_APPがおすすめされている。
いずれにせよ、#define WM_INIT (WM_APP + 0)のように名前つけろよ。
- 848 名前:名前は開発中のものです。 mailto:sage [2008/05/15(木) 22:42:04 ID:YwFUHQF5]
- というか、初期には簡単な画像読み込んでLoading画面表示して
フラグ管理して処理すれば別に問題なくね?
- 849 名前:名前は開発中のものです。 mailto:sage [2008/05/16(金) 03:17:36 ID:LjZKGE9Y]
- WindowsXPのPC(メモリ256)で製作中のゲームをVista(メモリ1G)で動作テストしてみたのですが、
なぜかアニメーションの処理速度が半分ぐらいにまで落ちてしまいました。 WindowsAPIのタイマーを使ってアニメーションさせているのですが、これが原因なのか否かも良くわかりません。 なにか思い当たる点が有りましたら、ぜひ教えてください。お願いします。
- 850 名前:名前は開発中のものです。 mailto:sage [2008/05/23(金) 22:33:50 ID:jPx0XBwI]
- VistaだとGDIが完全にソフトウェア処理になるから
描画速度自体は確実に落ちるよ
- 851 名前:名前は開発中のものです。 mailto:sage [2008/05/23(金) 22:56:52 ID:7QUeOTrk]
- DDB使ってなけりゃ関係ねぇよ
- 852 名前:名前は開発中のものです。 mailto:sage [2008/05/24(土) 09:35:06 ID:WyL1Uf6E]
- >>851
- 853 名前:名前は開発中のものです。 [2008/08/03(日) 23:47:04 ID:eUp/hKRM]
- C++とDirectXでゲームを作っています。
音楽と効果音の再生をDirectSoundでやろうと思ったんですが、 調べているとVistaはDirectSoundに対応していないと書いてたんですが、 XPとVista両方に対応させたいとしたら、音は何で鳴らせばいいでしょうか。
- 854 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 03:26:18 ID:Zbdzki70]
- ハードウェア固有のサウンドエフェクトとか考えなけりゃ普通にDirectSoundでおk
もしくは最近のSDKに追加されたXAudio2とか検討してみ。 ゲーム用途ならこっちの方が使いやすいと思う。
- 855 名前:853 mailto:sage [2008/08/04(月) 22:34:14 ID:ro4/+LzM]
- どうもありがとうございます。
全く音が鳴らないというわけではないんですね。 使う機能はパンとボリュームと再生位置の通知だけなので、 このままDirectSoundを使うことにします。 XAudio2も時間があるときに見てみます。
- 856 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 18:45:06 ID:6PyoA3BU]
- C++でゲームを作っています。
爆弾をセット、一定時間後に爆発 という動作をさせたいんですがどのように表現すればいいのでしょうか? 一定時間後に、という部分がいまいちうまくいかなくて・・・よろしくお願いします
- 857 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 19:20:43 ID:jIGgrvQE]
- メインループの中で一定時間をカウントして、イベントを起こす。
- 858 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 21:31:09 ID:afI3YDNl]
- GetTickCount( )というPC起動から何ミリ秒経過したかを返すAPIがある。
爆弾をセットした時に時間を取得し、爆発時間を加える。 GetTickCount( )で取得した時間が爆破時間を過ぎたら爆発。
- 859 名前:856 mailto:sage [2008/08/08(金) 15:38:46 ID:czGsvGYo]
- お早いアドバイス、ありがとうございます。
やはりタイマー関数のようなものを使わないといけませんか・・・ いまいち使い方がわからないのでifやforを駆使していました。 タイマー関数のようなものを使わないというのはやはり勧められないものでしょうか。
- 860 名前:名前は開発中のものです。 mailto:sage [2008/08/08(金) 16:32:11 ID:w2HHE1WB]
- 俺ならキャラごとにカウンターもたせて、1フレームごとにカウントさせるなぁ。
タイマー使ったら、例えば処理落ちしたときとかに爆発タイミング変わったりして困るんじゃない?
- 861 名前:名前は開発中のものです。 mailto:sage [2008/08/08(金) 17:31:57 ID:79kn61a7]
- 作るゲームにもよる
例えば等速処理したいときとかどうする
- 862 名前:名前は開発中のものです。 mailto:sage [2008/08/08(金) 21:56:47 ID:w2HHE1WB]
- ああなるほど。
処理落ちしても、ゲーム速度は変わらない設計なら当然タイマー使用のほうになるのか。
- 863 名前:名前は開発中のものです。 mailto:sage [2008/08/10(日) 14:19:34 ID:u1XmHl+X]
- 俺もやりたいんだけど1フレームごとにカウントってどうやるの?
- 864 名前:名前は開発中のものです。 mailto:sage [2008/08/10(日) 18:37:29 ID:EcZynTEp]
- while (1) {
ゲームループ実行(); VSYNCを待つ(); カウント変数++; } 基本的にはこれだけ
- 865 名前:名前は開発中のものです。 mailto:sage [2008/08/10(日) 23:22:09 ID:u1XmHl+X]
- >VSYNCを待つ();
ってなんですか?
- 866 名前:名前は開発中のものです。 mailto:sage [2008/08/11(月) 18:10:04 ID:g7MMOmCL]
- もうwindowsプログラミング以前の低次元のことだから他のスレいきなよ
|

|