[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 08/05 07:30 / Filesize : 218 KB / Number-of Response : 867
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Windowsゲームプログラミング 質問スレ



1 名前:デフォルトの名無しさん [05/02/25 05:10:53 ]
※回答する人も、質問する人も必ず読んでください 

【 回答してくださる方 】 
・ できるだけ優しく質問に答えてあげてください。 
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 
 「ググれ」以外の回答でおながいします。 
・ 神ですら理解不能な質問は無視して下さい。 

【 質問する香具師 】 
・ どんな事で躓いているのか明確にしる。 
・ 長くならないなら躓いている部分のコードを晒してみれ。 
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。 


252 名前:名前は開発中のものです。 [2006/08/13(日) 00:03:23 ID:NmZSkLh2]
とりあえず
winamp media file
まで読んでみた。

253 名前:名前は開発中のものです。 [2006/08/13(日) 06:47:15 ID:2UkITm4H]
僕らは旅人、常にどこかへ歩いている。
どこに行けばいい?
僕らはここからどこへも行けないの?
誰でもいいから教えてください。
いつまで歩けばこの道は途切れる?
野宿なんてもうこりごりだよ。
目の前にある看板にはなんて書いてある?
町がどこかを書いてあるといいんだけれど。
目の前に見えているのは町?
家があるけど町ではないね。
僕に翼があればいいのに・・・。
翼があれば歩く必要も無い
翼が欲しいな。
何を
どれだけ
どのように
犠牲にすれば手に入る?
僕は何をすれば自由になれる?
翼を求める本当の理由
それは誰にも分かることなし。
むなしくつづる僕の文。
誰にも伝わることの無いこの思い。
preas me
僕にください。
だれでもいい
何人でもいい
条件があってもかまわない
だから、お願い翼をください
僕を自由にしてください。

254 名前:名前は開発中のものです。 mailto:sage [2006/08/13(日) 07:56:34 ID:o/UAG1nJ]
>preas me

255 名前:名前は開発中のものです。 mailto:sage [2006/08/13(日) 10:16:18 ID:ivtGp+tH]
>press me

つぶして!

256 名前:名前は開発中のものです。 [2006/08/25(金) 18:42:13 ID:Gxqk6qh5]
質問です
directxの方かちょっと迷いましたが本題が微妙に違う気がしたので
こちらに書かせてもらいました

今DirectX上で、文字入力をするプログラムを書いています。
表示関係は終わったのですが、入力をどうしたらよいのか迷っています。
検索してもあまりよくわからなかったのですが、普通は入力システムを自前で
全て作るものなのでしょうか?
それとも、APIとかを使って何か内部バッファに入力を溜めるような便利なものが
あるのでしょうか?


257 名前:名前は開発中のものです。 mailto:sage [2006/08/25(金) 18:50:59 ID:RFenyKMu]
Cならchar型の動的配列を自前で用意するとか
C++ならstring型とvectorコンテナかlistコンテナを組み合わせて文字列を格納するとか

258 名前:名前は開発中のものです。 mailto:sage [2006/08/25(金) 21:25:28 ID:RVtfbAQ1]
>>256
話がよくわからないけど、番号が非常にキリがいいので、
エスパー能力全開で答えてみる。

WinAPI使ってるなら
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wpr, LPARAM lpr)
みたいなコールバック関数があるはずだ。
ここでmsgに
WM_KEYDOWN
WM_KEYUP
WM_CHAR
があったら要注意。wprの内容を適当に内容を解釈すべし。
WM_IME_STARTCOMPOSITION
WM_IME_ENDCOMPOSITION
についても調べておくとちょっと幸せになるかも。

まぁ、なんかのライブラリを使ったほうがもっと幸せになれるとは思うが。。。

259 名前:名前は開発中のものです。 mailto:sage [2006/08/25(金) 22:22:37 ID:Gxqk6qh5]
>>258
自分で読んで思ったけどこれだとよくわからないですよね
directxで文字入力をする窓を作ったのですが(EDITコントロールみたいなの)
カーソルも含めて表示はDirectXで出来るように作ったのですが
入力はどうやって作ろうかなと悩んでいるのです

ざっと考えると、キー入力があったら、それに対応した文字をバッファに入れればいいような気がしますが
シフトで大文字小文字とかCAPSとかコピーペーストとかIMEの有無や制御とか
全部自力で作るのかなぁと

DirectXでゲームを作っている人で、画面上に文字入力をするような場合は
みんなどのようにしてるんでしょうか

