[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2ch.scのread.cgiへ]
Update time : 06/17 10:32 / Filesize : 167 KB / Number-of Response : 474
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

無料で俺がRPGを作れるようにするスレ



1 名前:1 ◆SLnV723rxg mailto:sage [03/07/26 20:18 ID:PRWX91og.net]
やる気だけはあるぞ。

143 名前:名前は開発中のものです。 mailto:sage [04/02/24 21:34 ID:QzqFx48f.net]
RPGの半分はデータベースで出来ています

144 名前:名前は開発中のものです。 mailto:sage [04/02/24 22:31 ID:kFyAt63U.net]
>>137
>リソースからは読み込めたんですが、デメリットしかないので、これではないですよね・・

いや最終的には、画像などのデータはリソースにまとめたほうが良いよ。
ただしバイナリのリソースね。画像なら、RGBデータの形で持つ、とか。

画像については、RGB配列(DIB)の扱いを練習しておいたほうが良いかも。
キャラクタの透過描画や画面の特殊効果などさまざまな場面で必要になって
くる。


145 名前:98 mailto:sage [04/02/25 19:38 ID:g+59HVuE.net]
>>141
あ、なんとなく理解しました。break;の代わりにreturn 0;でもいいってことですね。

>>142
作り始めた当初は、セーブが必要になるほど長いゲームは作れない気がしてたので。
いざとなったら ふっかつのじゅもん にすればファイル操作いらないな、とか思ってました。

>>143
まだシナリオとか考えてないんで、データベースの半分は手抜きです。になりそう・・

>>144
ぱっと見で難しそうだったんで、まだほとんどやってないですが、ちょっとずつやってみます。


146 名前:名前は開発中のものです。 mailto:sage [04/02/25 19:52 ID:MjBoX65v.net]
>>145
この場合はreturn 0;でも動くけど、出来る限りbreakは書くクセをつけるべきだと思う。

147 名前:98 mailto:sage [04/02/29 18:24 ID:Ycy/2GWo.net]
DIBが理解できなくて停滞中

148 名前:名前は開発中のものです。 mailto:sage [04/02/29 18:41 ID:gj9x0Pg+.net]
素直にJ-RPG使っとけ

149 名前:98 mailto:sage [04/02/29 19:41 ID:Ycy/2GWo.net]
C++でRPG作るのが目標なので、遠慮しときます

150 名前:名前は開発中のものです。 mailto:sage [04/02/29 20:14 ID:CI/gdVj9.net]
>>147
どの辺が分からんの?

151 名前:98 mailto:sage [04/02/29 21:21 ID:Ycy/2GWo.net]
一つのbmpファイルをウィンドウに複数表示はできるのですが、
複数のbmpファイルを表示させようとするとメモリ不足とか言われます




152 名前:名前は開発中のものです。 mailto:sage [04/02/29 21:30 ID:CI/gdVj9.net]
ソースを張ってくれないと何とも言えない

153 名前:98 mailto:sage [04/02/29 21:49 ID:Ycy/2GWo.net]
単一bmpファイル敷き詰め↓
www.geocities.co.jp/SiliconValley-Bay/2736/zz.txt
複数bmpファイル表示(コンパイルは通るけれど実行注意)↓
www.geocities.co.jp/SiliconValley-Bay/2736/zz1.txt
下のは実行するとやばいので、コンパイルする人もしいたら気をつけてください

何か、根元から間違えてるような気がする。。

154 名前:名無しさんは14才 mailto:sage [04/03/02 17:40 ID:W0CJyzOg.net]
マカーのくせに口出ししてごめんね。
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]](以下略)
と書いちゃえばいいような気がする。

そんなカンジでがんばれ〜。
わたしは当分応援モード。

155 名前:124 mailto:sage [04/03/02 18:49 ID:0D6IPbfs.net]
>>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からサイズ取得が一番良いかもしれんね。

156 名前:98 mailto:sage [04/03/02 21:58 ID:YGTCiQU4.net]
>>154
混乱してて、Mapary使うの忘れてました。
問題点を分かりやすくするために、StretchDIBitsの部分はとりあえず定数にしてみます。

>>155
javascriptで簡単なゲームは作ったことがあるんですが、C/C++でプログラム組むのは
初めてなんで、かなり無謀だとは思ってます。
マップ表示はたぶんできるんですが、その前に複数のbmpファイルを読み込むことが
できないんです。

デバッガ使ってみたところ、問題点らしきところは発見できたものの、なぜだめなののかが
分からない・・・


157 名前:名前は開発中のものです。 mailto:sage [04/03/02 22:18 ID:euQtmlJ9.net]
>>156
BMPの読み込み(BMPからのDIB作成)は、マップチップなら「ビットマップ
の大きさ」を決めておくと楽。そうすれば自動的にBMPに格納されている
DIBピクセル列の大きさも特定できるから、ただ「ピクセル列までのオフ
セットから決まったバイト数読み込む」だけの処理になるからね。

1枚のBMPからDIBを作成できるようになったら、BMPも「マップチップを縦
に並べたビットマップ」にしておけば、一枚のビットマップから連続して
読み込める(24ビットで横幅が4の倍数なら、横幅×高さ×3バイトずつ
区切って読んでいけばよい)。ただし、この場合はDIBの座標系に注意。


158 名前:98 mailto:sage [04/03/02 23:19 ID:YGTCiQU4.net]
>>157
一週間悩んでたのに、一瞬でできますた。
www.geocities.co.jp/SiliconValley-Bay/2736/zz31.txt
複数ファイルが読み込めないと何かが困るような気がしてたんですが、
ドラクエのようなものなら、困ることないですね。

159 名前:98 mailto:sage [04/03/04 20:15 ID:UUYCFgVb.net]
DIB版矢印キー押すと32ドット移動ウェイトつき
www.geocities.co.jp/SiliconValley-Bay/2736/zz32.txt
Sleep中は全ての処理が止まるのかと思っていたら、その間入力した
キーを記憶しているらしく、Sleep中のキー入力が反映されてしまう。

