[過去ログ] 無料で俺がRPGを作れるようにするスレ (474レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
163(1): 04/03/07 01:10 ID:gNoMVuak(1/2) AAS
自分も2月の最初くらいからAPI始めた者です。
使用言語はCで、今のところテトリスとかボンバーマンもどきを作りました。
現在外部リンク:www.sm.rim.or.jpを見ながら、
DIBを勉強中ですが、かなり苦戦してます。
>>98さんは何で勉強しましたか?良かったら教えて下さい。
164(1): 04/03/07 12:27 ID:/QKwfpo/(1) AAS
>>162
そろそろファイル入出力もかじり始めた方がいいかもね。
DIBが使えるならファイル入出力はそんなに難しくはない・・・はず。
165(1): 04/03/07 13:40 ID:Ha7O6gmU(1) AAS
なんでPeekMessage使ってるの?
166(1): 98 04/03/07 14:44 ID:/nCa36PZ(1/2) AAS
>>163
外部リンク[html]:black.sakura.ne.jp
ここと、MSDN見てます。
同じ時期に始めてもうボンバーマン作れるってすごい・・・。
>>164
DIBの前に少しかじったんですが、挫折しました。
xxx.iniというファイルを使えばいろいろできそうだけど、絶対パスで指定しなければいけない
省6
167(1): 04/03/07 15:08 ID:gNoMVuak(2/2) AAS
>>166
レスありがとうございます。
そこも前から見てたんですが、分からないのです。
でも、同じのを見て出来る方がいるという事は自分の努力が足りないって事ですね。
もう少し修行してきます。
ボンバーマンは全部マスク画像を使ってAND・ORする方法でやったのでそんなに難しくは無かったです。
では。RPG製作頑張って下さい。
168: 98 04/03/07 17:38 ID:/nCa36PZ(2/2) AAS
>>167
俺もまだよく分かってないんですが、ちょっとずついじってれば使えるようになると思います。
汚くてよければ>>153と>>158にソースがあるので、よかったらドゾー
右スクロール時のみ16ドット移動を2回するプログラム
外部リンク[txt]:www.geocities.co.jp
効率が悪すぎるような気がする。こういうのをスパゲティソースというのかもしれない。
(´-`)。oO(AND ORってなんだろう)
169(2): 98 04/03/09 18:14 ID:quioYjmo(1) AAS
C/C++始めて一ヶ月たったので、今回はEXEでうp(28.4KB)
外部リンク[zip]:www.geocities.co.jp
次はキャラ表示をしようと思う。透過処理が難しそう。
170(1): 04/03/09 20:50 ID:nDvOJ8eM(1) AAS
>>169
透過処理はAND OR
171(1): 04/03/09 22:45 ID:sCetmjvX(1) AAS
>>169
透過処理は単に「抜き色を決めてその色以外を転送する」処理をすれば
よいだけ。キャラクタのDIBを1ピクセルずつ背景に転送していっても、
速度的には問題ない。
この場合は32ビットDIBだと楽だね(DWORD単位でアクセスできるから)。
172: 98 04/03/11 19:38 ID:e07lqvXR(1/2) AAS
>>170
AND ORでググルとグーグルにヌッコロされるのでだめです
外部リンク:www.google.co.jp
>>171
肝心な部分が分かってないからなのか、実際にやろうとするとなぜかできないです。
外部リンク[txt]:www.geocities.co.jp
1ピクセルずつ表示もやってみたんですが、俺のPCのスペックのせいか、若干遅く感じました。
省2
173: 98 04/03/11 21:52 ID:e07lqvXR(2/2) AAS
微妙にずれるものの、透過しつつキャラクタのDIBを1ピクセルずつ背景に転送は成功。↓
外部リンク[txt]:www.geocities.co.jp
なめらかにスクロールさせるためにマップをtimeGetTimeで30msごとに描画しているんですが、
この透過方法だとキャラクタ描画処理が遅いため、歩行アニメーションをつけるときに
いろいろと苦労しそう。
メモリに読み込むときに透過処理をしたほうがよさそうだけど、なぜか透過しない。
174: 98 04/03/12 20:39 ID:grlqwW2o(1) AAS
上がソースで下が実行ファイル
外部リンク[txt]:www.geocities.co.jp
外部リンク[zip]:www.geocities.co.jp
問題点:画面がちらつく。キー入力を微妙に記憶してしまう。
次は街を作って、マップ切り替えをしようと思う。
どんなゲームにするかとかもそろそろ考えないといけないけど、そっちは興味がないので
適当に募集中。
175(1): 04/03/12 21:26 ID:qU+SxdKI(1) AAS
>画面がちらつく。
CreateDIBSectionでオフスクリーンバッファを作るんだ!
ダブルバッファリングともいう。
>キー入力を
簡潔に説明するのは難しいんだが、今のキー押下処理→描画処理のやり方は
ゲームのつくりk他としては完全に間違ってる。
ゲームループとか検索してみるとわかるかもしれん。
省5
176(2): 98 04/03/13 19:41 ID:xCK866zy(1) AAS
>>175
キー入力はできますた。かなり操作性向上
DIBSectionが難しくててこずってます。
本の通りにDIBSectionを使ってるはずなのに、エラーが出るのはなぜだろう。
177: 04/03/14 08:15 ID:wW4VHkXB(1) AAS
>>176
コンパイル時のエラーなら、型があっていない(またはSelectObjectなどが返す値を適切にキャストしていない)とか。
178: 04/03/14 17:48 ID:a3XrN6fU(1) AAS
>>176
とりあえずエラーを貼り付ける。
179(3): 98 04/03/14 22:20 ID:13t3R65N(1/2) AAS
エラー E2034 zz53.cpp 135: 'void *' 型は 'HBITMAP__ *' 型に変換できない(関数 __s
tdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )
エラー出るソース
外部リンク[txt]:www.geocities.co.jp
(HBITMAP)つけてみたらコンパイルは通ったんですが、DIBSectionには何もさせていない
のに、強制終了します。
本はCで書かれているんですが、自分の書いてるのがたぶんC++なので、
省1
180: 04/03/14 22:32 ID:RZwlVtdf(1) AAS
>>179
>(HBITMAP)つけてみたらコンパイルは通ったんですが、DIBSectionには何もさせていない
>のに、強制終了します。
とりあえず、怪しいところをコメントアウトするなり変数の値を表示さ
せるなり(デバッガがあるならブレークポイントを入れる)してどこで
落ちるのか、特定してみた方が良いね。
>本はCで書かれているんですが、自分の書いてるのがたぶんC++なので、
省8
181: 98 04/03/14 23:00 ID:13t3R65N(2/2) AAS
ゲームプログラミング練習帳 という本見てます。
デバッガですが、今問題にしている部分より前の段階ですでに止まってくれるので
使い物にならない状態です。止まる部分も、CとC++の違いのせいの気がします。
Cは全然知らないんですが、見ているサイトも本もCを使ってAPIの解説をしているので、
Cで書き直すのが早いような気がしてきました・・・
182(2): 04/03/14 23:21 ID:gdC9c3eD(1/2) AAS
>>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の値を調べてみれば、壊れているのが分かるはず。
省1
183: 04/03/14 23:32 ID:gdC9c3eD(2/2) AAS
あぁ、97行目の
>iOffset = *(LPDWORD)(lpBMP + 10);//iOffset ピクセルが格納されてるアドレス、ここでなぜかデバッガ止まる
でとまるのは、BMPファイルが見つかってないからでしょ。多分。
ちゃんとCreateFileのエラー処理を汁!
あと、
>(HBITMAP)つけてみたらコンパイルは通ったんですが、
これは、Windows的には正しい。Cだと書かなくてもコンパイルと折るけど、
省1
184: 182 04/03/15 00:06 ID:mfA2vkrj(1) AAS
ごめn>>182は違った。
CreateDIBSection()なんか久しぶりに使ったから忘れてたよ。
>>179の使い方なら、
hBMP = CreateDIBSection(hdc , &biInfo , DIB_RGB_COLORS , NULL , NULL , 0);
でいいんじゃない?一応うごいたよ。
185(1): 04/03/15 00:14 ID:BH49Bw7k(1/2) AAS
ちうか、CreateDIBSectionで作ったビットマップ使って無いじゃん…
あと、hdcをグローバル変数にするのはよくないと思う。
186(1): 98 04/03/15 00:37 ID:YR7Ealek(1) AAS
>>182
(LPVOID *)(lpPixel)でもNULLでも動きました。
CreateDIBSectionの第4引数にはポインタのポインタを指定しなければいけないのに、(LPVOID *)(&lpPixel)
だとアドレスのポインタのポインタだから間違いというところまでは分かったんですが、
Cだと(LPVOID *)(&lpPixel)が正しくて、C++だと(LPVOID *)(lpPixel)が正しいということは
ポインタの書き方がCとC++で違うということなんでしょうか。。
>>185
省4
187: 04/03/15 11:07 ID:BH49Bw7k(2/2) AAS
>>186
>(LPVOID *)(lpPixel)
は間違い。
引数の指定の仕方としては、もとのソースの(LPVOID *)(&lpPixel)が正しい。
ただし、(LPVOID *)(&lpPixel)のままだと、CreateDIBSectioiでlpPixelが上書きされてしまうから
今度は透過処理の部分で今度は止まるよ。
CreateDIBSectionの説明をよく読んで、正しく使うべし。
省2
188: 04/03/16 21:28 ID:av2PqUu3(1) AAS
ローカル変数は関数の冒頭で処理を記述する前に宣言する。
C言語の場合はね。
C++はドコでも良いことになっている。
189(1): 98 04/03/16 23:08 ID:ALMDs/3/(1) AAS
難しくて混乱してきたのでちょっと整理
1.DIBとしてもDDBとしても操作可能なビットマップをCreateDIBSectionで作る
2.デバイスコンテキストを2つ用意する
3.デバイスコンテキストAに表示するマップより1マス分大きいマップを描画する。
4.AからデバイスコンテキストBに表示する部分だけ描画
5.Bから画面に描画
たぶんこうすればいいんだと思うんですが、4くらいで行き詰ってます。
省1
190(2): 04/03/16 23:47 ID:R0OmoIwo(1) AAS
>>189
DIBSectionベースで、一マス多く描いたスクロール用ビットマップから
表示用ビットマップに転送していく、というのならこんな感じでやるとか。
外部リンク[html]:www.sm.rim.or.jp
191(1): 04/03/16 23:52 ID:PRaC3s4r(1) AAS
だめですた、とかいうなら、詳細な症状を言うか、ソースを提示すべし。
初心者はエキセントリックなソースを書くからな。
>3.デバイスコンテキストAに表示するマップより1マス分大きいマップを描画する。
そんなことはない。CreateDIBSectioniで作るのはウィンドウサイズと同じ大きさで良いよ。
というか誰だよこんな嘘おしえたの。わざわざ難しく教えて面白いのか、といいたい。
これまでウィンドウのhdcに対して行ってきた描画とまったく同じ事をCreateDIBSectioinで
つくったDIB(を設定したhdc)に行えばいい。
省6
192(2): 98 04/03/17 00:57 ID:AN01uPyl(1/2) AAS
>>190
今の状態でマルチスレッドにまで手を出すのはちょっときついです・・・
>>191
外部リンク[txt]:www.geocities.co.jp
StretchDIBitsのデバイスコンテキストをhdcにすれば描画されるんですが、1段階ふむとなぜか
だめです。
>なぜちらつきが起こるか
省1
193(1): [俺は解読に2時間もかかったアホage] 04/03/17 02:56 ID:QickIzjR(1) AAS
>>192
なぜかじゃねーよ。
まじで、ローカル変数のこと勉強しろ!今すぐ。
変数スコープって分かるか?
まぁ、一応答えを。
↓をグローバル変数に。以上。
86:HDC hdcBMP;
省4
194: 190 04/03/17 07:13 ID:EmljVs5P(1) AAS
>>192
いや、マルチスレッドにしろという話じゃなく、描画の流れを参考にしたら、ということなんだがw
195: 04/03/17 09:55 ID:ukkq6pEc(1) AAS
>>193
まぁ落ち着けや。
196(1): 98 04/03/17 23:43 ID:AN01uPyl(2/2) AAS
変数と、ついでにクラスも勉強しておきました。
>変数スコープって分かるか?
:: 知らなかったけど使ってみます。
先に進むの禁止されたのでソースを見やすくした。
外部リンク[txt]:www.geocities.co.jp
スクロール中に画面が消えるのは仕様なので気にしないでください
197(1): 04/03/18 00:33 ID:Si6/VCoc(1/3) AAS
つーか、OO使わないのかね?
198(1): 04/03/18 00:33 ID:Si6/VCoc(2/3) AAS
ヤターIDにVCデタヨー
199(1): 04/03/18 02:13 ID:XsvAPJOC(1) AAS
>>196
グローバル変数は「使う目的を明確にあらわした」変数名をつけるようにね。
たとえば、「lpbiInfoってどのBITMAPの情報なの?」ということが、変数名を見ただけで分かるように。
んで、前からずっと気になってたけど
>while((timeGetTime()-timeSc)<SecondPerSc);
このビジーループは本に載ってたやり方なの?
もしそうならその本は糞と認定せざるを得ないので書名を教えて。
省1
200(8): 04/03/18 02:53 ID:Si6/VCoc(3/3) AAS
今始めてマトモにソース見たんだが・・・・
猫でもわかるプログラミングから始めることをお勧めする。
もっとコンソールいじってからにしておきなさい。
201(2): 98 04/03/18 23:35 ID:r5sO1u2T(1) AAS
>>197
よく分からないのでたぶん使わないです。
>>198
おめでd
>>199
自分で作ったSleepもどきです。
ビジーループでググったら、負荷が高くなるからやめろと書いてあったので
省4
202(1): 04/03/19 00:17 ID:whgiIXKB(1) AAS
>>201
>自分で作ったSleepもどきです。
>ビジーループでググったら、負荷が高くなるからやめろと書いてあったので
>他のやり方を考えてみます。
そか。えらい。
あとは、ちゃんとしたゲームループを作って、
・入力→ゲームの状態(主人公のマップ上での位置とか)の更新
省4
203: 200 04/03/19 08:07 ID:5YapUc1Z(1) AAS
>>201
気持ちは分かるんだけど、せめて一回くらい目を通しておくべきだと思う。
それだけで大分違うはず。
204: 98 04/03/20 18:53 ID:th+dSxtZ(1/2) AAS
>>202
NPCの数が一定ならなんとか作れそうなんですが、
不定になるとどうやればいいのかさっぱりです。
>>200
理解したかどうかは置いといて、一通り読んでおきますた。
今のまま作っていくとグローバル変数だらけになりそうなので
外部リンク[txt]:www.geocities.co.jp
省2
205(1): 98 04/03/20 23:02 ID:th+dSxtZ(2/2) AAS
たぶん完成。上がソースで下が実行ファイル
外部リンク[txt]:www.geocities.co.jp
外部リンク[zip]:www.geocities.co.jp
・ちらつきが減った。
・グローバル変数が少し減った。
次はマップ切り替えは中止して、エンターキーを押したらコマンドが出る、というのをやろうと思う。
206(1): 04/03/20 23:23 ID:70F0it+2(1) AAS
まだちょっとちらつくのは、InvalidateRectの最後の引数がTRUEだから。
あと、無意味なクラスが気持ち悪いぜ!
207(1): 04/03/21 00:26 ID:BKuLrlOv(1) AAS
>>205
動くが遅いけど、逆にそれが心地よかったり。クラスが分からんから
見れないけど、遅いのはたぶん1ドットずつずらしてるからだと思う。
2ドットずつ、極端な話32ドット一変にずらしてしまうと早くなると思う。
>自分で作ったSleepもどき
自分もコンソールの時はそれで、ウィンアプリの時はちゃんとPeekMessageを
使わずGetMessage+イベント取り分でやってた。ライブラリのTimerだと精度が
省8
208(1): 98 04/03/21 19:51 ID:P8h6pce6(1/2) AAS
>>206
ちらつき撲滅できますた!
>>207
ビジーループを避けるためにいろいろ工夫したら結局Sleepになってしまった orz
>コメントをしっかりつけるようにしています
これいいですね。真似してみます。
コマンドは無理だったので、メッセージウィンドウ表示。
省5
209(1): 04/03/21 20:02 ID:lBIVIhzW(1/2) AAS
静止状態では、結局CPU100%使っちゃってるよ。だめじゃん。
あと、マップ表示がスクロール終わるまで帰ってこない関数って後で困るよ。
スクロールしてる最中に同時にNPCを動かしたくなったらどうするのさ?
210: 98 04/03/21 20:27 ID:P8h6pce6(2/2) AAS
進むの中断して組みなおして出直してきます。。
211(3): 04/03/21 21:20 ID:lBIVIhzW(2/2) AAS
スクロール位置の更新と描画が分離されてなかったり、
GDIじゃなくDirectXつかってたりするが、
↓見たいな感じにすればいいよ。
外部リンク[html]:www.sm.rim.or.jp
ゲームプログラミング練習長持ってるんだっけ?
読んだこと無いけど、そっちのほうもこういう処理になってない?
212(1): 98 04/03/22 21:35 ID:qIg3ILGt(1/2) AAS
>>211
見てみました。↓draw()でSleep代わり?にこうしてるみたいなんですが、
if (GetTickCount()>dwTime+5) dwTime=GetTickCount();
else return;
前に自分で作ったのが↓
dwTime = GetTickCount();
while(GetTickCount()<dwTime+5);
省3
213(1): 04/03/22 22:18 ID:IkgfwbwO(1) AAS
AA省
214(1): 練習帳著者 04/03/22 22:50 ID:8UFWL+KK(1/2) AAS
>>212
>if (GetTickCount()>dwTime+5) dwTime=GetTickCount();
>else return;
これは、一つのif文の中で書けば
if (GetTickCount() > dwTime + 5) {
dwTime = GetTickCount();
ゲームの処理(draw()の中身)
省10
215(1): 練習帳著者 04/03/22 22:58 ID:8UFWL+KK(2/2) AAS
まあ、実際にRPG作ってみると「一定の周期で処理を行う関数」にゲーム
の処理をすべてまとめるのは無理があるから、メインループよりはゲーム
処理用にスレッド作った方が楽になるかな、という気がしてきたんですが。
特に厄介なのは、戦闘シーンやイベントの待ち時間・・・。 最初はあち
こちでPeekMessege()してたけど、これはちょっと違うかな、と。
スレッド作れば、最悪無限ループにしてもUI停まりませんからね(^^;。
もちろん、最終的なプログラムにするときにはスレッド内からの終了処理
省8
216: 04/03/22 23:27 ID:hc5U3G0l(1) AAS
本物キター
217: 04/03/22 23:29 ID:mioo0vPT(1) AAS
著者降臨age!
218: 04/03/22 23:33 ID:nq9Pmduh(1) AAS
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
省4
219: 98 04/03/22 23:46 ID:qIg3ILGt(2/2) AAS
>>213
ああ、分かりました!
1ドット描画するたびに関数を終了して、グローバル変数とか構造体とかで
描画回数をカウントしておいて、1マス描画し終わったらカウンタリセットする。
すると割り込み処理ができるようになる。
>>215
うお・・・著者様ですか・・・
省2
220(1): 04/03/23 00:02 ID:4auKbf0z(1) AAS
>の処理をすべてまとめるのは無理があるから、メインループよりはゲーム
>処理用にスレッド作った方が楽になるかな、という気がしてきたんですが。
この辺は、伝統的には所謂タスクシステムで解決してきたのかな。
スレッドだと同期が大変過ぎるしこういう用途には重すぎると思う。
まぁ、タスクシステムっていってもいろいろなやり方があるみたいだけど…
221: 04/03/23 00:47 ID:9F6tXsaP(1) AAS
シナリオスクリプトを実装する時にはスレッドにしたりもする
ファイバー(コルーチン)という手もあるようだけどね
異なるプログラム方式の連携
外部リンク[html]:www.jah.ne.jp
222: 04/03/23 01:05 ID:PMWtRlHb(1/5) AAS
シナリオなんかだと、タスクシステムでコールされるタスク関数を
ファイバ(マイクロスレッド、コルーチン、継続でもOK?)にしておくと
効率よく開発できるかな、とかおもったりしたけど全然試してない。
このへんは、やね本2だかに書いてあるらしいけど読んだこと無いです。
223(1): 04/03/23 02:20 ID:JCV/36ob(1/3) AAS
俺もスレッド使わないほうがいいと思う
マルチスレッドを毛嫌いするわけじゃないが、明確な理由なしにスレッド化するのはやめたほうがいい
ゲームで必要になる場面があるとすれば、SLGの思考ルーチンくらいだと思う
で、ちょっとスレ違いの話題になるが、
ファイバってCreateFiber関数とか使う奴のこと?
だとするとあんなの使わなくても関数ポインタ切り替えでいいじゃん、と思うんだが・・・
#少なくともゲームにおいては。なんかいい利用方法あるならスマン
224(2): 04/03/23 02:48 ID:PMWtRlHb(2/5) AAS
>だとするとあんなの使わなくても関数ポインタ切り替えでいいじゃん、と思うんだが・・・
その関数を減らすために使うんだよ。
普通はその関数の操作対象のオブジェクト(やシーンなど)の状態が変わったら
関数を切り替えるわけでしょ。ファイバを使うと、その「状態」が「関数をどこまで
実行したか」で表せるようになるから、状態ごとにいくつかに分かれてた関数を
ひとつに出来る、と。
まぁ、でもこういうのは大概スクリプトで実現するような気がしないでもない。
225(1): 223 04/03/23 05:14 ID:JCV/36ob(2/3) AAS
>>224
ちょっと待て、その利点は間違ってると思うぞ
ファイバ使っても関数減らすことになるとは思えない
このスレなのでRPGの例で行くが、
RPGにおける「状態」ってたとえば
・マップ移動(キー入力待ち)
・マップ移動(スクロール)
省6
226: 04/03/23 08:41 ID:PMWtRlHb(3/5) AAS
>>225
もっと先の話だよ。
イベントシーンとかそのへん(応用先はそれだけじゃないよ?)
スレ違いだが、シューティングの敵の動きの記述に使ったりもした。
227(1): 04/03/23 09:03 ID:PMWtRlHb(4/5) AAS
AA省
228(1): 練習帳著者 04/03/23 09:10 ID:R4NaancD(1) AAS
>>220
別スレッドの利点は、他のスレッドと同期する必要をなるべく生じさせ
ない、ゲームに関する処理を一本道の流れに分離しておくような形式に
できた場合、Windowsのシステムの流れをあまり意識しないでゲームの
処理に集中できるかな、と。
実際、戦闘やスクリプトベースのイベント処理も含めてRPGのデータ処理
やバックバッファ(あとはウインドウのDCに出力するだけのDIBSection)
省14
229: 04/03/23 11:14 ID:PfXAGYNf(1) AAS
エェー?本当にちゃんと同期できてる?データの整合性もちゃんと保ててる?
マルチCPUの場合は、同じデータをアクセスするコードが「同時に」2つ以上走ることも
あるんだよ?
マルチスレッドは、データの不整合性、デッドロック、抜け出せないロッキング、
優先順位の逆転などなど気をつけないといけない罠が多すぎるので、どうしても必要
なところ意外では使わないことにしてるよ。
スレッドがだめって言ってるわけじゃないけど、初心者向けでは無いよね。
省2
230(1): 04/03/23 12:01 ID:JCV/36ob(3/3) AAS
>>227
んー・・・なんとなく言いたいことは分かった、ありがとう
けどやっぱタスクシステムから乗り換えるほどの理由じゃないっす
#スレ違いすまんがSTGの敵の動き制御部分は特に意味がなさそう
#理由はたとえば同じ種別の敵が10いたら同じ関数を10回実行しなきゃいけない。
#けど同じ関数を回すわけだから結局状態データは外部に置かなきゃいけない
#同じ関数を10個ファイバとして登録して再利用するにしても、
省8
231: 04/03/23 12:25 ID:rzkxl8IS(1) AAS
>>230
>けどやっぱタスクシステムから乗り換えるほどの理由じゃないっす
いや、タスクシステムと併用するんだよ当然。
タスクシステムからタスク関数を呼び出すと思うけど、それをファイバにするという話。
>#同じ関数を10個ファイバとして登録して再利用するにしても、
>#結局被弾したとかの状況によって初期化するわけだから外部で制御しても大差なし
まぁ、被弾とか非同期で状態が変わる部分は、別関数にせざるを得ないよね。「例外(Exception)」だし。
省7
232: 04/03/23 16:31 ID:cY6fF1y+(1) AAS
マルチスレッドにする利点はタイトルバーをクリックしても処理がとまらないことかな
233: 98 04/03/23 21:04 ID:s4+zR2jB(1) AAS
よく分からないんですけど、マルチスレッド使えないとやばいっていうことでしょうか?
今度こそマップスクロール完成版↓
外部リンク[txt]:www.geocities.co.jp
外部リンク[zip]:www.geocities.co.jp
・静止状態にCPU100%になっていたのを修正(Sleep(1);をつけた)
・メッセージウィンドウ表示時にCPU100%になっていたのを修正(Sleep(1);をつけた)
・描画関数を2つに分割
省1
234: 04/03/23 21:12 ID:PMWtRlHb(5/5) AAS
んじゃ、次は、DrawMapの、「〜スクロール時描画」を「静止マップ表示」ひとつにまとめよう!
これでかなりすっきりするはず。
235: 98 04/03/24 22:18 ID:w/FFfgKd(1) AAS
すっきりしたかどうか分かりませんが、まとめてみました↓
外部リンク[txt]:www.geocities.co.jp
・描画方法を少し変更
メッセージウィンドウ表示は置いといて、次はNPCを作ってみる予定
236: 98 04/03/29 19:11 ID:hm6pjM86(1) AAS
ログが消えてる(´・ω・`)
NPCの移動をなめらかに描画するのが難しいんですが、
なんかいい方法とかないでしょうか・・・
237: 98 04/03/30 22:16 ID:W6u+pmd7(1) AAS
NPCがどうしてもうまく描画できないので、マップ自体の描画方法を
「何か起こったら描画」から「常に一定時間おきに描画」に変更してみた。
外部リンク[txt]:www.geocities.co.jp
外部リンク[zip]:www.geocities.co.jp
方向性が間違ってるような気がしないでもないんですが、
こういう描画方法でもいいんでしょうか
238: 98 04/04/01 21:53 ID:xdIEUIEH(1) AAS
NPCなめらか移動
外部リンク[txt]:www.geocities.co.jp
外部リンク[zip]:www.geocities.co.jp
NPCの移動がランダムではないような気がする。
気のせいかもしれないけれど、ある方向にいったん進んだら、
次に進む方向も同じになる確率が高い。
次は当たり判定をつけようと思う。
239: 200 04/04/02 00:46 ID:HxQygUy0(1/2) AAS
srand((unsigned)time(NULL));
は、最初に一回だけね。ループには入れないで。
srandは乱数ジェネレータの初期値。
rand()関数はsrandを実行しなくても一回一回違う値を返すけど、もう一度プログラムを実行してもまた同じ値を返してきてしまう。
一回目の結果:7,2,5,6,4,1...
二回目の結果:7,2,5,6,4,1...
こんなカンジで。
省6
240: 200 04/04/02 00:49 ID:HxQygUy0(2/2) AAS
あ、別のサイトだったっぽいです。
241: 98 04/04/02 20:19 ID:RjQBCx/D(1) AAS
おまじない程度の認識しかなかったので、ここが原因とは思いませんでした。
ランダムに動くようになりました。
ふと思ったんですが、WINAPIなら timeGetTime()%10; でも0~9のほぼ乱数ができるような
気がするんですが、これって邪道でしょうか。
242: 98 04/04/02 22:26 ID:OS/Q3nYt(1) AAS
↑自己レス 同時に複数の乱数を得たいときに不便なのでやっぱりだめ
当たり判定をつけた。ついでに歩行アニメーションもつけた。
外部リンク[txt]:www.geocities.co.jp
外部リンク[zip]:www.geocities.co.jp
次はマップエディタを作る予定。
243(1): 98 04/04/03 22:19 ID:eDSQOtXr(1) AAS
マップエディタセーブ機能なし
外部リンク[txt]:www.geocities.co.jp
外部リンク[zip]:www.geocities.co.jp
マップエディタ作る時間 > テキストでマップを作る時間
な気がしてきた。
APIのファイル操作はできれば避けたいんですが、
#include <window.h>をすると#include <fstream>できなくなるんでしょうか?
上下前次1-新書関写板覧索設栞歴
あと 231 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.032s