260 名前:名前は開発中のものです。 mailto:sage [2006/08/25(金) 22:27:30 ID:Gxqk6qh5]
付け加え
文字入力する窓というのは、テクスチャで表示している独自に作った
ウィンドウのことです。文字とカーソルもテクスチャで表示しています。



261 名前:補給屋 ◆ZA3g9myNTI [2006/08/25(金) 22:34:03 ID:fUkTY6Eo]
Direct3Dですか?

262 名前:名前は開発中のものです。 mailto:sage [2006/08/25(金) 23:04:52 ID:j9BFP6Ja]
>>259
大文字小文字程度なら WM_CHAR で適用済みの文字コードが受け取れる
IMEは変換中の文字列をどう表示するかが難しそうだな、俺は知らん

263 名前:名前は開発中のものです。 mailto:sage [2006/08/25(金) 23:18:05 ID:RVtfbAQ1]
スレ違いのようだが、
質問は「DirectXでどう入力を受け取るか」だけど、
回答は「WinAPIのウィンドーメッセージで受け取れ」だから、
スレ違いじゃない罠。

>>259
DirectXのDirectはハードの直接制御だから、
ちゃんとした文字列を受け取るのは無理じゃないかと思うが…
どうしても腑に落ちなきゃDirectXスレで聞いてみると良いかもね。

>>262
IMEで変換中の状態が表示されるので、
自分の場合表示位置の座標を変更して、
あたかもプロンプトから入力しているように装ってるw

264 名前:名前は開発中のものです。 mailto:sage [2006/08/25(金) 23:27:43 ID:Gxqk6qh5]
>>261
表示はそうですね。文字入力窓のテクスチャを2Dで表示して
バッファの文字を上に貼り付けてという風に
ネトゲのチャット入力みたいなものですが、やっぱりちゃんと作らないと
だめかぁ

>>262
なるほど…ということは、それを含めてカーソルの移動と挿入削除とコピペと
IMEの判定と変換中と確定後の処理って感じなのかな。道は長い

>>263
多分258さんが言う感じで、入力調べて頑張ってという感じだと思うので
その辺りをちょっと頑張って作ってみます
ありがとう


265 名前:名前は開発中のものです。 mailto:sage [2006/08/26(土) 00:27:44 ID:m2Iaf5aG]
>>264
最近似たような事やってたので一応コレ
ttp://nienie.com/~masapico/api_ImmGetCompositionString.html

266 名前:名前は開発中のものです。 mailto:sage [2006/08/26(土) 02:41:41 ID:tKmIInJP]
RPGのキャラクターとかのメモリビットマップ(PC解像度と同じ)
を作りすぎると、描画速度が遅くなってしまいます。

量としては、フィールドの点滅用(480×480)×3、
マップチップ(256×256)×1、キャラチップ(72×128)×32などです。

だから、一部はファイルにおいて置いて、使うときのみロード
みたいなのも行ったんですが、ロードに時間がかかりすぎます。
(ロードは8ビットだとかなり遅く、24ビットだと少し緩和されます。)

何かいい方法はないでしょうか。
環境は、9x系、128M。

267 名前:名前は開発中のものです。 mailto:sage [2006/08/26(土) 03:37:56 ID:xnHGRGx3]
>>266
描画ってのが何やってんだかわかんね。
それがわからんからフィールドとかマップチップとかキャラチップとか
どれが何なのかわかんね。

268 名前:266 mailto:sage [2006/08/26(土) 04:08:09 ID:tKmIInJP]
>>267
レーザーラモンさんありがとうございますw

描画は全体的な速さというかBitBltの速さです。
最終的な描画は全てBitBltを介してなので。
フィールドは、ウィンドウに表示されているマップ全体の事です。
遅いなと感じるのは、マップをスクロールさせる時です。

269 名前:名前は開発中のものです。 mailto:sage [2006/08/26(土) 04:11:13 ID:MLjkH/sO]
早さを気にするのなら他の描画エンジンを使った方がいい気が。

270 名前:名前は開発中のものです。 mailto:sage [2006/08/26(土) 04:35:21 ID:xnHGRGx3]
>>268
だいたいわかった。けど、やっぱりソースがないと明確なアドバイスはしづらいね。
「こんな方法があるよ」って言っても「それはもうやってる」って言われる可能性が高い。

あと、レーザーラモンじゃなくてレイザーラモンね。