160 名前:名前は開発中のものです。 mailto:sage [04/03/05 02:41 ID:dAc27ulc.net]
>>159
タイマー使ってみたら?
自前でフラグ用意してtimeGetTimeではかっても良いだろうけど

161 名前:98 mailto:sage [04/03/06 17:58 ID:9gF+FHHa.net]
timeGetTime使ってみました。
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を使うこと自体をやめるか、いったん破棄しないといけなかったみたいです



162 名前:98 mailto:age [04/03/06 20:21 ID:9gF+FHHa.net]
瞬間移動完成。
www.geocities.co.jp/SiliconValley-Bay/2736/zz36.txt
微妙にゲームらしきものになってきた。
GetAsyncKeyStateのほうがゲームに適しているとどこかで見たけれど、
押したキーを勝手に記録してしまうため、使いこなせなかった。

次はキーを押したら16ドット移動を2回繰り返すものを作ろうと思う。
すでにDIB使ってるので、たぶん簡単にできるような気がする

163 名前:名前は開発中のものです。 mailto:sage [04/03/07 01:10 ID:gNoMVuak.net]
自分も2月の最初くらいからAPI始めた者です。
使用言語はCで、今のところテトリスとかボンバーマンもどきを作りました。

現在ttp://www.sm.rim.or.jp/~shishido/を見ながら、
DIBを勉強中ですが、かなり苦戦してます。
>>98さんは何で勉強しましたか?良かったら教えて下さい。

164 名前:名前は開発中のものです。 mailto:sage [04/03/07 12:27 ID:/QKwfpo/.net]
>>162
そろそろファイル入出力もかじり始めた方がいいかもね。
DIBが使えるならファイル入出力はそんなに難しくはない・・・はず。

165 名前:名前は開発中のものです。 mailto:sage [04/03/07 13:40 ID:Ha7O6gmU.net]
なんでPeekMessage使ってるの?

166 名前:98 mailto:sage [04/03/07 14:44 ID:/nCa36PZ.net]
>>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))があってもなくても
同じだと思うので、使うときのために消していないだけです。

167 名前:名前は開発中のものです。 mailto:sage [04/03/07 15:08 ID:gNoMVuak.net]
>>166
レスありがとうございます。
そこも前から見てたんですが、分からないのです。
でも、同じのを見て出来る方がいるという事は自分の努力が足りないって事ですね。
もう少し修行してきます。

ボンバーマンは全部マスク画像を使ってAND・ORする方法でやったのでそんなに難しくは無かったです。
では。RPG製作頑張って下さい。

168 名前:98 mailto:sage [04/03/07 17:38 ID:/nCa36PZ.net]
>>167
俺もまだよく分かってないんですが、ちょっとずついじってれば使えるようになると思います。
汚くてよければ>>153>>158にソースがあるので、よかったらドゾー


右スクロール時のみ16ドット移動を2回するプログラム
www.geocities.co.jp/SiliconValley-Bay/2736/zz38.txt
効率が悪すぎるような気がする。こういうのをスパゲティソースというのかもしれない。

