[過去ログ]
無料で俺がRPGを作れるようにするスレ (474レス)
無料で俺がRPGを作れるようにするスレ http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
128: 98 [sage] 04/02/20 23:43 ID:WBg2coIl >>126 ちょっとやってみたんですが、まだ理解不足でコンパイル時にエラー10個くらいでますた。 今はとりあえずBitBltしまくっておいて、マップスクロール時に問題が出てきたら それでやってみます。 >>127 がんがりませう。 マップは出たんですが、動かないです。ソース見た感じだと、もとから動かない仕様でしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/128
129: 名前は開発中のものです。 [sage] 04/02/21 00:50 ID:b1rfLJZj 98もゲムを実行するには何のランタイムが必要ですか? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/129
130: 名前は開発中のものです。 [sage] 04/02/21 01:54 ID:Jr2f0/ES >>128 好きな場所にマップチップが置けないってのは解決したの? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/130
131: 124 [sage] 04/02/21 10:59 ID:SOonC27/ >>128 ああ、マップ表示のサンプルですよ。 動かない、というかキャラクター表示はまだ。 一応マップ表示の原理をHSPで書いてみたんだけど。 >>126の言ってることをやってます。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/131
132: 98 [sage] 04/02/21 23:50 ID:n2vfldWV >>129 ランタイムいらないです。コンパイラが必要です。 まだゲームといえない段階なので、もうちょっとできたらexeでうpします。 >>130 好きな場所に置くこと自体はできたんですが、今のまま作っていくと、 マップが大きくなったときに死ねそうです。↓ http://www.geocities.co.jp/SiliconValley-Bay/2736/vvv.txt >>126氏の方法で挫折したのが↓ エラーイパーイ http://www.geocities.co.jp/SiliconValley-Bay/2736/vvv1.txt >>131 bmpファイル一つからマップチップ4つ取り出す方法もあるんですね。 bmpファイルを4つに分けるより効率がいいんでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/132
133: 名前は開発中のものです。 [sage] 04/02/22 00:16 ID:qoGQgaC2 >>132 そりゃaryはintなんだから、HBITMAPつっこもうとすればエラー出るだろう。 この場合で言えば、ary[x][y]にはhBitmapのインデックスだけ入れるべきかと。 まあこのマップ構成ならば、 int ary[3][3] = {0, 0, 0, 0, 1, 2, 0, 0, 0}; としておいて、描画する時は SelectObject(hBuffer , hBitmap[ary[map_x][map_y]]); とするのが正しいかと。 マップデータがでかくなってきたら、データをファイルに移してそこから読み込ませるようにすればさらに一歩前進。 あとせっかく配列を使ってるんだから、読み込みとか解放でも一個ずつやらんでループ使った方がいいんでは? for(int i=0;i<3;i++) DeleteObject(hBitmap[i]); ちう感じで。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/133
134: 124 [sage] 04/02/22 00:20 ID:qJjHo9kX >>132 基本的には、一つの場所(街なら街、洞窟なら洞窟)のチップは全て 一つにまとめるのが普通だと思いますよ。 読み込むときに、「ファイルを探してー>読み込む」という手順を踏むわけですから、 一つにまとめておけば、一回探せば後は読み込むだけです。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/134
135: 98 [sage] 04/02/23 00:24 ID:yOz6UeEe >>133 ありがとうございます!できますた! >マップデータがでかくなってきたら、データをファイルに移して これはdllというのでしょうか?まだ全然やってない分野です。 >>134 さっそく真似しようとしたんですが、絵をまとめるとソースが長くなる、 ソースまとめると絵がまとめられない、という状況になってます・・ いろいろ問題が出てきてしまったけど、前半最大の山場と思われる マップスクロール実装にとりかかってみます。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/135
136: 名前は開発中のものです。 [sage] 04/02/23 01:41 ID:tZlxc2xv >>135 >>マップデータがでかくなってきたら、データをファイルに移して >これはdllというのでしょうか?まだ全然やってない分野です。 普通にマップ構造を記述したファイルを読み込むだけだと思うんだけど、 そうしないとマップをちょっといじるだけで再コンパイルせにゃならんし。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/136
137: 98 [] 04/02/24 19:40 ID:+E54f9HV >>136 リソースからは読み込めたんですが、デメリットしかないので、これではないですよね・・ xxx.txtから読み込めるとしたら、メリットがかなりありそうなんで、もうちょっと調べてみます。 なめらかスクロールは処理が多そうなので、まずは キーを押したら1マス(32ドット)瞬間移動プログラム↓ http://www.geocities.co.jp/SiliconValley-Bay/2736/vvv4.txt goto使ってしまった orz http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/137
138: 名前は開発中のものです。 [sage] 04/02/24 20:01 ID:Y7quTbTQ >xxx.txtから読み込めるとしたら、メリットがかなりありそうなんで、もうちょっと調べてみます。 fopenやfgetsを使ってファイルを操作したことないのか…? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/138
139: 名前は開発中のものです。 [sage] 04/02/24 20:03 ID:HARgZ9D7 InvalidateRectしてるなら明示的にWM_PAINTにジャンプしなくても次のメッセージループでWM_PAINT呼び出してくれると思うが・・・ もしやるとしても、gotoじゃなくcase WM_KEYDOWNの下にcase WM_PAINTをおいといて、breakを書かない、という風にした方がいいんじゃないかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/139
140: 98 [sage] 04/02/24 21:07 ID:+E54f9HV >>138 ファイル操作はゲームに関係なさそうだったので、ほとんど勉強してないです。 fopenというのを調べて出直してきます。 >>139 今、gotoなしでやってみたんですが、不正終了?みたいになりました。 >gotoじゃなくcase WM_KEYDOWNの下にcase WM_PAINTをおいといて こっちでは大丈夫でした。 caseって全部並列なものかと思ってたんですが、順番関係あるんですね http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/140
141: 名前は開発中のものです。 [sage] 04/02/24 21:28 ID:HARgZ9D7 >>140 goto抜いたらbreakつけなきゃダメよ(;´Д`) breakつけないと、次のcaseラベルが実行されるから、この場合だとWM_CREATEが実行されてまう。 不正終了は多分そのせいかと http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/141
142: 名前は開発中のものです。 [sage] 04/02/24 21:30 ID:HARgZ9D7 >ファイル操作はゲームに関係なさそう データファイルがないゲームなんてそうそうないと思うが・・・ 最低でもセーブデータとか作るためにはファイル操作は不可欠だろう http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/142
143: 名前は開発中のものです。 [sage] 04/02/24 21:34 ID:QzqFx48f RPGの半分はデータベースで出来ています http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/143
144: 名前は開発中のものです。 [sage] 04/02/24 22:31 ID:kFyAt63U >>137 >リソースからは読み込めたんですが、デメリットしかないので、これではないですよね・・ いや最終的には、画像などのデータはリソースにまとめたほうが良いよ。 ただしバイナリのリソースね。画像なら、RGBデータの形で持つ、とか。 画像については、RGB配列(DIB)の扱いを練習しておいたほうが良いかも。 キャラクタの透過描画や画面の特殊効果などさまざまな場面で必要になって くる。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/144
145: 98 [sage] 04/02/25 19:38 ID:g+59HVuE >>141 あ、なんとなく理解しました。break;の代わりにreturn 0;でもいいってことですね。 >>142 作り始めた当初は、セーブが必要になるほど長いゲームは作れない気がしてたので。 いざとなったら ふっかつのじゅもん にすればファイル操作いらないな、とか思ってました。 >>143 まだシナリオとか考えてないんで、データベースの半分は手抜きです。になりそう・・ >>144 ぱっと見で難しそうだったんで、まだほとんどやってないですが、ちょっとずつやってみます。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/145
146: 名前は開発中のものです。 [sage] 04/02/25 19:52 ID:MjBoX65v >>145 この場合はreturn 0;でも動くけど、出来る限りbreakは書くクセをつけるべきだと思う。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/146
147: 98 [sage] 04/02/29 18:24 ID:Ycy/2GWo DIBが理解できなくて停滞中 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/147
148: 名前は開発中のものです。 [sage] 04/02/29 18:41 ID:gj9x0Pg+ 素直にJ-RPG使っとけ http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/148
149: 98 [sage] 04/02/29 19:41 ID:Ycy/2GWo C++でRPG作るのが目標なので、遠慮しときます http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/149
150: 名前は開発中のものです。 [sage] 04/02/29 20:14 ID:CI/gdVj9 >>147 どの辺が分からんの? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/150
151: 98 [sage] 04/02/29 21:21 ID:Ycy/2GWo 一つのbmpファイルをウィンドウに複数表示はできるのですが、 複数のbmpファイルを表示させようとするとメモリ不足とか言われます http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/151
152: 名前は開発中のものです。 [sage] 04/02/29 21:30 ID:CI/gdVj9 ソースを張ってくれないと何とも言えない http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/152
153: 98 [sage] 04/02/29 21:49 ID:Ycy/2GWo 単一bmpファイル敷き詰め↓ http://www.geocities.co.jp/SiliconValley-Bay/2736/zz.txt 複数bmpファイル表示(コンパイルは通るけれど実行注意)↓ http://www.geocities.co.jp/SiliconValley-Bay/2736/zz1.txt 下のは実行するとやばいので、コンパイルする人もしいたら気をつけてください 何か、根元から間違えてるような気がする。。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/153
154: 名無しさんは14才 [sage] 04/03/02 17:40 ID:W0CJyzOg マカーのくせに口出ししてごめんね。 WinのAPIはほとんど触ったことないから半分カンなんだけど。 DrawMapの話だけど、せっかく定義してるのにMaparyをつかってないんじゃない? icは4になってると思うから、添え字が範囲外なんじゃないかしら。 StretchDIBits(hdc , 32*map_x , 32*map_y , iWidth[Mapary[y][x]],(以下同) みたいにしたかったんじゃないの? というか、各BMPのサイズが同じなんだから、わざわざ画像からサイズ取得しないでも StretchDIBits(hdc , 32*map_x , 32*map_y , 32, 32, 0, 0, 32, 32, lpPixel[Mapary[y][x]](以下略) と書いちゃえばいいような気がする。 そんなカンジでがんばれ〜。 わたしは当分応援モード。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/154
155: 124 [sage] 04/03/02 18:49 ID:0D6IPbfs >>153 いきなりRPGは無謀スギかも。 でもがんばってるみたいだから応援するよ。 ちょっと今時間無いんで、時間出来たらマップ表示を HSPからCに書き直したものをアップするよ。 まあ、そのときには解決してるかもしれんが… >>154 >というか、各BMPのサイズが同じなんだから、わざわざ画像からサイズ取得しないでも >StretchDIBits(hdc , 32*map_x , 32*map_y , 32, 32, 0, 0, 32, 32, lpPixel[Mapary[y][x]](以下略) >と書いちゃえばいいような気がする。 あんまり定数はプログラム中には入れない方がいいと… 小規模ならマクロでも良いかもしれんが、constとかやるのがいいのでは? ここはBMPからサイズ取得が一番良いかもしれんね。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/155
156: 98 [sage] 04/03/02 21:58 ID:YGTCiQU4 >>154 混乱してて、Mapary使うの忘れてました。 問題点を分かりやすくするために、StretchDIBitsの部分はとりあえず定数にしてみます。 >>155 javascriptで簡単なゲームは作ったことがあるんですが、C/C++でプログラム組むのは 初めてなんで、かなり無謀だとは思ってます。 マップ表示はたぶんできるんですが、その前に複数のbmpファイルを読み込むことが できないんです。 デバッガ使ってみたところ、問題点らしきところは発見できたものの、なぜだめなののかが 分からない・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/156
157: 名前は開発中のものです。 [sage] 04/03/02 22:18 ID:euQtmlJ9 >>156 BMPの読み込み(BMPからのDIB作成)は、マップチップなら「ビットマップ の大きさ」を決めておくと楽。そうすれば自動的にBMPに格納されている DIBピクセル列の大きさも特定できるから、ただ「ピクセル列までのオフ セットから決まったバイト数読み込む」だけの処理になるからね。 1枚のBMPからDIBを作成できるようになったら、BMPも「マップチップを縦 に並べたビットマップ」にしておけば、一枚のビットマップから連続して 読み込める(24ビットで横幅が4の倍数なら、横幅×高さ×3バイトずつ 区切って読んでいけばよい)。ただし、この場合はDIBの座標系に注意。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/157
158: 98 [sage] 04/03/02 23:19 ID:YGTCiQU4 >>157 一週間悩んでたのに、一瞬でできますた。 http://www.geocities.co.jp/SiliconValley-Bay/2736/zz31.txt 複数ファイルが読み込めないと何かが困るような気がしてたんですが、 ドラクエのようなものなら、困ることないですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/158
159: 98 [sage] 04/03/04 20:15 ID:UUYCFgVb DIB版矢印キー押すと32ドット移動ウェイトつき http://www.geocities.co.jp/SiliconValley-Bay/2736/zz32.txt Sleep中は全ての処理が止まるのかと思っていたら、その間入力した キーを記憶しているらしく、Sleep中のキー入力が反映されてしまう。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/159
160: 名前は開発中のものです。 [sage] 04/03/05 02:41 ID:dAc27ulc >>159 タイマー使ってみたら? 自前でフラグ用意してtimeGetTimeではかっても良いだろうけど http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/160
161: 98 [sage] 04/03/06 17:58 ID:9gF+FHHa timeGetTime使ってみました。 http://www.geocities.co.jp/SiliconValley-Bay/2736/zz35.txt まだキーが記憶されてしまいます。 MSDN調べてみたら、 The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState. なので、GetAsyncKeyStateを使うこと自体をやめるか、いったん破棄しないといけなかったみたいです http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/161
162: 98 [age] 04/03/06 20:21 ID:9gF+FHHa 瞬間移動完成。 http://www.geocities.co.jp/SiliconValley-Bay/2736/zz36.txt 微妙にゲームらしきものになってきた。 GetAsyncKeyStateのほうがゲームに適しているとどこかで見たけれど、 押したキーを勝手に記録してしまうため、使いこなせなかった。 次はキーを押したら16ドット移動を2回繰り返すものを作ろうと思う。 すでにDIB使ってるので、たぶん簡単にできるような気がする http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/162
163: 名前は開発中のものです。 [sage] 04/03/07 01:10 ID:gNoMVuak 自分も2月の最初くらいからAPI始めた者です。 使用言語はCで、今のところテトリスとかボンバーマンもどきを作りました。 現在ttp://www.sm.rim.or.jp/~shishido/を見ながら、 DIBを勉強中ですが、かなり苦戦してます。 >>98さんは何で勉強しましたか?良かったら教えて下さい。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/163
164: 名前は開発中のものです。 [sage] 04/03/07 12:27 ID:/QKwfpo/ >>162 そろそろファイル入出力もかじり始めた方がいいかもね。 DIBが使えるならファイル入出力はそんなに難しくはない・・・はず。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/164
165: 名前は開発中のものです。 [sage] 04/03/07 13:40 ID:Ha7O6gmU なんでPeekMessage使ってるの? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/165
166: 98 [sage] 04/03/07 14:44 ID:/nCa36PZ >>163 ttp://black.sakura.ne.jp/~third/system/winapi/win.html ここと、MSDN見てます。 同じ時期に始めてもうボンバーマン作れるってすごい・・・。 >>164 DIBの前に少しかじったんですが、挫折しました。 xxx.iniというファイルを使えばいろいろできそうだけど、絶対パスで指定しなければいけない ので、使えねー!ってところで思考停止してます。 難しくてトラウマになってるんですが、ここを乗り越えないとしょぼいゲームしか作れなそうなので ちょっとずつやってみます。 >>165 昔の名残です。if(PeekMessage(&msg , NULL , 0 , 0 , PM_NOREMOVE))があってもなくても 同じだと思うので、使うときのために消していないだけです。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/166
167: 名前は開発中のものです。 [sage] 04/03/07 15:08 ID:gNoMVuak >>166 レスありがとうございます。 そこも前から見てたんですが、分からないのです。 でも、同じのを見て出来る方がいるという事は自分の努力が足りないって事ですね。 もう少し修行してきます。 ボンバーマンは全部マスク画像を使ってAND・ORする方法でやったのでそんなに難しくは無かったです。 では。RPG製作頑張って下さい。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/167
168: 98 [sage] 04/03/07 17:38 ID:/nCa36PZ >>167 俺もまだよく分かってないんですが、ちょっとずついじってれば使えるようになると思います。 汚くてよければ>>153と>>158にソースがあるので、よかったらドゾー 右スクロール時のみ16ドット移動を2回するプログラム http://www.geocities.co.jp/SiliconValley-Bay/2736/zz38.txt 効率が悪すぎるような気がする。こういうのをスパゲティソースというのかもしれない。 (´-`)。oO(AND ORってなんだろう) http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/168
169: 98 [] 04/03/09 18:14 ID:quioYjmo C/C++始めて一ヶ月たったので、今回はEXEでうp(28.4KB) http://www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a1.zip 次はキャラ表示をしようと思う。透過処理が難しそう。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/169
170: 名前は開発中のものです。 [sage] 04/03/09 20:50 ID:nDvOJ8eM >>169 透過処理はAND OR http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/170
171: 名前は開発中のものです。 [sage] 04/03/09 22:45 ID:sCetmjvX >>169 透過処理は単に「抜き色を決めてその色以外を転送する」処理をすれば よいだけ。キャラクタのDIBを1ピクセルずつ背景に転送していっても、 速度的には問題ない。 この場合は32ビットDIBだと楽だね(DWORD単位でアクセスできるから)。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/171
172: 98 [sage] 04/03/11 19:38 ID:e07lqvXR >>170 AND ORでググルとグーグルにヌッコロされるのでだめです http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=AND+OR+C&lr=lang_ja >>171 肝心な部分が分かってないからなのか、実際にやろうとするとなぜかできないです。 http://www.geocities.co.jp/SiliconValley-Bay/2736/zz45.txt 1ピクセルずつ表示もやってみたんですが、俺のPCのスペックのせいか、若干遅く感じました。 ところで、俺はPCゲームはあまりやったことがないのでよく分からないんですが、 キャラが32*32ドットってどうなんでしょうか。どうも小さく感じます。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/172
173: 98 [sage] 04/03/11 21:52 ID:e07lqvXR 微妙にずれるものの、透過しつつキャラクタのDIBを1ピクセルずつ背景に転送は成功。↓ http://www.geocities.co.jp/SiliconValley-Bay/2736/zz46.txt なめらかにスクロールさせるためにマップをtimeGetTimeで30msごとに描画しているんですが、 この透過方法だとキャラクタ描画処理が遅いため、歩行アニメーションをつけるときに いろいろと苦労しそう。 メモリに読み込むときに透過処理をしたほうがよさそうだけど、なぜか透過しない。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/173
174: 98 [] 04/03/12 20:39 ID:grlqwW2o 上がソースで下が実行ファイル http://www.geocities.co.jp/SiliconValley-Bay/2736/zz50.txt http://www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a2.zip 問題点:画面がちらつく。キー入力を微妙に記憶してしまう。 次は街を作って、マップ切り替えをしようと思う。 どんなゲームにするかとかもそろそろ考えないといけないけど、そっちは興味がないので 適当に募集中。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/174
175: 名前は開発中のものです。 [] 04/03/12 21:26 ID:qU+SxdKI >画面がちらつく。 CreateDIBSectionでオフスクリーンバッファを作るんだ! ダブルバッファリングともいう。 >キー入力を 簡潔に説明するのは難しいんだが、今のキー押下処理→描画処理のやり方は ゲームのつくりk他としては完全に間違ってる。 ゲームループとか検索してみるとわかるかもしれん。 他のスレのレスからヒントをば。 http://pc2.2ch.net/test/read.cgi/gamedev/1020417733/124 >タイマ(WM_TIMER)は不安定なので普通ゲームには使わないぞ。 >↓ここの1.4.1みたいに処理すべし。 >http://www.microsoft.com/japan/msdn/academic/Articles/DirectX/01/ http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/175
176: 98 [sage] 04/03/13 19:41 ID:xCK866zy >>175 キー入力はできますた。かなり操作性向上 DIBSectionが難しくててこずってます。 本の通りにDIBSectionを使ってるはずなのに、エラーが出るのはなぜだろう。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/176
177: 名前は開発中のものです。 [sage] 04/03/14 08:15 ID:wW4VHkXB >>176 コンパイル時のエラーなら、型があっていない(またはSelectObjectなどが返す値を適切にキャストしていない)とか。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/177
178: 名前は開発中のものです。 [sage] 04/03/14 17:48 ID:a3XrN6fU >>176 とりあえずエラーを貼り付ける。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/178
179: 98 [sage] 04/03/14 22:20 ID:13t3R65N エラー E2034 zz53.cpp 135: 'void *' 型は 'HBITMAP__ *' 型に変換できない(関数 __s tdcall WndProc(HWND__ *,unsigned int,unsigned int,long) ) エラー出るソース http://www.geocities.co.jp/SiliconValley-Bay/2736/zz53.txt (HBITMAP)つけてみたらコンパイルは通ったんですが、DIBSectionには何もさせていない のに、強制終了します。 本はCで書かれているんですが、自分の書いてるのがたぶんC++なので、 そのへんの問題でしょうか。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/179
180: 名前は開発中のものです。 [sage] 04/03/14 22:32 ID:RZwlVtdf >>179 >(HBITMAP)つけてみたらコンパイルは通ったんですが、DIBSectionには何もさせていない >のに、強制終了します。 とりあえず、怪しいところをコメントアウトするなり変数の値を表示さ せるなり(デバッガがあるならブレークポイントを入れる)してどこで 落ちるのか、特定してみた方が良いね。 >本はCで書かれているんですが、自分の書いてるのがたぶんC++なので、 >そのへんの問題でしょうか。 そうだね。 CとC++では、デフォルトの型チェックが違う。 C++でSelectObjectの返すハンドルをGDIのハンドルを保持する変数に 入れたいなら、個別にGDIのハンドルの型に合わせたキャストが必要。 まあ、拡張子をcにしてCのソースとしてコンパイルしても良いかもし れんがw ところで「本」って何の本? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/180
181: 98 [sage] 04/03/14 23:00 ID:13t3R65N ゲームプログラミング練習帳 という本見てます。 デバッガですが、今問題にしている部分より前の段階ですでに止まってくれるので 使い物にならない状態です。止まる部分も、CとC++の違いのせいの気がします。 Cは全然知らないんですが、見ているサイトも本もCを使ってAPIの解説をしているので、 Cで書き直すのが早いような気がしてきました・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/181
182: 名前は開発中のものです。 [sage] 04/03/14 23:21 ID:gdC9c3eD >>179 原因は133行目の&lpPixel。 hBMP = CreateDIBSection(hdc , &biInfo , DIB_RGB_COLORS , (LPVOID *)(&lpPixel) , NULL , 0); ↓ hBMP = CreateDIBSection(hdc , &biInfo , DIB_RGB_COLORS , (LPVOID *)(lpPixel) , NULL , 0); おかしな指定をしたせいで、lpPixelのポインタの値が変な値に書き換わって壊れてしまっている。 HeapAllocしたときのlpPixelの値と133行目でのlpPixelの値を調べてみれば、壊れているのが分かるはず。 なぜ、上の指定の仕方ではいけないのか、とか、どうして値が壊れるのかとかは、自分で考えてみてね。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/182
183: 名前は開発中のものです。 [sage] 04/03/14 23:32 ID:gdC9c3eD あぁ、97行目の >iOffset = *(LPDWORD)(lpBMP + 10);//iOffset ピクセルが格納されてるアドレス、ここでなぜかデバッガ止まる でとまるのは、BMPファイルが見つかってないからでしょ。多分。 ちゃんとCreateFileのエラー処理を汁! あと、 >(HBITMAP)つけてみたらコンパイルは通ったんですが、 これは、Windows的には正しい。Cだと書かなくてもコンパイルと折るけど、 C++は型違いを厳密に見るから、型変換しないといけないわけだ。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/183
184: 182 [sage] 04/03/15 00:06 ID:mfA2vkrj ごめn>>182は違った。 CreateDIBSection()なんか久しぶりに使ったから忘れてたよ。 >>179の使い方なら、 hBMP = CreateDIBSection(hdc , &biInfo , DIB_RGB_COLORS , NULL , NULL , 0); でいいんじゃない?一応うごいたよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/184
185: 名前は開発中のものです。 [sage] 04/03/15 00:14 ID:BH49Bw7k ちうか、CreateDIBSectionで作ったビットマップ使って無いじゃん… あと、hdcをグローバル変数にするのはよくないと思う。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/185
186: 98 [sage] 04/03/15 00:37 ID:YR7Ealek >>182 (LPVOID *)(lpPixel)でもNULLでも動きました。 CreateDIBSectionの第4引数にはポインタのポインタを指定しなければいけないのに、(LPVOID *)(&lpPixel) だとアドレスのポインタのポインタだから間違いというところまでは分かったんですが、 Cだと(LPVOID *)(&lpPixel)が正しくて、C++だと(LPVOID *)(lpPixel)が正しいということは ポインタの書き方がCとC++で違うということなんでしょうか。。 >>185 使おうとしてコンパイルエラーが出たので、まずは何もさせずにコンパイルできることを目指してました。 >hdcをグローバル変数にするのはよくない ローカル変数の呼び出し方がよく分からないので、とりあえずグローバル変数にしてあります。 分かり次第直します。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/186
187: 名前は開発中のものです。 [sage] 04/03/15 11:07 ID:BH49Bw7k >>186 >(LPVOID *)(lpPixel) は間違い。 引数の指定の仕方としては、もとのソースの(LPVOID *)(&lpPixel)が正しい。 ただし、(LPVOID *)(&lpPixel)のままだと、CreateDIBSectioiでlpPixelが上書きされてしまうから 今度は透過処理の部分で今度は止まるよ。 CreateDIBSectionの説明をよく読んで、正しく使うべし。 >ローカル変数の呼び出し方がよく分からないので、とりあえずグローバル変数にしてあります。 まずは、そっちを勉強した方が良いよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/187
188: 名前は開発中のものです。 [sage] 04/03/16 21:28 ID:av2PqUu3 ローカル変数は関数の冒頭で処理を記述する前に宣言する。 C言語の場合はね。 C++はドコでも良いことになっている。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/188
189: 98 [sage] 04/03/16 23:08 ID:ALMDs/3/ 難しくて混乱してきたのでちょっと整理 1.DIBとしてもDDBとしても操作可能なビットマップをCreateDIBSectionで作る 2.デバイスコンテキストを2つ用意する 3.デバイスコンテキストAに表示するマップより1マス分大きいマップを描画する。 4.AからデバイスコンテキストBに表示する部分だけ描画 5.Bから画面に描画 たぶんこうすればいいんだと思うんですが、4くらいで行き詰ってます。 hdcですが、仮引数とか使ってみたんですがだめでした。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/189
190: 名前は開発中のものです。 [sage] 04/03/16 23:47 ID:R0OmoIwo >>189 DIBSectionベースで、一マス多く描いたスクロール用ビットマップから 表示用ビットマップに転送していく、というのならこんな感じでやるとか。 http://www.sm.rim.or.jp/~shishido/threadsc.html http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/190
191: 名前は開発中のものです。 [sage] 04/03/16 23:52 ID:PRaC3s4r だめですた、とかいうなら、詳細な症状を言うか、ソースを提示すべし。 初心者はエキセントリックなソースを書くからな。 >3.デバイスコンテキストAに表示するマップより1マス分大きいマップを描画する。 そんなことはない。CreateDIBSectioniで作るのはウィンドウサイズと同じ大きさで良いよ。 というか誰だよこんな嘘おしえたの。わざわざ難しく教えて面白いのか、といいたい。 これまでウィンドウのhdcに対して行ってきた描画とまったく同じ事をCreateDIBSectioinで つくったDIB(を設定したhdc)に行えばいい。 んで、ウィンドウのhdcに対しては、かわりに↓をおおなう。 >4.AからデバイスコンテキストBに表示する部分だけ描画 この部分は、CreateDIBSectionで作ったDIBの内容をそのままウィンドウに転送するだけでいい。 ウィンドウのhdcは、BeginPaintで得られたhdcか、GetDC(hWnd)で得られたhdcだ。 なぜわざわざCreateDIBSectionで作ったDIBに描画してからウィンドウに転送するのか といえば、それはチラツキをなくすためだ。なぜちらつきが起こるかは本に書いてあった? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/191
192: 98 [sage] 04/03/17 00:57 ID:AN01uPyl >>190 今の状態でマルチスレッドにまで手を出すのはちょっときついです・・・ >>191 http://www.geocities.co.jp/SiliconValley-Bay/2736/zz55.txt StretchDIBitsのデバイスコンテキストをhdcにすれば描画されるんですが、1段階ふむとなぜか だめです。 >なぜちらつきが起こるか 本には、DIBSectionを使うことで効率がよくなるようなことは書いてありました。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/192
193: 名前は開発中のものです。 [俺は解読に2時間もかかったアホage] 04/03/17 02:56 ID:QickIzjR >>192 なぜかじゃねーよ。 まじで、ローカル変数のこと勉強しろ!今すぐ。 変数スコープって分かるか? まぁ、一応答えを。 ↓をグローバル変数に。以上。 86:HDC hdcBMP; ローカル変数は一度関数から出ると無効になるんだよ! WM_CREATEでhdcBMPに設定しても、WM_PAINTの時はすでに無効になってるんだよ! ローカル変数のことがちゃんと理解できるまでstatic変数も禁止。 グローバル変数も最小限に汁!それが出来るまで先に進むべからず。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/193
194: 190 [sage] 04/03/17 07:13 ID:EmljVs5P >>192 いや、マルチスレッドにしろという話じゃなく、描画の流れを参考にしたら、ということなんだがw http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/194
195: 名前は開発中のものです。 [sage] 04/03/17 09:55 ID:ukkq6pEc >>193 まぁ落ち着けや。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/195
196: 98 [sage] 04/03/17 23:43 ID:AN01uPyl 変数と、ついでにクラスも勉強しておきました。 >変数スコープって分かるか? :: 知らなかったけど使ってみます。 先に進むの禁止されたのでソースを見やすくした。 http://www.geocities.co.jp/SiliconValley-Bay/2736/zz70.txt スクロール中に画面が消えるのは仕様なので気にしないでください http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/196
197: 名前は開発中のものです。 [sage] 04/03/18 00:33 ID:Si6/VCoc つーか、OO使わないのかね? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/197
198: 名前は開発中のものです。 [sage] 04/03/18 00:33 ID:Si6/VCoc ヤターIDにVCデタヨー http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/198
199: 名前は開発中のものです。 [sage] 04/03/18 02:13 ID:XsvAPJOC >>196 グローバル変数は「使う目的を明確にあらわした」変数名をつけるようにね。 たとえば、「lpbiInfoってどのBITMAPの情報なの?」ということが、変数名を見ただけで分かるように。 んで、前からずっと気になってたけど >while((timeGetTime()-timeSc)<SecondPerSc); このビジーループは本に載ってたやり方なの? もしそうならその本は糞と認定せざるを得ないので書名を教えて。 「ビジーループ」って単語が分からない?なら、googleとかに聞いてみてね。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/199
200: 名前は開発中のものです。 [sage] 04/03/18 02:53 ID:Si6/VCoc 今始めてマトモにソース見たんだが・・・・ 猫でもわかるプログラミングから始めることをお勧めする。 もっとコンソールいじってからにしておきなさい。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/200
201: 98 [sage] 04/03/18 23:35 ID:r5sO1u2T >>197 よく分からないのでたぶん使わないです。 >>198 おめでd >>199 自分で作ったSleepもどきです。 ビジーループでググったら、負荷が高くなるからやめろと書いてあったので 他のやり方を考えてみます。 >>200 コンソールだけだと何を作っていいのか分からないのと、モチベーションが続かないので winAPIと並行してやっていきます。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/201
202: 名前は開発中のものです。 [sage] 04/03/19 00:17 ID:whgiIXKB >>201 >自分で作ったSleepもどきです。 >ビジーループでググったら、負荷が高くなるからやめろと書いてあったので >他のやり方を考えてみます。 そか。えらい。 あとは、ちゃんとしたゲームループを作って、 ・入力→ゲームの状態(主人公のマップ上での位置とか)の更新 ・描画処理 をきっちり分ければ、ゲームの基礎は出来たも同然。 なぜ分けないといけないかというと、今のままだと、画面上に主人公とは独立して 動くNPCが出てきたときに処理できないからね。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/202
203: 200 [sage] 04/03/19 08:07 ID:5YapUc1Z >>201 気持ちは分かるんだけど、せめて一回くらい目を通しておくべきだと思う。 それだけで大分違うはず。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/203
204: 98 [sage] 04/03/20 18:53 ID:th+dSxtZ >>202 NPCの数が一定ならなんとか作れそうなんですが、 不定になるとどうやればいいのかさっぱりです。 >>200 理解したかどうかは置いといて、一通り読んでおきますた。 今のまま作っていくとグローバル変数だらけになりそうなので http://www.geocities.co.jp/SiliconValley-Bay/2736/a001.txt こんなの作ってみた。 変数名考えるのがマンドクセなんですが、何かこつとかありますか? http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/204
205: 98 [] 04/03/20 23:02 ID:th+dSxtZ たぶん完成。上がソースで下が実行ファイル http://www.geocities.co.jp/SiliconValley-Bay/2736/zz73.txt http://www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a3.zip ・ちらつきが減った。 ・グローバル変数が少し減った。 次はマップ切り替えは中止して、エンターキーを押したらコマンドが出る、というのをやろうと思う。 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/205
206: 名前は開発中のものです。 [sage] 04/03/20 23:23 ID:70F0it+2 まだちょっとちらつくのは、InvalidateRectの最後の引数がTRUEだから。 あと、無意味なクラスが気持ち悪いぜ! http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/206
207: 名前は開発中のものです。 [sage] 04/03/21 00:26 ID:BKuLrlOv >>205 動くが遅いけど、逆にそれが心地よかったり。クラスが分からんから 見れないけど、遅いのはたぶん1ドットずつずらしてるからだと思う。 2ドットずつ、極端な話32ドット一変にずらしてしまうと早くなると思う。 >自分で作ったSleepもどき 自分もコンソールの時はそれで、ウィンアプリの時はちゃんとPeekMessageを 使わずGetMessage+イベント取り分でやってた。ライブラリのTimerだと精度が 悪くなるから何か工夫していたと思うけど忘れてしまった。 >変数名考えるのがマンドクセなんですが、何かこつとかありますか? 自分もよく悩みます。自分はできるだけ1単語にして、その分 コメントをしっかりつけるようにしています。ただ、グローバル変数は まず使いません。ファイル分割するようになると返ってめんどくさくなったり するので。後、以下の所も参考にどうぞ。 http://pc2.2ch.net/test/read.cgi/tech/1067171530/l50 http://pc2.2ch.net/test/read.cgi/gamedev/1024902432/l50 http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/207
208: 98 [sage] 04/03/21 19:51 ID:P8h6pce6 >>206 ちらつき撲滅できますた! >>207 ビジーループを避けるためにいろいろ工夫したら結局Sleepになってしまった orz >コメントをしっかりつけるようにしています これいいですね。真似してみます。 コマンドは無理だったので、メッセージウィンドウ表示。 http://www.geocities.co.jp/SiliconValley-Bay/2736/zz76.txt http://www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a4.zip メッセージウィンドウの背景と文字色を変更したいんですが、 SetTextColorが使えないです。 こういうときはどうしたらいいんでしょうか http://mevius.5ch.net/test/read.cgi/gamedev/1059218326/208
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 266 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.019s