271 名前:266 mailto:sage [2006/08/26(土) 06:11:03 ID:tKmIInJP]
もしかしたら、描画が遅いのではなく、
ウィンドウメッセージが連続で来るスピードが遅いのかもしれません。

スクロールは極端に遅くなりますが、
普通の描画はそんなに遅くなった気がしないので、
キーを押し続けたときのWM_KEYDOWNが遅くなったのかもしれません。

こちらの方について、いろいろ実験してみます。

>>269
GDIとかですかね。何かで結局はBitBltが速い
みたいなのを聞いたので、こればっか使っているんですけど。

>>270
レイザーラモン・・そうでした。
レーザーラモンでもビリビリフォーとかネタはできそうだけど。

試した方法です。
・登録ビットマップ量を少なくする
 それを言ったらおしまいだが最終的にはこれでしょうか
>>266の使うときにロードするやり方
 ロードが遅すぎる
 24ビットマップならそれなりの速度になるが
 作品の容量が大きくなるし、リソースには使えない
・マップに入ったときに、使用する分のみロードする
 なかなかいい方法 使用量が多いときはごめんなさいで
・メモリビットマップの画質をPCと同じではなく、PCより下げる
 極端に遅くなる
 PCの画質とメモリビットマップの画質を
 合わせるのに時間がかかるらしい

272 名前:名前は開発中のものです。 mailto:sage [2006/08/26(土) 07:20:57 ID:jU4tm91q]
区切りの良いスパンでメモリに確保

273 名前:266 mailto:sage [2006/08/26(土) 08:04:08 ID:tKmIInJP]
>>272
なるほど、そこは考えていませんでした。

良さそうな方法がいろいろ見つかったので、
それらを実験してみることにします。
お答えいただいたみなさま、ありがとうございました。

274 名前:名前は開発中のものです。 mailto:sage [2006/09/13(水) 23:08:11 ID:3PoFJJDV]
266さんじゃないんですが、
それを解決するのに「ファイルをオープンしっ放し」という方法を取ったのですが、
これって安全なんでしょうか?

275 名前:名前は開発中のものです。 mailto:sage [2006/09/14(木) 00:49:46 ID:MoDAUHsA]
ファイルハンドルを開放せずに落ちたらどうなるかの

276 名前:名前は開発中のものです。 mailto:sage [2006/09/14(木) 01:47:04 ID:rwvsmMJW]
あったかクノール♪
あったかクノール♪

277 名前:名前は開発中のものです。 [2006/09/14(木) 10:50:53 ID:gNg1nIFw]
>>266 に当てはまらない可能性のほうが高いけど、
俺は以前、クラスをちゃんとdeleteしてなかったせいで重くなってた。

278 名前:名前は開発中のものです。 mailto:sage [2006/09/14(木) 13:39:03 ID:YoSST93w]
>>275
1.おちないようにする(大命題)
2.デストラクタを使ってクリーンアップが完全にできるように
  ファクトリクラスなどを作る。

DirectXの場合など開放の順番が必要になるので
開放の優先順位通りにデストラクタで開放できるようにしておけば
OS的にはほとんど問題ない。


279 名前:名前は開発中のものです。 [2006/09/14(木) 20:04:48 ID:UU058loN]
274ですけど、
落ちるっていうのは、そのアプリケーションが落ちるって事ですよね?
OSが落ちるって事では無いですよね?

275さんによると、OSによる自動ファイル開放は期待できない、ということですね?
でも、278さんによるとデストラクタは呼ばれる可能性があるみたいですね。

もし、強制終了でもデストラクタが呼ばれるなら
ファイル管理クラスのデストラクタで、ファイル開放をすれば解決しそうですが…。

280 名前:名前は開発中のものです。 mailto:sage [2006/09/15(金) 22:50:37 ID:LV6+FZpS]
本日windowsプログラムに手をつけた若造です。
最初にメッセージボックスを表示する文を打ち込んでみましたが、早速つまずきました。
打ち込んだ文は、
#include<windows.h>

int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevIntance,
LPSTR lpCmdLine,
int nCmdShow
){
int MessageBox(NULL,"test","test",MB_OK);
return 0;
}
これだけです。
エラー内容は、messagebox関数の行で「初期化子の数が多すぎます。」とでました。
いろいろ考えてみたけどさっぱり分からないんで、誰か教えてください。



281 名前:名前は開発中のものです。 mailto:sage [2006/09/15(金) 22:54:26 ID:Q4a1m6UH]
int MessageBox(NULL,"test","test",MB_OK);
↑このintは何よ?