(´-`)。oO(AND ORってなんだろう)

169 名前:98 [04/03/09 18:14 ID:quioYjmo.net]
C/C++始めて一ヶ月たったので、今回はEXEでうp(28.4KB)
www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a1.zip

次はキャラ表示をしようと思う。透過処理が難しそう。

170 名前:名前は開発中のものです。 mailto:sage [04/03/09 20:50 ID:nDvOJ8eM.net]
>>169
透過処理はAND OR

171 名前:名前は開発中のものです。 mailto:sage [04/03/09 22:45 ID:sCetmjvX.net]
>>169

透過処理は単に「抜き色を決めてその色以外を転送する」処理をすれば
よいだけ。キャラクタのDIBを1ピクセルずつ背景に転送していっても、
速度的には問題ない。

この場合は32ビットDIBだと楽だね(DWORD単位でアクセスできるから)。




172 名前:98 mailto:sage [04/03/11 19:38 ID:e07lqvXR.net]
>>170
AND ORでググルとグーグルにヌッコロされるのでだめです
www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=AND+OR+C&lr=lang_ja

>>171
肝心な部分が分かってないからなのか、実際にやろうとするとなぜかできないです。
www.geocities.co.jp/SiliconValley-Bay/2736/zz45.txt
1ピクセルずつ表示もやってみたんですが、俺のPCのスペックのせいか、若干遅く感じました。


ところで、俺はPCゲームはあまりやったことがないのでよく分からないんですが、
キャラが32*32ドットってどうなんでしょうか。どうも小さく感じます。


173 名前:98 mailto:sage [04/03/11 21:52 ID:e07lqvXR.net]
微妙にずれるものの、透過しつつキャラクタのDIBを1ピクセルずつ背景に転送は成功。↓
www.geocities.co.jp/SiliconValley-Bay/2736/zz46.txt

なめらかにスクロールさせるためにマップをtimeGetTimeで30msごとに描画しているんですが、
この透過方法だとキャラクタ描画処理が遅いため、歩行アニメーションをつけるときに
いろいろと苦労しそう。

メモリに読み込むときに透過処理をしたほうがよさそうだけど、なぜか透過しない。

174 名前:98 [04/03/12 20:39 ID:grlqwW2o.net]
上がソースで下が実行ファイル
www.geocities.co.jp/SiliconValley-Bay/2736/zz50.txt
www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a2.zip

問題点:画面がちらつく。キー入力を微妙に記憶してしまう。

次は街を作って、マップ切り替えをしようと思う。
どんなゲームにするかとかもそろそろ考えないといけないけど、そっちは興味がないので
適当に募集中。

175 名前:名前は開発中のものです。 [04/03/12 21:26 ID:qU+SxdKI.net]
>画面がちらつく。
CreateDIBSectionでオフスクリーンバッファを作るんだ!
ダブルバッファリングともいう。

>キー入力を
簡潔に説明するのは難しいんだが、今のキー押下処理→描画処理のやり方は
ゲームのつくりk他としては完全に間違ってる。
ゲームループとか検索してみるとわかるかもしれん。

他のスレのレスからヒントをば。
pc2.2ch.net/test/read.cgi/gamedev/1020417733/124
>タイマ(WM_TIMER)は不安定なので普通ゲームには使わないぞ。
>↓ここの1.4.1みたいに処理すべし。
>www.microsoft.com/japan/msdn/academic/Articles/DirectX/01/

176 名前:98 mailto:sage [04/03/13 19:41 ID:xCK866zy.net]
>>175
キー入力はできますた。かなり操作性向上

DIBSectionが難しくててこずってます。
本の通りにDIBSectionを使ってるはずなのに、エラーが出るのはなぜだろう。


177 名前:名前は開発中のものです。 mailto:sage [04/03/14 08:15 ID:wW4VHkXB.net]
>>176

コンパイル時のエラーなら、型があっていない(またはSelectObjectなどが返す値を適切にキャストしていない)とか。


178 名前:名前は開発中のものです。 mailto:sage [04/03/14 17:48 ID:a3XrN6fU.net]
>>176
とりあえずエラーを貼り付ける。

179 名前:98 mailto:sage [04/03/14 22:20 ID:13t3R65N.net]
エラー E2034 zz53.cpp 135: 'void *' 型は 'HBITMAP__ *' 型に変換できない(関数 __s
tdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )

エラー出るソース
www.geocities.co.jp/SiliconValley-Bay/2736/zz53.txt

(HBITMAP)つけてみたらコンパイルは通ったんですが、DIBSectionには何もさせていない
のに、強制終了します。

本はCで書かれているんですが、自分の書いてるのがたぶんC++なので、
そのへんの問題でしょうか。

180 名前:名前は開発中のものです。 mailto:sage [04/03/14 22:32 ID:RZwlVtdf.net]
>>179
>(HBITMAP)つけてみたらコンパイルは通ったんですが、DIBSectionには何もさせていない
>のに、強制終了します。

とりあえず、怪しいところをコメントアウトするなり変数の値を表示さ
せるなり(デバッガがあるならブレークポイントを入れる)してどこで
落ちるのか、特定してみた方が良いね。

>本はCで書かれているんですが、自分の書いてるのがたぶんC++なので、
>そのへんの問題でしょうか。

そうだね。
CとC++では、デフォルトの型チェックが違う。
C++でSelectObjectの返すハンドルをGDIのハンドルを保持する変数に
入れたいなら、個別にGDIのハンドルの型に合わせたキャストが必要。

まあ、拡張子をcにしてCのソースとしてコンパイルしても良いかもし
れんがw

ところで「本」って何の本?


181 名前:98 mailto:sage [04/03/14 23:00 ID:13t3R65N.net]
ゲームプログラミング練習帳 という本見てます。

デバッガですが、今問題にしている部分より前の段階ですでに止まってくれるので
使い物にならない状態です。止まる部分も、CとC++の違いのせいの気がします。

Cは全然知らないんですが、見ているサイトも本もCを使ってAPIの解説をしているので、
Cで書き直すのが早いような気がしてきました・・・



182 名前:名前は開発中のものです。 mailto:sage [04/03/14 23:21 ID:gdC9c3eD.net]
>>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の値を調べてみれば、壊れているのが分かるはず。
なぜ、上の指定の仕方ではいけないのか、とか、どうして値が壊れるのかとかは、自分で考えてみてね。

183 名前:名前は開発中のものです。 mailto:sage [04/03/14 23:32 ID:gdC9c3eD.net]
あぁ、97行目の
>iOffset = *(LPDWORD)(lpBMP + 10);//iOffset ピクセルが格納されてるアドレス、ここでなぜかデバッガ止まる
でとまるのは、BMPファイルが見つかってないからでしょ。多分。
ちゃんとCreateFileのエラー処理を汁!

あと、
>(HBITMAP)つけてみたらコンパイルは通ったんですが、
これは、Windows的には正しい。Cだと書かなくてもコンパイルと折るけど、
C++は型違いを厳密に見るから、型変換しないといけないわけだ。

184 名前:182 mailto:sage [04/03/15 00:06 ID:mfA2vkrj.net]
ごめn>>182は違った。
CreateDIBSection()なんか久しぶりに使ったから忘れてたよ。

>>179の使い方なら、
hBMP = CreateDIBSection(hdc , &biInfo , DIB_RGB_COLORS , NULL , NULL , 0);
でいいんじゃない?一応うごいたよ。


185 名前:名前は開発中のものです。 mailto:sage [04/03/15 00:14 ID:BH49Bw7k.net]
ちうか、CreateDIBSectionで作ったビットマップ使って無いじゃん…
あと、hdcをグローバル変数にするのはよくないと思う。

186 名前:98 mailto:sage [04/03/15 00:37 ID:YR7Ealek.net]
>>182
(LPVOID *)(lpPixel)でもNULLでも動きました。

CreateDIBSectionの第4引数にはポインタのポインタを指定しなければいけないのに、(LPVOID *)(&lpPixel)
だとアドレスのポインタのポインタだから間違いというところまでは分かったんですが、
Cだと(LPVOID *)(&lpPixel)が正しくて、C++だと(LPVOID *)(lpPixel)が正しいということは
ポインタの書き方がCとC++で違うということなんでしょうか。。


>>185
使おうとしてコンパイルエラーが出たので、まずは何もさせずにコンパイルできることを目指してました。
>hdcをグローバル変数にするのはよくない
ローカル変数の呼び出し方がよく分からないので、とりあえずグローバル変数にしてあります。
分かり次第直します。

187 名前:名前は開発中のものです。 mailto:sage [04/03/15 11:07 ID:BH49Bw7k.net]
>>186
>(LPVOID *)(lpPixel)
は間違い。
引数の指定の仕方としては、もとのソースの(LPVOID *)(&lpPixel)が正しい。

ただし、(LPVOID *)(&lpPixel)のままだと、CreateDIBSectioiでlpPixelが上書きされてしまうから
今度は透過処理の部分で今度は止まるよ。
CreateDIBSectionの説明をよく読んで、正しく使うべし。

>ローカル変数の呼び出し方がよく分からないので、とりあえずグローバル変数にしてあります。
まずは、そっちを勉強した方が良いよ。

188 名前:名前は開発中のものです。 mailto:sage [04/03/16 21:28 ID:av2PqUu3.net]
ローカル変数は関数の冒頭で処理を記述する前に宣言する。
C言語の場合はね。
C++はドコでも良いことになっている。

189 名前:98 mailto:sage [04/03/16 23:08 ID:ALMDs/3/.net]
難しくて混乱してきたのでちょっと整理
1.DIBとしてもDDBとしても操作可能なビットマップをCreateDIBSectionで作る
2.デバイスコンテキストを2つ用意する
3.デバイスコンテキストAに表示するマップより1マス分大きいマップを描画する。
4.AからデバイスコンテキストBに表示する部分だけ描画
5.Bから画面に描画

たぶんこうすればいいんだと思うんですが、4くらいで行き詰ってます。


hdcですが、仮引数とか使ってみたんですがだめでした。


190 名前:名前は開発中のものです。 mailto:sage [04/03/16 23:47 ID:R0OmoIwo.net]
>>189
DIBSectionベースで、一マス多く描いたスクロール用ビットマップから
表示用ビットマップに転送していく、というのならこんな感じでやるとか。

www.sm.rim.or.jp/~shishido/threadsc.html


191 名前:名前は開発中のものです。 mailto:sage [04/03/16 23:52 ID:PRaC3s4r.net]
だめですた、とかいうなら、詳細な症状を言うか、ソースを提示すべし。
初心者はエキセントリックなソースを書くからな。

>3.デバイスコンテキストAに表示するマップより1マス分大きいマップを描画する。
そんなことはない。CreateDIBSectioniで作るのはウィンドウサイズと同じ大きさで良いよ。
というか誰だよこんな嘘おしえたの。わざわざ難しく教えて面白いのか、といいたい。

これまでウィンドウのhdcに対して行ってきた描画とまったく同じ事をCreateDIBSectioinで
つくったDIB(を設定したhdc)に行えばいい。
んで、ウィンドウのhdcに対しては、かわりに↓をおおなう。

>4.AからデバイスコンテキストBに表示する部分だけ描画
この部分は、CreateDIBSectionで作ったDIBの内容をそのままウィンドウに転送するだけでいい。
ウィンドウのhdcは、BeginPaintで得られたhdcか、GetDC(hWnd)で得られたhdcだ。

なぜわざわざCreateDIBSectionで作ったDIBに描画してからウィンドウに転送するのか
といえば、それはチラツキをなくすためだ。なぜちらつきが起こるかは本に書いてあった?



192 名前:98 mailto:sage [04/03/17 00:57 ID:AN01uPyl.net]
>>190
今の状態でマルチスレッドにまで手を出すのはちょっときついです・・・

>>191
www.geocities.co.jp/SiliconValley-Bay/2736/zz55.txt
StretchDIBitsのデバイスコンテキストをhdcにすれば描画されるんですが、1段階ふむとなぜか
だめです。

>なぜちらつきが起こるか
本には、DIBSectionを使うことで効率がよくなるようなことは書いてありました。


193 名前:名前は開発中のものです。 mailto:俺は解読に2時間もかかったアホage [04/03/17 02:56 ID:QickIzjR.net]
>>192
なぜかじゃねーよ。
まじで、ローカル変数のこと勉強しろ!今すぐ。
変数スコープって分かるか?

まぁ、一応答えを。
↓をグローバル変数に。以上。
86:HDC hdcBMP;

ローカル変数は一度関数から出ると無効になるんだよ!
WM_CREATEでhdcBMPに設定しても、WM_PAINTの時はすでに無効になってるんだよ!

ローカル変数のことがちゃんと理解できるまでstatic変数も禁止。
グローバル変数も最小限に汁!それが出来るまで先に進むべからず。

194 名前:190 mailto:sage [04/03/17 07:13 ID:EmljVs5P.net]
>>192

いや、マルチスレッドにしろという話じゃなく、描画の流れを参考にしたら、ということなんだがw


195 名前:名前は開発中のものです。 mailto:sage [04/03/17 09:55 ID:ukkq6pEc.net]
>>193
まぁ落ち着けや。

196 名前:98 mailto:sage [04/03/17 23:43 ID:AN01uPyl.net]
変数と、ついでにクラスも勉強しておきました。
>変数スコープって分かるか?
:: 知らなかったけど使ってみます。

先に進むの禁止されたのでソースを見やすくした。
www.geocities.co.jp/SiliconValley-Bay/2736/zz70.txt
スクロール中に画面が消えるのは仕様なので気にしないでください

197 名前:名前は開発中のものです。 mailto:sage [04/03/18 00:33 ID:Si6/VCoc.net]
つーか、OO使わないのかね?

198 名前:名前は開発中のものです。 mailto:sage [04/03/18 00:33 ID:Si6/VCoc.net]
ヤターIDにVCデタヨー

199 名前:名前は開発中のものです。 mailto:sage [04/03/18 02:13 ID:XsvAPJOC.net]
>>196
グローバル変数は「使う目的を明確にあらわした」変数名をつけるようにね。
たとえば、「lpbiInfoってどのBITMAPの情報なの?」ということが、変数名を見ただけで分かるように。

んで、前からずっと気になってたけど
>while((timeGetTime()-timeSc)<SecondPerSc);
このビジーループは本に載ってたやり方なの?
もしそうならその本は糞と認定せざるを得ないので書名を教えて。

「ビジーループ」って単語が分からない?なら、googleとかに聞いてみてね。

200 名前:名前は開発中のものです。 mailto:sage [04/03/18 02:53 ID:Si6/VCoc.net]
今始めてマトモにソース見たんだが・・・・
猫でもわかるプログラミングから始めることをお勧めする。
もっとコンソールいじってからにしておきなさい。

201 名前:98 mailto:sage [04/03/18 23:35 ID:r5sO1u2T.net]
>>197
よく分からないのでたぶん使わないです。


>>198
おめでd


>>199
自分で作ったSleepもどきです。
ビジーループでググったら、負荷が高くなるからやめろと書いてあったので
他のやり方を考えてみます。


>>200
コンソールだけだと何を作っていいのか分からないのと、モチベーションが続かないので
winAPIと並行してやっていきます。



202 名前:名前は開発中のものです。 mailto:sage [04/03/19 00:17 ID:whgiIXKB.net]
>>201
>自分で作ったSleepもどきです。
>ビジーループでググったら、負荷が高くなるからやめろと書いてあったので
>他のやり方を考えてみます。
そか。えらい。

あとは、ちゃんとしたゲームループを作って、
・入力→ゲームの状態(主人公のマップ上での位置とか)の更新
・描画処理
をきっちり分ければ、ゲームの基礎は出来たも同然。
なぜ分けないといけないかというと、今のままだと、画面上に主人公とは独立して
動くNPCが出てきたときに処理できないからね。

203 名前:200 mailto:sage [04/03/19 08:07 ID:5YapUc1Z.net]
>>201

気持ちは分かるんだけど、せめて一回くらい目を通しておくべきだと思う。
それだけで大分違うはず。

204 名前:98 mailto:sage [04/03/20 18:53 ID:th+dSxtZ.net]
>>202
NPCの数が一定ならなんとか作れそうなんですが、
不定になるとどうやればいいのかさっぱりです。

>>200
理解したかどうかは置いといて、一通り読んでおきますた。


今のまま作っていくとグローバル変数だらけになりそうなので
www.geocities.co.jp/SiliconValley-Bay/2736/a001.txt
こんなの作ってみた。


変数名考えるのがマンドクセなんですが、何かこつとかありますか?

205 名前:98 [04/03/20 23:02 ID:th+dSxtZ.net]
たぶん完成。上がソースで下が実行ファイル
www.geocities.co.jp/SiliconValley-Bay/2736/zz73.txt
www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a3.zip

・ちらつきが減った。
・グローバル変数が少し減った。

次はマップ切り替えは中止して、エンターキーを押したらコマンドが出る、というのをやろうと思う。

206 名前:名前は開発中のものです。 mailto:sage [04/03/20 23:23 ID:70F0it+2.net]
まだちょっとちらつくのは、InvalidateRectの最後の引数がTRUEだから。
あと、無意味なクラスが気持ち悪いぜ!

207 名前:名前は開発中のものです。 mailto:sage [04/03/21 00:26 ID:BKuLrlOv.net]
>>205
動くが遅いけど、逆にそれが心地よかったり。クラスが分からんから
見れないけど、遅いのはたぶん1ドットずつずらしてるからだと思う。
2ドットずつ、極端な話32ドット一変にずらしてしまうと早くなると思う。

>自分で作ったSleepもどき
自分もコンソールの時はそれで、ウィンアプリの時はちゃんとPeekMessageを
使わずGetMessage+イベント取り分でやってた。ライブラリのTimerだと精度が
悪くなるから何か工夫していたと思うけど忘れてしまった。

>変数名考えるのがマンドクセなんですが、何かこつとかありますか?
自分もよく悩みます。自分はできるだけ1単語にして、その分
コメントをしっかりつけるようにしています。ただ、グローバル変数は
まず使いません。ファイル分割するようになると返ってめんどくさくなったり
するので。後、以下の所も参考にどうぞ。
pc2.2ch.net/test/read.cgi/tech/1067171530/l50
pc2.2ch.net/test/read.cgi/gamedev/1024902432/l50

208 名前:98 mailto:sage [04/03/21 19:51 ID:P8h6pce6.net]
>>206
ちらつき撲滅できますた!

>>207
ビジーループを避けるためにいろいろ工夫したら結局Sleepになってしまった orz
>コメントをしっかりつけるようにしています
これいいですね。真似してみます。



コマンドは無理だったので、メッセージウィンドウ表示。
www.geocities.co.jp/SiliconValley-Bay/2736/zz76.txt
www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a4.zip

メッセージウィンドウの背景と文字色を変更したいんですが、
SetTextColorが使えないです。
こういうときはどうしたらいいんでしょうか

209 名前:名前は開発中のものです。 mailto:sage [04/03/21 20:02 ID:lBIVIhzW.net]
静止状態では、結局CPU100%使っちゃってるよ。だめじゃん。
あと、マップ表示がスクロール終わるまで帰ってこない関数って後で困るよ。
スクロールしてる最中に同時にNPCを動かしたくなったらどうするのさ?

210 名前:98 mailto:sage [04/03/21 20:27 ID:P8h6pce6.net]
進むの中断して組みなおして出直してきます。。

211 名前:名前は開発中のものです。 mailto:sage [04/03/21 21:20 ID:lBIVIhzW.net]
スクロール位置の更新と描画が分離されてなかったり、
GDIじゃなくDirectXつかってたりするが、
↓見たいな感じにすればいいよ。
ttp://www.sm.rim.or.jp/~shishido/drpgs1.html

ゲームプログラミング練習長持ってるんだっけ?
読んだこと無いけど、そっちのほうもこういう処理になってない?



212 名前:98 mailto:sage [04/03/22 21:35 ID:qIg3ILGt.net]
>>211
見てみました。↓draw()でSleep代わり?にこうしてるみたいなんですが、
if (GetTickCount()>dwTime+5) dwTime=GetTickCount();
else return;

前に自分で作ったのが↓
dwTime = GetTickCount();
while(GetTickCount()<dwTime+5);

上と下って何か違いあるんですか?どっちもビジーループに見えるんですが。

>そっちのほうもこういう処理になってない
本のほうではDirectX使ってないです。他の細かいところも、違う書き方してます。

213 名前:名前は開発中のものです。 mailto:sage [04/03/22 22:18 ID:IkgfwbwO.net]
ていうか>>211のURLはゲームプログラミング練習帳の作者ジャン。

んでね、
www.sm.rim.or.jp/~shishido/src/drpgs1.txt
  } else
    draw(); // 描画処理
ここを
  } else {
    draw(); // 描画処理
    sleep(1);
  }
にすれば少なくともビジーループじゃないでしょ。
んで、>>211で言いたかったのはビジーループのことじゃなくて、>>209
>あと、マップ表示がスクロール終わるまで帰ってこない関数って後で困るよ。
>スクロールしてる最中に同時にNPCを動かしたくなったらどうするのさ?
これのこと。

上のURL(+Sleepバージョン)と>>208のプログラムを良く比べてみ?

214 名前:練習帳著者 mailto:sage [04/03/22 22:50 ID:8UFWL+KK.net]
>>212
>if (GetTickCount()>dwTime+5) dwTime=GetTickCount();
>else return;

これは、一つのif文の中で書けば

if (GetTickCount() > dwTime + 5) {

 dwTime = GetTickCount();

 ゲームの処理(draw()の中身)

}

という流れ。
「前回処理時間から指定時間(5ms)が過ぎていたら、現在の時間を
処理時間として記録し処理を行う」もので、処理を行わない場合には
そのままメインループ(if文の外にあるメッセージポンプ)に処理が
返るから、処理がそこで停まるビジーループにはなりません(あの
ソースももう5年前・・・。RPG関連の記事はそろそろ全面的に書き
直さないといけないですかねえ)。

>while(GetTickCount()<dwTime+5);

だと「指定時間が過ぎるまで」どうなります?


215 名前:練習帳著者 mailto:sage [04/03/22 22:58 ID:8UFWL+KK.net]
まあ、実際にRPG作ってみると「一定の周期で処理を行う関数」にゲーム
の処理をすべてまとめるのは無理があるから、メインループよりはゲーム
処理用にスレッド作った方が楽になるかな、という気がしてきたんですが。
特に厄介なのは、戦闘シーンやイベントの待ち時間・・・。 最初はあち
こちでPeekMessege()してたけど、これはちょっと違うかな、と。

スレッド作れば、最悪無限ループにしてもUI停まりませんからね(^^;。
もちろん、最終的なプログラムにするときにはスレッド内からの終了処理
(メインスレッドからの終了指示の監視)は必要だろうけど。

>>214
>ていうか>>211のURLはゲームプログラミング練習帳の作者ジャン。

そうですね。あのページの内容はもうかなり古いものもあったりして
書き直さないとなあ、と思っている部分が多いんですが、あちこちに
URL張られているようでちょっと焦ってます(^^;。

とりあえず、「4方向スクロールのマップ表示とキャラクタの透過描画」
あたりに関しては、もうちょいましなソース上げておくつもり。


216 名前:名前は開発中のものです。 [04/03/22 23:27 ID:hc5U3G0l.net]
本物キター

217 名前:名前は開発中のものです。 [04/03/22 23:29 ID:mioo0vPT.net]
著者降臨age!

218 名前:名前は開発中のものです。 [04/03/22 23:33 ID:nq9Pmduh.net]
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな
上げ忘れちまったよ。ごめんな上げ忘れちまったよ。ごめんな

219 名前:98 mailto:sage [04/03/22 23:46 ID:qIg3ILGt.net]
>>213
ああ、分かりました!
1ドット描画するたびに関数を終了して、グローバル変数とか構造体とかで
描画回数をカウントしておいて、1マス描画し終わったらカウンタリセットする。
すると割り込み処理ができるようになる。

>>215
うお・・・著者様ですか・・・
while(GetTickCount()<dwTime+5);
だと5ms経過するまで待機しかできない上に、処理が重くなってしまう。でいいでしょうか・・

220 名前:名前は開発中のものです。 mailto:sage [04/03/23 00:02 ID:4auKbf0z.net]
>の処理をすべてまとめるのは無理があるから、メインループよりはゲーム
>処理用にスレッド作った方が楽になるかな、という気がしてきたんですが。
この辺は、伝統的には所謂タスクシステムで解決してきたのかな。
スレッドだと同期が大変過ぎるしこういう用途には重すぎると思う。

まぁ、タスクシステムっていってもいろいろなやり方があるみたいだけど…

221 名前:名前は開発中のものです。 mailto:sage [04/03/23 00:47 ID:9F6tXsaP.net]
シナリオスクリプトを実装する時にはスレッドにしたりもする
ファイバー(コルーチン)という手もあるようだけどね

異なるプログラム方式の連携
ttp://www.jah.ne.jp/~naoyuki/Writings/VScheme6.html




222 名前:名前は開発中のものです。 mailto:sage [04/03/23 01:05 ID:PMWtRlHb.net]
シナリオなんかだと、タスクシステムでコールされるタスク関数を
ファイバ(マイクロスレッド、コルーチン、継続でもOK?)にしておくと
効率よく開発できるかな、とかおもったりしたけど全然試してない。

このへんは、やね本2だかに書いてあるらしいけど読んだこと無いです。

223 名前:名前は開発中のものです。 mailto:sage [04/03/23 02:20 ID:JCV/36ob.net]
俺もスレッド使わないほうがいいと思う
マルチスレッドを毛嫌いするわけじゃないが、明確な理由なしにスレッド化するのはやめたほうがいい
ゲームで必要になる場面があるとすれば、SLGの思考ルーチンくらいだと思う

で、ちょっとスレ違いの話題になるが、
ファイバってCreateFiber関数とか使う奴のこと?
だとするとあんなの使わなくても関数ポインタ切り替えでいいじゃん、と思うんだが・・・
#少なくともゲームにおいては。なんかいい利用方法あるならスマン


224 名前:名前は開発中のものです。 mailto:sage [04/03/23 02:48 ID:PMWtRlHb.net]
>だとするとあんなの使わなくても関数ポインタ切り替えでいいじゃん、と思うんだが・・・
その関数を減らすために使うんだよ。

普通はその関数の操作対象のオブジェクト(やシーンなど)の状態が変わったら
関数を切り替えるわけでしょ。ファイバを使うと、その「状態」が「関数をどこまで
実行したか」で表せるようになるから、状態ごとにいくつかに分かれてた関数を
ひとつに出来る、と。

まぁ、でもこういうのは大概スクリプトで実現するような気がしないでもない。

225 名前:223 mailto:sage [04/03/23 05:14 ID:JCV/36ob.net]
>>224
ちょっと待て、その利点は間違ってると思うぞ
ファイバ使っても関数減らすことになるとは思えない

このスレなのでRPGの例で行くが、
RPGにおける「状態」ってたとえば
・マップ移動(キー入力待ち)
・マップ移動(スクロール)
・戦闘中
とかに分かれるよね
ファイバを使う場合、これらの関数をCreateFiber関数で登録し、SwitchToFiberで切り替えるだけだ。
使わなくとも一旦呼び出し元ループに戻って別の状態用関数を呼び出すのと関数の数はほぼ変わらん
#状態の定義が食い違ってるかも?

スレ違い継続&長文スマソ


226 名前:名前は開発中のものです。 mailto:sage [04/03/23 08:41 ID:PMWtRlHb.net]
>>225
もっと先の話だよ。
イベントシーンとかそのへん(応用先はそれだけじゃないよ?)
スレ違いだが、シューティングの敵の動きの記述に使ったりもした。

227 名前:名前は開発中のものです。 mailto:sage [04/03/23 09:03 ID:PMWtRlHb.net]
あぁ、でもこの場合、少なくてもマップ移動はまとめられるね。
ヘンテコ擬似コードだけど、こんな感じ?(描画はメインファイバ側でやるという前提)

void MapMove() {
 while(1) {
  //方向キーが押されるまで待つ
  while (!CheckHitCursorKey())
   SwithFiber(mainFiber);
  MoveMap(GetKeyState());//スクロール方向を決める処理

  //ここからスクロール処理
  for (int i = 0; i < MAP_CHIP_SIZE; i++) {
   ScrollMap();//1ドット分スクロール
   SwitchFiber(mainFiber);
  }
 }
}

この場合にまとめるのが正しいかは議論ありそうだがそれはおいといて、例としてね。

228 名前:練習帳著者 mailto:sage [04/03/23 09:10 ID:R4NaancD.net]
>>220
別スレッドの利点は、他のスレッドと同期する必要をなるべく生じさせ
ない、ゲームに関する処理を一本道の流れに分離しておくような形式に
できた場合、Windowsのシステムの流れをあまり意識しないでゲームの
処理に集中できるかな、と。

実際、戦闘やスクリプトベースのイベント処理も含めてRPGのデータ処理
やバックバッファ(あとはウインドウのDCに出力するだけのDIBSection)
への描画処理をすべて別スレッド内で行うシステムを作ってみたんですが、
比較的単純なシステムではプログラムも一本道の単純なものにまとめられ
そうで、これはこれでよさそう。
小規模で単純なRPG/ADVでは、こういったタイプの処理もありかも。

まあ、一定時間ごとに呼び出す処理用関数で状態を管理しながら処理して
いく、という形にまとめられればその方がよさそうですけどね(ただ、
ゲーム本体の処理以外の部分でたいしたことをしていなければ毎回状態を
管理しながら一定時間ごとに処理を行う、という流れはスレッドで連続的
に実行しているように書く、というのと流れとしては同じになりそう)。
私もメインループ内で一定時間ごとに状態に応じて振り分け、という設計
を考えていましたが、別スレッドで処理する実験結果を見ると意外にうま
くいきそうだったんで、とりあえず別スレッドを作る方向で作っています。

ゲームの処理の流れを本格的に管理するつもりなら、フレームワークの開発
からやる方がよさそう・・・。


229 名前:名前は開発中のものです。 mailto:sage [04/03/23 11:14 ID:PfXAGYNf.net]
エェー?本当にちゃんと同期できてる?データの整合性もちゃんと保ててる?
マルチCPUの場合は、同じデータをアクセスするコードが「同時に」2つ以上走ることも
あるんだよ?

マルチスレッドは、データの不整合性、デッドロック、抜け出せないロッキング、
優先順位の逆転などなど気をつけないといけない罠が多すぎるので、どうしても必要
なところ意外では使わないことにしてるよ。
スレッドがだめって言ってるわけじゃないけど、初心者向けでは無いよね。

「処理の流れ」を記述したいときは、大概スクリプトにするかなぁ?
マイクロスレッドでもいいと思う。

230 名前:名前は開発中のものです。 mailto:sage [04/03/23 12:01 ID:JCV/36ob.net]
>>227
んー・・・なんとなく言いたいことは分かった、ありがとう
けどやっぱタスクシステムから乗り換えるほどの理由じゃないっす
#スレ違いすまんがSTGの敵の動き制御部分は特に意味がなさそう
#理由はたとえば同じ種別の敵が10いたら同じ関数を10回実行しなきゃいけない。
#けど同じ関数を回すわけだから結局状態データは外部に置かなきゃいけない
#同じ関数を10個ファイバとして登録して再利用するにしても、
#結局被弾したとかの状況によって初期化するわけだから外部で制御しても大差なし
#そもそも最近のハードだと敵の動きは外部データで持つことが多いので
#違う敵でも同じ関数で処理する

>>228
Windowsのシステムの流れってぶっちゃけメッセージループだよね
なら別スレッドにする必要はないかと
PeekMessage(およびそれに付属する処理)を1タスクとして考えればいいだけ
たとえばバックバッファを作った後でPeekMessageを呼び出せばいい

231 名前:名前は開発中のものです。 mailto:sage [04/03/23 12:25 ID:rzkxl8IS.net]
>>230
>けどやっぱタスクシステムから乗り換えるほどの理由じゃないっす
いや、タスクシステムと併用するんだよ当然。
タスクシステムからタスク関数を呼び出すと思うけど、それをファイバにするという話。

>#同じ関数を10個ファイバとして登録して再利用するにしても、
>#結局被弾したとかの状況によって初期化するわけだから外部で制御しても大差なし
まぁ、被弾とか非同期で状態が変わる部分は、別関数にせざるを得ないよね。「例外(Exception)」だし。
でも、多数の状態が(ほぼ)シーケンシャルに切り替わっていく状態なんかでは、状態ごとに関数分けたり
状態変数作ってswitchで分けたりするよりは、すっきりしたプログラムになると思う。

まぁ、もちろん、
>#そもそも最近のハードだと敵の動きは外部データで持つことが多いので
なので>>224ではスクリプトでやる場合が多いと書いたわけだけど…

どっちにしろ「使いようによっては便利なときもある」って話だ。
全ての場合で使えると言ってるわけでもない。ファイバはメモリ食うしね。



232 名前:名前は開発中のものです。 mailto:sage [04/03/23 16:31 ID:cY6fF1y+.net]
マルチスレッドにする利点はタイトルバーをクリックしても処理がとまらないことかな

233 名前:98 mailto:sage [04/03/23 21:04 ID:s4+zR2jB.net]
よく分からないんですけど、マルチスレッド使えないとやばいっていうことでしょうか?


今度こそマップスクロール完成版↓
www.geocities.co.jp/SiliconValley-Bay/2736/zz78.txt
www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a5.zip

・静止状態にCPU100%になっていたのを修正(Sleep(1);をつけた)
・メッセージウィンドウ表示時にCPU100%になっていたのを修正(Sleep(1);をつけた)
・描画関数を2つに分割

なんか処理が重くなったような気がする・・・

234 名前:名前は開発中のものです。 mailto:sage [04/03/23 21:12 ID:PMWtRlHb.net]
んじゃ、次は、DrawMapの、「〜スクロール時描画」を「静止マップ表示」ひとつにまとめよう!
これでかなりすっきりするはず。

235 名前:98 mailto:sage [04/03/24 22:18 ID:w/FFfgKd.net]
すっきりしたかどうか分かりませんが、まとめてみました↓
www.geocities.co.jp/SiliconValley-Bay/2736/zz79.txt
・描画方法を少し変更

メッセージウィンドウ表示は置いといて、次はNPCを作ってみる予定

236 名前:98 mailto:sage [04/03/29 19:11 ID:hm6pjM86.net]
ログが消えてる(´・ω・`)

