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