282 名前:名前は開発中のものです。 mailto:sage [2006/09/15(金) 22:56:34 ID:B+YyIKNU]
>>280
Cの基礎からやり直せ。

283 名前:名前は開発中のものです。 mailto:sage [2006/09/15(金) 22:59:05 ID:LV6+FZpS]
int抜いたら出来ました、、
Cの基礎からやり直してきます

284 名前:名前は開発中のものです。 mailto:sage [2006/09/16(土) 00:56:51 ID:AkzEWiy4]
>>280
どっからコピーしてきたか知らないけど、一字一句でも間違えたらダメだよ

285 名前:名前は開発中のものです。: [2006/09/18(月) 11:20:58 ID:Sv37SaL7]
windows APIで、画像をひとまとめにしたdatファイルから
LoadImage()等で表示するにはどうすればいいですか?

または、HSPのmemfile命令と同等の関数があれば教えてください。
開発コンパイラ:BCC32

286 名前:名前は開発中のものです。 mailto:sage [2006/09/18(月) 12:27:42 ID:ojXe2P0e]
リソースを読み込むAPIなので用途が違う。
適切なAPIを使え。

287 名前:名前は開発中のものです。 mailto:sage [2006/09/18(月) 17:15:52 ID:T/AO14da]
>>285
そのデータの形式にもよるが、
DIBの形で読み込めるなら、CreateDIBitmapとかで出来ると思う。

288 名前:名前は開発中のものです。 mailto:sage [2006/09/22(金) 05:20:19 ID:UxeWHvRU]
TextureならFromFileInMemoryとか

289 名前:名前は開発中のものです。 [2006/10/05(木) 08:54:14 ID:UCkPjisv]
うむ

290 名前:名前は開発中のものです。 [2006/10/06(金) 23:22:42 ID:nNc3THyN]
すいません、困っているので、教えてください。

今、スマートボールを作っているのですが
方向ごとの衝突反応が上手くできなくて困っています。

ブロックの左に玉がぶつかったら
右の衝突反応が優先されてしまったりしてしまっています。

ブロックの左に当たったら
左の衝突反応。
ブロックの上に当たったら
上の衝突反応。
といったようにきちんとした反応が返ってくるようにしたいです。

たぶん衝突判定あたりが問題だと思うのですが
どうにも直すことができません。
誰か教えてください。



291 名前:名前は開発中のものです。 mailto:sage [2006/10/06(金) 23:51:36 ID:+9iAuVTh]
ボールの左上、左下、右上、右下の4つで当たりを取って、
後はそのうちのどれとどれが衝突しているかで条件分け。
がんばれ。

292 名前:290 [2006/10/07(土) 00:19:22 ID:tK+JL53m]
>>291
さっそくの返答、ありがとうございます。

ボールの当たりを取るっていうのは


if (ボールとブロックの衝突判定) {
  /*ボールの右側が当たった場合*/
  if ((ballPos.x + BALL_WIDTH) == blockPos.x) {
   degree = (180 - degree);
  }
}

みたいな感じで良いんでしょうか?

293 名前:290 mailto:sage [2006/10/07(土) 04:34:25 ID:M90oHVt8]
>>291
色々とやってみて
3回に1回くらい
思った通りの動作をするようになりました。

ですが、精度を高めることができなかったので
ピンを敵に変えてアクションゲームにしました。

アドバイスをいかしきれなくて
すいません。

294 名前:名前は開発中のものです。 mailto:sage [2006/10/07(土) 10:49:25 ID:JWPSnV8K]
よくわからないが、ボールが右に動いて壁に当たったなら
壁には左に当たっているわけだから、壁の右の衝突判定は呼び出す必要はないだろ?

もし、壁もボールも動くなら、相対速度を求めて、
どちらかだけの衝突判定をすればいいんじゃない?

295 名前:290 mailto:sage [2006/10/07(土) 18:50:12 ID:M6IRgPHU]
>>294
説明不足ですいません。

ボールの速度が一定でないので
頻繁にブロックへのめり込みが発生して
思ったような衝突判定ができなかったみたいです。

あと、ブロックは動かす予定はありませんでした。

296 名前:名前は開発中のものです。 [2006/10/15(日) 17:35:00 ID:ZDJeTry+]
判定部分のソース晒すのが一番早いかと

297 名前:名前は開発中のものです。 mailto:sage [2006/10/15(日) 21:42:00 ID:C/TMVGDR]
移動する前に当たり判定して終わりのような