NPCの移動をなめらかに描画するのが難しいんですが、
なんかいい方法とかないでしょうか・・・

237 名前:98 [04/03/30 22:16 ID:W6u+pmd7.net]
NPCがどうしてもうまく描画できないので、マップ自体の描画方法を
「何か起こったら描画」から「常に一定時間おきに描画」に変更してみた。
www.geocities.co.jp/SiliconValley-Bay/2736/zz88.txt
www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a7.zip

方向性が間違ってるような気がしないでもないんですが、
こういう描画方法でもいいんでしょうか

238 名前:98 mailto:sage [04/04/01 21:53 ID:xdIEUIEH.net]
NPCなめらか移動
www.geocities.co.jp/SiliconValley-Bay/2736/zz91.txt
www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a8.zip

NPCの移動がランダムではないような気がする。
気のせいかもしれないけれど、ある方向にいったん進んだら、
次に進む方向も同じになる確率が高い。

次は当たり判定をつけようと思う。

239 名前:200 mailto:sage [04/04/02 00:46 ID:HxQygUy0.net]
srand((unsigned)time(NULL));
は、最初に一回だけね。ループには入れないで。
srandは乱数ジェネレータの初期値。
rand()関数はsrandを実行しなくても一回一回違う値を返すけど、もう一度プログラムを実行してもまた同じ値を返してきてしまう。
一回目の結果:7,2,5,6,4,1...
二回目の結果:7,2,5,6,4,1...
こんなカンジで。
srandでtime(NULL)を与える理由は、プログラムを起動するごとに違う値を出力するようにするため。
一回目の結果:7,2,5,6,4,1...
二回目の結果:5,1,8,4,3,7...
ってカンジで。
timeは確か秒単位だったから1秒以内ならrandが同じ結果を返すことになる。
って、コレも猫でもわかるプログラミングで説明されていたような・・・