298 名前:名前は開発中のものです。 [2006/10/17(火) 06:19:58 ID:Ci2KLVBp]
ダイレクトXってほんとわかんねーよ。
あれってわざと難しくしてるんじゃねーか?

MFCは一応使えるようになったけど、(理解はしてないが)
あれは次元が違う難解さだ。

ゲーム用ベーシックみたいに、Porigon(x,y,z)とかで簡単に表示できるかと思ってたわ。


299 名前:名前は開発中のものです。 mailto:sage [2006/10/17(火) 08:05:30 ID:v0yfnzhi]
頭が悪いなら諦めろ。

300 名前:名前は開発中のものです。 mailto:sage [2006/10/17(火) 11:16:17 ID:D9KM+For]
>>298
3Dはみんなそんなもんだよん

Direct3Dを簡単に扱うためのBASIC見たいな
文法で書くスクリプト言語とかMFCの様な
C++のライブラリ使うとかすれば
いいんじゃないの?



301 名前:名前は開発中のものです。 mailto:sage [2006/10/17(火) 13:39:31 ID:EGJYiJfH]
PlayStationは凄い素直だった。
マイクロソフトは何でもかんでもカプセル化すれば良いと思ってる。

302 名前:名前は開発中のものです。 mailto:sage [2006/10/17(火) 17:08:41 ID:U7WoMmHI]
COMとかそこら辺の流れが入ってきてるから分りにくいだけだろ。
分らない奴はOpenGLでも使ってろ。

303 名前:名前は開発中のものです。 mailto:sage [2006/10/17(火) 18:16:39 ID:hbZjh9o3]
そりゃPCとコンシューマ機は違うでしょ。

304 名前:名前は開発中のものです。 mailto:sage [2006/10/18(水) 06:48:34 ID:WfLow5G2]
いまどきDirectXでCOMがどうとか言ってる人がいるとは
何年前から冬眠してたんだろ

305 名前:名前は開発中のものです。 mailto:sage [2006/10/18(水) 12:28:41 ID:5TL5JyUw]
人の作ったライブラリにおんぶに抱っこじゃ、そりゃCOMのことなんか分からないよなw

306 名前:名前は開発中のものです。 mailto:sage [2006/10/18(水) 14:55:21 ID:WfLow5G2]
ん?DirectXのことかな?それともWin32のことかな?
頭悪い突っ込みほど格好悪いものもないねー

307 名前:名前は開発中のものです。 mailto:sage [2006/10/18(水) 16:11:59 ID:5TL5JyUw]
DXライブラリ厨乙

308 名前:名前は開発中のものです。 mailto:sage [2006/10/18(水) 20:30:52 ID:jafne6Pg]
二人合わせてWTL

309 名前:名前は開発中のものです。 [2006/10/19(木) 19:35:51 ID:QtL2sYe+]
DXライブラリは救世主だと思ったのに

310 名前:名前は開発中のものです。 [2006/10/22(日) 11:41:55 ID:Q0NnJdKD]
     i:::::::::::::i:::::::;:::::::::::::::::::::::::/i:::::/ i::::::::::::::::::::::| そんなことよりもっと考えるべきことがあるだろう。
     |::::::::::::|:::::/::::::::::;:::::::::/ /:::/  i::::::i:::::::::::::i たとえば『画面のキャリブレーション』だ。
     |:::::::::::|:::::i:::::::/::::/  /:::/   |::::|:::::::::::/ 画面によってぜんぜん発色が違うのは常識だね?
     ∨:::::::|::::|:::::イ:::/   /:::/    |::::|:::::::::/ そう、常識だ。いや、常識だと多くの人々が思っている。
      ∨:::::|:::| ̄ナナ=、  /::Zz=='"T:T|:::::::/  だが、実は画面やドライバの設定がおかしいだけかもしれない。
      ∨:::|::|::ャ代戌ナ= // 弋戌テT:ァi::::::/   そもそも最低限の調整すらしたこと無い人が多いのではないか。
       ∨:::i:i/ i/     /      i/./:::::/,_,, そう主張する人も少なくない。
       rヤ::::|i. !    /       /i::::::ハ Y  ふっ、どうも私は口下手で困るよ。
      ,,イrヤ::::|ゝ.      i     / ,イ::::< .〉 .ト、 つまり常識を疑えということだ。
    rイ! レヤ:::|i .ゝ.   _ _     .イ.|:::/ ソ  ! ト‐、
>ー''フ/''|  | ヤi::| i .|\      // |::/ /    ト、 `ー、
   / i   i ャヤi j  > 、  //./  |:i /    | Y

ttp://www.eurus.dti.ne.jp/~koich-n/retouch/display.html
ttp://blogs.yahoo.co.jp/komutai_tk/42100061.html
ttp://www.w3.org/Graphics/Color/sRGB
ttp://bsg.to/mt/archives/200609/2006-09-07T23:42.shtml



311 名前:名前は開発中のものです。 mailto:sage [2006/11/04(土) 08:44:47 ID:u3HqISdl]
会話などを表示するためにサブウインドウを作成し、表示したのですが
表示中に再描画を行うとサブウインドウの画面がちらついてしまいます。
これを防ぐにはどのような対処を行えば良いでしょうか?

312 名前:名前は開発中のものです。 mailto:sage [2006/11/04(土) 12:58:01 ID:/q8A3ZyR]
>>311
一度画面全体をバックバッファに描く


313 名前:名前は開発中のものです。 mailto:sage [2006/11/04(土) 16:36:15 ID:u3HqISdl]
>>312
ShowWindow();を使ってたんですが
ウインドウも画像を使うべきということでしょうか?

314 名前:名前は開発中のものです。 mailto:sage [2006/11/04(土) 19:48:09 ID:eIj40MQq]
>>313
とりあえずバックバッファでググレ。

315 名前:名前は開発中のものです。 mailto:sage [2006/11/07(火) 11:51:06 ID:8tSL6aoZ]
>>313
ヒント「DIBSection」


316 名前:名前は開発中のものです。 mailto:sage [2006/11/07(火) 14:05:03 ID:WJeQGxZV]
そのサブウィンドウってのはWindowsのウィンドウとして作ってるの?
だとしたら親ウィンドウにWS_CLIPCHILDREN属性を設定すればいいと思う。

ただ、ゲームを作る場合312-315のとおり、ウィンドウは1枚だけにして
内部のユーザインターフェイスは自前で用意するのが普通。

317 名前:313 mailto:sage [2006/11/07(火) 14:07:56 ID:WJeQGxZV]
>>313を見落としてた
WM_PAINTを呼び出したいなら再描画指示はInvalidateRectで、
最後のパラメータはFALSEでね。

318 名前:311 mailto:sage [2006/11/07(火) 18:31:21 ID:wb4UfHDQ]
>>312-317
画像で作成する方法がよく使われてるということですので
そちらで作成することにします
ご回答下さった方ありがとうございました

319 名前:名前は開発中のものです。 mailto:sage [2006/11/07(火) 19:56:31 ID:Gmffc/vx]
>>311
C言語?他に使ってるライブラリは?

320 名前:311 mailto:sage [2006/11/08(水) 22:17:58 ID:g81bdmif]
Cです
ライブラリ等は特に使ってません



321 名前:名前は開発中のものです。 mailto:sage [2006/11/09(木) 01:44:06 ID:RPNJn70P]
問題が解決したのなら必要ですが、WM_ERASEBKGNDメッセージ処理を
DefWindowProcにさせなければ良いという話がよくあります。

322 名前:名前は開発中のものです。 mailto:sage [2006/11/09(木) 01:45:22 ID:RPNJn70P]
>>321 大きな間違い。
○必要ですが、
×必要ないですが、

問題が解決したのなら必要ないですが、WM_ERASEBKGNDメッセージ処理を
DefWindowProcにさせなければ良いという話がよくあります。

323 名前:名前は開発中のものです。 [2006/11/17(金) 04:17:18 ID:5hvBfGHn]
シーン管理などで手間取ってるのですが、
何か良いサイト・参考書などありませんでしょうか?

324 名前:名前は開発中のものです。 mailto:sage [2006/11/17(金) 05:19:47 ID:t6WIPUdH]
漠然とし過ぎてる。

325 名前:名前は開発中のものです。 mailto:sage [2006/11/17(金) 05:30:25 ID:5hvBfGHn]
Sceneクラスを管理するSceneManagerクラスを作ったまでは良かったんですが、
Sceneクラス内でシーンのpopやpush、deleteをするのに、SceneManagerに直接頼めないので困ってます。

Sceneクラスにフラグを持たせて逐一チェックすれば実装は可能なんですがなんか微妙ですし…。