240 名前:200 mailto:sage [04/04/02 00:49 ID:HxQygUy0.net]
あ、別のサイトだったっぽいです。

241 名前:98 mailto:sage [04/04/02 20:19 ID:RjQBCx/D.net]
おまじない程度の認識しかなかったので、ここが原因とは思いませんでした。
ランダムに動くようになりました。

ふと思ったんですが、WINAPIなら timeGetTime()%10; でも0~9のほぼ乱数ができるような
気がするんですが、これって邪道でしょうか。



242 名前:98 mailto:sage [04/04/02 22:26 ID:OS/Q3nYt.net]
↑自己レス 同時に複数の乱数を得たいときに不便なのでやっぱりだめ

当たり判定をつけた。ついでに歩行アニメーションもつけた。
www.geocities.co.jp/SiliconValley-Bay/2736/zz94.txt
www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a9.zip

次はマップエディタを作る予定。

243 名前:98 [04/04/03 22:19 ID:eDSQOtXr.net]
マップエディタセーブ機能なし
www.geocities.co.jp/SiliconValley-Bay/2736/zzz2.txt
www.geocities.co.jp/SiliconValley-Bay/2736/map_ed_1.zip

マップエディタ作る時間 > テキストでマップを作る時間
な気がしてきた。

APIのファイル操作はできれば避けたいんですが、
#include <window.h>をすると#include <fstream>できなくなるんでしょうか?







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

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

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