326 名前:名前は開発中のものです。 mailto:sage [2006/11/17(金) 06:03:38 ID:t6WIPUdH]
@言語は?
Aシーンをスタック(pushとpop)するという事はアドベンチャーゲーム?
Bdeleteするのはスタックされているシーン?

327 名前:名前は開発中のものです。 [2006/11/17(金) 06:24:34 ID:5hvBfGHn]
@C言語です
Aアドベンチャーではありません。
B自クラスorスタックされてるシーン全て含みます。

ドラクエを例に取ると

オープニングシーン
↑↓シーン移動
セーブデータロードシーン
↑↓シーン移動
マップシーン
↑↓シーンPush(移動も可)
戦闘シーン

という作業を効率良く管理したいのです。

328 名前:323 [2006/11/17(金) 16:18:43 ID:5hvBfGHn]
 
・最下層ヘッダ ( SCENE (TITLE_SCENE, OPENING_SCENE...)の定義 )
・CScene
・CSceneManager

の順を守ることで自己解決しました。

329 名前:名前は開発中のものです。 mailto:sage [2006/11/19(日) 08:06:52 ID:x2dz501C]
isuファイルの作り方が分かりません。

330 名前:名前は開発中のものです。 [2006/11/19(日) 10:23:46 ID:urBRsIAy]
参照とポインタ、値渡しと参照渡し
このあたりの違いが、うまくまとまらないんです



331 名前:名前は開発中のものです。 mailto:sage [2006/11/19(日) 10:50:12 ID:x2dz501C]
>>330
C++?

332 名前:名前は開発中のものです。 mailto:sage [2006/11/19(日) 11:16:06 ID:x2dz501C]
ポインタが出てくるからC++か。
void func1(int& val)
{
val = 10;
}
void func2(int val)
{
val = 10;
}
func1では参照渡しなので引数valの値が変化します。func2ではvalのコピーが渡されるだけなので
値は変化しません。

C++では参照は定義した時に初期化が必要です。
int& val = intger;
int* pVal;

val = 10; 参照に後から代入すると(ここでは)intgerの値が変化します。
pVal = &intger; ポインタは後からアドレスを代入できます。
*pVal = 10; これでintgerの値が変化します。

333 名前:名前は開発中のものです。 [2006/11/19(日) 13:43:43 ID:urBRsIAy]
>>332
ありがとう、前半はいいんだけど、
例えば例題として、値渡ししていた関数funk3があるとして
//関数コールはこんなかんじ
int val = 10;
val = funk3(val);

int funk3(int val)
{
val = val * 2;
return val;
}

//参照渡しに変更するとき
int val = 10;
int& ref = val; //【疑問1】ここで宣言すんの?
val = funk3(ref);

int funk3(int& val) //【疑問2】呼び出し時点で初期化されてるのかな?
{
val = val * 2; //
return val;
}
この辺がよくわからないのです。

334 名前:名前は開発中のものです。 mailto:sage [2006/11/19(日) 13:54:54 ID:fUpTw/Bs]
mciでmidiオープンするとwavはすぐなのに時間かかるのなんで?

335 名前:名前は開発中のものです。 mailto:sage [2006/11/19(日) 14:31:24 ID:x2dz501C]
>>333
参照渡し引数に参照を用意して渡す必要はありません。

int val = 10;

funk3(val);

int funk3(int& val)
{
val *= 2; // 2倍にする場合左の記述が出来ます。
return val;
}
この時関数funk3を抜けると引数valは20になります。戻り値を受け取る必要はありません。
この場合、funk3は以下のように戻り値なしでも良いです。
void funk3(int&val)
{
val *= 2;
}

以下のように別に戻り値を受け取る必要がある場合は別ですが。

int val = 10;
int data;

data = funk3(val);

int funk3(int&val)
{
val *= 2;
return val * 2;
}

336 名前:名前は開発中のものです。 [2006/11/19(日) 15:16:12 ID:urBRsIAy]
>>335
ありがとうございます。漸く理解できました。
ということは、やはりメンバで宣言された時点で初期化も行われているのですね。
参照は初期化が必要と聞いていたのでその点がどうしてもわかりませんでした。
int val = 10;
funk3(val);
//   └──┐引数valの参照としてメンバーのvalが定義される
int funk3(int& val)
{
val = val * 2;
return val;
//この場合return不要とのことですが、記述したままで不都合はありますかね?
//関数の型を維持しておきたいのです。
}

//次にポインタの場合なのですが、
int val = 10;
funk3(&val);
//   └──┐valに参照演算子を使ってアドレスを引数にする。
void funk3(int* pVal) //アドレスはint*型のpValに代入したい。でも*pValって値を格納する式だよね。
{
pVal *= 2;
// それとも *pVal *= 2; ?
// なんか変だ、pValというのはポインタなので、値を代入する場合は*pValに入れる必要がある。
// 最初に宣言した*pValにはアドレスが入っちゃってるんじゃないだろうか。2倍するのは危険じゃないか。
}
funk3(val);で呼び出して、void funk3(int* pVal) に渡すのかな。
funk3(&val);で呼び出して、void funk3(int pVal) で、式中では*pValを使用でいいのかな。
と、このような感じで悩んでおります。
ここが解ればテキストを読み進められそうなので、お願いします。本当に長々と申し訳ありません。

337 名前:名前は開発中のものです。 mailto:sage [2006/11/19(日) 15:40:27 ID:x2dz501C]
>>336 前半
>//この場合return不要とのことですが、記述したままで不都合はありますかね?
不都合ありません。

>>336 後半
void funk3(int* pVal)
{
*pVal *= 2; // 2倍する場合、このように記述してください。

pVal *= 2; // これだとコンパイルエラーになります。
}

呼び出す時は以下のようにします。
int val = 10;
funk3(&val);
宣言は以下になります。
void funk3(int*pVal)
{
}

338 名前:名前は開発中のものです。 [2006/11/19(日) 15:47:52 ID:naTTgqRZ]
>>334
音源の初期化に時間がかかるとかなんとか
俺はMIDIでもmpegvideo(2が使えれば2)使う
こっちなら待ち時間なし

339 名前:名前は開発中のものです。 mailto:sage [2006/11/19(日) 18:08:02 ID:N4xxvn6y]
C++やるならポインタの本一冊持ってた方が
絶対に良いと思うんだけど、後々忘れた時にも役立つし

340 名前:名前は開発中のものです。 [2006/11/19(日) 18:18:34 ID:urBRsIAy]
>>337
ということは、ポインタとして宣言しているにも関わらず、
関数に渡された時点でpVal = &val (正しい入れ物に格納)が行われる。

void funk3(int*pVal) //pVal = &val が行われる

値渡し、参照渡し、ポインタ渡しについてなんとか理解できました。
ありがとうございました。

>>339
ポインタだけで一冊本になってしまうんですか…
やはり奥が深いものなんですね。



341 名前:名前は開発中のものです。 mailto:sage [2006/11/19(日) 18:27:56 ID:2miANHZG]
ポインタ=アドレスを格納する変数。

342 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 04:26:34 ID:U++jXOTp]
>>341
理解する前は中々その概念が飲み込めなかったな

343 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 06:08:52 ID:ZcLa67Yd]
本見ただけじゃ分からなくて、自作関数とか使うようになってから理解したなぁ

344 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 09:19:16 ID:cWAxydvH]
本読んでいる段階で関数定義しなかったほうがおかしい。
よほどの悪書に当たったんだな。

345 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 17:17:53 ID:qN/GewWR]
ポインタがアドレスを格納する変数なのはいいが、
+1して次の1バイトを指さないのがムカツクw

346 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 17:27:30 ID:1bEPmk5z]
int a[] = {0, 1, 2, 3}:
int *p = a;
printf("%d",*(p + 1));
         ↑これで次の1バイトにされたら
           堪んねぇだろw

347 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 19:28:24 ID:AJ2QuceH]
でもアドレスがどこ指すかを単純に四則計算してくれた方が分かりやすいのではなかろうか?

printf("%d", *(p +(sizeof(int) * 1));
手間かな?

348 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 19:29:29 ID:AJ2QuceH]
ヤバイ。
;の前に’)’が必要です。
と言われる…

349 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 20:01:30 ID:1bEPmk5z]
どうしても次の1バイトが欲しけりゃ
(char *)でキャストすればいいし

350 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 20:58:13 ID:7k9bIboP]
ふと鏡を見たとき
僕は おっさんだった
        _____
          |    //|
  ∧_∧  |  ∧_∧ |
 ( ´/д)  | (дヽ` ). |
          |        |




351 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 20:58:31 ID:S5Fs/BKE]
void型ポインタのポインタを引数にchar型のポインタのポインタを返す
関数配列へのポインタのポインタ。


352 名前:名前は開発中のものです。 mailto:sage [2006/11/20(月) 21:02:55 ID:7k9bIboP]
ポインタ言いたいだけちゃうん






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<218KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef