C++でFCのドラクエっぽいRPGを作るat GAMEDEV
C++でFCのドラクエっぽいRPGを作る - 暇つぶし2ch337:1
08/01/12 00:28:36 WDlhVTgQ
どうぐ->そうび から装備できるようにしました。
普通の装備コマンドはまだ未実装です。
戦闘中に攻撃用アイテムが使えるようになりました。
複数攻撃できるようになったのは、かなり興奮しました。

もうちょっとしたら じゅもん の実装に取り掛かろうと思うのですが
じゅもんの並べ方をどうしようか迷ってます。
案①DQ3方式
職業ごとに呪文テーブルを用意する。
転職などをして、他の職業の呪文を覚えたら
じゅもん->しょくぎょう->呪文選択
という流れで選択する。
○空白が埋まらないイライラがなくなる
×手間がかかる。 DQ6方式の転職には対応できない。

案②DQ6方式
全呪文を網羅したテーブルを用意しておく。
○ 用意するテーブルが一つで済む。
× 人によっては埋まらない空白ができてしまう。

説明のしかたがへたくそだなぁ… Orz
URLリンク(sakuratan.ddo.jp)

338:名前は開発中のものです。
08/01/12 09:13:21 nuc01uN3
おまいが作りたい方で作れ。
やっていることはFCドラクエの移植じゃなく、スレタイのように
「ドラクエっぽいRPGを作ること」だろうから。

339:名前は開発中のものです。
08/01/12 09:53:41 b7SQU1lN
じゅもんに番号つけて前から順番に並べるっていうのじゃあかんの?

340:名前は開発中のものです。
08/01/12 19:40:34 84T2Ztwg
うpは週一くらいにしとけよ
こんな過疎板のスレで誰もいちいち落として見てねえだろ
はっきりいってろだスペースの無駄遣い

341:名前は開発中のものです。
08/01/12 20:09:55 VCz2GVdS
差分うpでもいい気がするけど、モチベ維持にいいだろうしペースはうp主次第でいいんじゃね?

342:名前は開発中のものです。
08/01/12 21:00:00 PD5xMP0i
過去40万年の気温変化
URLリンク(www.teamrenzan.com)

343:名前は開発中のものです。
08/01/13 21:47:31 CoopjDr1
時間かかってもちゃんとやれてるってのが偉いな
俺もこういう事やろうとはしたがすぐ飽きて挫折してばかりだ。

それはそうと、配布zipにobjファイルは別にいらんと思うんだが
exe作った後に消すか別フォルダに作るよう設定した方がいいんじゃないか。

344:名前は開発中のものです。
08/01/14 03:31:18 SVRk/AgR
俺は作りながら見せるってのがすごいと思ったよ
俺はβ的な所まで形になってから公開する予定…

345:1
08/01/14 06:17:05 aSQurjHs
【そうび】コマンドを実装しました。
思ったよりはすんなりできたかもしれない。

URLリンク(sakuratan.ddo.jp)

>>338,339
 呪文に番号をつけて並べることにします。れすさんくす><

>>340,341
 自分的にひと段落のところでUpしていかないとモチベーションが… Orz
 でも、ろだの無駄遣いは、おっしゃるとおりかもなので、次回から更新ごとに削除することにします。
 え?OpenSVN? 英語が読めなくて結局使い方が… Orz

>>343
 たしかに、objはいらないですねぇ…
 サイズ減らすためにも消すことにします。(忘れたらごめんなさい。
>>344
 誰かにレスつけてもらうと、モチベーションあがってくるんです。
 多分、僕みたいなタイプが一人でやろうとすると、形になる前に終わってしまう気がするので


346:名前は開発中のものです。
08/01/14 18:09:01 PQcWfF1X
>>345
簡単な配布用サイトを作って、このスレで逐一更新報告するのは駄目なの?
ろだの無駄遣いを気にせず、モチベーションも維持出来るぞ

347:名前は開発中のものです。
08/01/14 19:50:06 UuCFVpAj
>>344
それが普通だと思うよ

348:名前は開発中のものです。
08/01/14 22:32:53 G0SwQqXv
この板の普通といえば逃亡だろ

349:1
08/01/15 00:38:48 V3xzM7xj
俗に言うまとめサイトですか…
作ったことないんだよなぁ…
いざ作るとなると、そっちに全力費やして、本来のものがおろそかになりそう…

350:名前は開発中のものです。
08/01/15 00:43:14 C2FoLMEe
そんなもの完成するまで作る必要なし

351:名前は開発中のものです。
08/01/15 00:43:26 AtQAfnor
管理きにしないでやるならどっかのブログスペース借りればいいけど
気にしないでやりたいようにやればいいと思うよ

352:名前は開発中のものです。
08/01/15 11:48:24 tFhP1thC
変にまとめサイトとか作ったとたん放置されるのが基本だから
現状維持OK

353:名前は開発中のものです。
08/01/15 19:17:28 TKI/oqBM
>>1が頑張っている様なので、
俺もソース読んでアドバイスしてみる。
長文なので、長いと思ったら適当に読み飛ばしてくれ。

1.
Character.hとかで使われているフラグはbool型を用いたほうがいいな。
C言語ならintで代用するのは分かるが、せっかくC++を使っているんだから。

2.
C++ならポインタより参照(&)を出来るだけ使うべきだ。
ただし全てのポインタを置き換えられるわけじゃない。念のため。
だが、ソースコードも結構な量があるから大変だろう。
勉強して、置き換えたいなと思ってからやればいい。

3.
引数にポインタや参照を用いる場合、
引数にもconstをできるだけ付けるように気をつけたほうがいいと思う。
変数の入出力がよく分かるようになるから。

4.
クラスのメンバ変数名が大文字だったり、小文字だったり統一されていないようだけど、
普通は定数を大文字にするよね?
混乱するので書き直したほうがいいと思う。


354:名前は開発中のものです。
08/01/15 19:18:51 TKI/oqBM
続き

5.
int Character::decreaseHP(unsigned int i)
とか、妙なところでunsigned intを使っているけど、
できればintに統一したほうがいいと思う。
怖いのはunsigned int とintが混ざって値がおかしくなることだから。

6.
所々でvoid *を見かけるけど、普通は使わないと思う。
あまりソース見てないから、絶対必要だという理由があれば教えてくれ。

7.
方向を0や1や2で管理しているけど、できればenum(もしくはconst)を使って欲しいなあ。

8.
.hにもgetter/setter程度なら定義を書いたほうがいいと思う。
どうしてもという理由があるなら別にいいが。
.hに書いた関数はinline展開されるから簡単な関数なら実行速度が上がるぞ。


355:名前は開発中のものです。
08/01/15 19:22:55 TKI/oqBM
悪かったところばかり挙げていると、
>>1がへこんでしまうだろうから、最後に良かったところを挙げる。

1.
DXLibを使っているとはいえ、
数ヶ月でここまでのRPGを作ったことは素直に凄い。

2.
ゲームプログラミングだと、描画関連で苦労するので、
ライブラリを使用したのはある意味正解。

3.
C++経験が少ない割には
ソースがそれほど汚くはない。

4.
クラス分けが継承を使って、きちんと出来ている。

以上、長文スマソ。
昔からRPGを作りたかったが、結局作れなかった俺は>>1を応援しているよ。

ついでに報告しておくと、DragonQuestImitation,
俺の環境ではXボタン押して終了したのにプロセスが残っていたぞ。
多分リソースをリークしている。確認したほうがいいのでは?

356:名前は開発中のものです。
08/01/15 23:48:33 UO44uzzc
Window閉じたけどpostpuitしてないって奴か?

357:1
08/01/16 08:09:07 aNkfkNcc
>>350-352
 たしかに、まとめサイト作った瞬間に半端な達成感で放置しちゃいそうですね。
 現状維持で逝きたいと思います。

>>353
 レスありがとうございます。
どれも気をつけるべきことばっかりなので、とても参考になります。
void * についてですが
MetaCmdクラスでつかってます。
MetaCmd::type で受け取った文字列によって void *valuableが
PlayerParty* だったり MonsterParty * だったりItemBox * だったりするので
それぞれ専用のポインタ変数を用意しなくてもいいようにしたかったんです
でも、エラーを避ける、という意味ではなるべく使うべきではないんでしょうね。
なんか便利そう、使って見たい! って思ったのもあったんです(ぉぃ

Xボタンで終了に関してですが、僕のPCでは確認できなかったので
どの場所で押したか教えてもらってもいいですか?

>>356
postpuitってなんでしょうか? すみません、ググってもでてこなかったんです Orz

358:1
08/01/16 08:15:36 aNkfkNcc
つよさ -> ならびかえ を実装しました。
職業による装備判定を実装しました。
いまのところ てつのたて と てつかぶと は
ゆうしゃ は装備できますが そうりょ は装備不可です。

URLリンク(sakuratan.ddo.jp)

次にすべきは353さんの言ってたことを中心にリファクタリングかなぁ…

359:名前は開発中のものです。
08/01/16 08:16:39 9K3RdyGz
ごめ、post"q"uit w

360:353
08/01/16 13:42:54 StPDBBfO
postquitとは多分PostQuitMessage()のことだろう。
ただ、ソースを見たところ、ウインドウプロシージャを使わずに、
DxLib_End()とかを呼び出しているようなので関係ないのかな。

ちなみに最新版でもう一度やってみたが、
戦闘中でXボタンで強制終了させるとリソースリークが起こるようだ。
移動中やタイトルでは起こらなかった。

361:名前は開発中のものです。
08/01/16 17:11:20 dnCNkhgK
>>360
ソース見てないから、適当な発言だが

それって、単にDXlib側の終了命令の時に
終らせるべきモノを終らせないで、普通に終らせちゃうから
リソースリークしてるだけでは?
どっかで、なにか取得または確保したのを自動開放してくれないのに
そのまま落としてるとかさぁ

362:1
08/01/17 08:14:24 HCFfaCxW
多分PostQuiMassageの代わりがDxLib_End()だと思います。
無限ループは、キー入力待ちの状態のはずで
キー入力はPlayerPartyクラスのsetInputKeyで行われていて
setInputKey関数内で、ProcessMessage()を呼び出していて
×ボタンを押すとProcessMessage()が-1を返すんだと思います。
-1が返ってくる時はsetInputKeyは0を返してループを抜けるようにしてあります。
最終的にWinMainの最後まで行くはず…?

DxLibはフルスクリーンを前提としているらしいので、×を押された時の対応が曖昧なのかも知れませんが、
どっかで取得あるいは確保した何か、をリリースし忘れている可能性が 大 で す 。




363:名前は開発中のものです。
08/01/17 09:41:19 /oeOIVqW
なんだろうなあ。
DxLibでユーザが解放しなきゃならないものはほとんどなかったと思うけど。
そもそも解放するしないにかかわらず、プロセスが残るってのは変な気がする。

364:名前は開発中のものです。
08/01/17 09:53:05 /oeOIVqW
ソース見たが、
Field::Draw()でProcessMessage()使ってる。
しかも戻り値チェックしてない。

ProcessMessage()やScreenFlip()はあまりソース中に散在させるものではないと思うよ。
人それぞれかもしれんが。

365:1
08/01/17 21:23:10 HCFfaCxW
あ、本当だ… Orz
右も左も分からない時に書いた箇所だ…

ProcessMessageは全二箇所で、一箇所にまとめるのは、僕の頭じゃ無理そうです。
ScreenFlipも同様で、こっちは19個もありました。
ProcessMessageもScreenFlipも最小限に抑えるべきだと、僕もそう思います。
完全に設計ミスですね Orz
でも、今、修正すると心が折れそうなのでやめておきます。
次回作を作る時は、もう少しまともな設計ができそうです。
…いや、そうならないとこのスレの意味が…

Xボタンの件は、タイトル画面で症状を確認できました。
Escで終了した場合はおこりませんでした。
原因はやっぱり不明です。
もうちょっと自分でいじってみてダメそうならDxLibの掲示板に行ってみます。

方向を定数に変えました。
すこしずつconst関数に変えていってます。
呪文を実装しています。フィールドで使用が可能になっています。

URLリンク(sakuratan.ddo.jp)
削除パス設定し忘れた… Orz



366:名前は開発中のものです。
08/01/17 21:56:13 6FxDnuCV
複数ある時点でメッセージキューの仕組みが破綻すると思うのだが

367:名前は開発中のものです。
08/01/17 22:17:21 /oeOIVqW
>>365
タイトル画面の処理って、下のループかな?

> int TitleCount = 0;
> while(!party.setInputKey()){

ここでウィンドウ閉じるとループは抜けるだろうけど、DxLib_End()までは遠いね。
やはり、party.setInputKey()が分散≒ProcessMessage()が分散してるところが怪しい。

DXライブラリは自分も使ってるけど、以下のような感じでやっている。
メインループは一つ。ProcessMessage()やScreenFlip()は毎フレームに一回だけ呼ぶ。

DxLib_Init();
その他の初期化
while(ProcessMessage()) {
キー入力
switch(state) {
case STATE_TITLE:
title_exec(); title_draw();
case STATE_GAME:
game_exec(); game_draw();
}
ScreenFlip();
}
DxLib_End();

実際は、もっとオブジェクト指向っぽくしたり、ステートが階層構造になっているけどね。

368:名前は開発中のものです。
08/01/17 22:18:56 yQ/WXoAm
最初から人様の作ったラッパー使うのはどうかと

369:名前は開発中のものです。
08/01/17 23:32:10 HfiR7GrD
別にいいよ
>>1はゲーム作りじゃなくてC++の勉強してるんだろ

370:1
08/01/17 23:39:44 HCFfaCxW
winMain以外の関数でループさせないほうがいい、って事ですよね。
格ウインドウのgiveControl関数でループがあり、処理を投げているので
ほぼ一からやり直しになると思います。

×ボタンはつかわないでください、とコメントを添えて配布?とか思ったけど
そんなもん読む人はいないと思うので、(守らないと思うし)
苦肉の策で setKeyInputで呼び出したProcessMessage()が-1を返す時に
その場でDxLib_End()とexit()を呼び出してみました。

僕がテストした範囲内ではタイトル、移動、戦闘、全部Xボタンで正常終了することができました。
お手数ですが、興味のある方、検証お願いします。

大丈夫だったかダメだったかカキコしていただけると大変助かります。

URLリンク(sakuratan.ddo.jp)

371:名前は開発中のものです。
08/01/18 00:20:44 NZS+eY32
C++の勉強なら余計に人様のラッパー使わない方がよくない・・・?
勉強とかいうつもりがなくてただゲーム作るだけなら有り物で近道した方がいいかもしれないけど。

372:名前は開発中のものです。
08/01/18 00:35:48 Y9jpO8YC
>>371
ポリゴンで疑似スプライトから、とか?
そのほうが順番おかしいだろ
DirectXの勉強が主体になっちまう

373:1
08/01/18 00:50:54 tZf/+rJ/
371さんが言いたいのは、DxLibなしでは何もつくれなくなるようなヘたれになるぞ、って警告ですよね?
その忠告、しっかり胸に刻んでおきます。
DxLibを使うようになった経緯の一つに、そもそもライブラリとは何か、すら分っていなかったというのがありまして。
コンソールでHelloWorldを出力して、次にやろうと思ったのがこれなんです。
その程度の初心者が行き当たりばったりではじめたスレなんです。
勉強をかねて、とはいえ、やっぱり愛着もあるわけで
完成させたいんですよ。
シナリオとかも妄想をメモしてる程度ですが、書き溜めていますし。

で、これからの方向性ですが
ランタイム部分は従来どおりDxLibを使っていって
ツクール部分を作る時はDirectXも使わないで作ろうと思っています。

全部完成したら、2DアクションMORPGを作りたいとか思ってます。

これからもがんばるので、なにとぞ応援よろしくお願いします。
>>3-372

374:名前は開発中のものです。
08/01/18 02:20:52 vnoeWmB4
HellowWorldの次がこれって階段飛ばしすぎだろw
それでここまで作れるってんだから
LV1の勇者が偶然の会心の一撃ではぐれメタル倒しでもしたようなLVアップだな
その心意気は買うけどw

ゲームのプログラムやるならDxLiv使ってもいいと思うよ。
1なら大丈夫カモ知れないけど、DirectXの勉強から入る大概の奴は途中で挫折するし。

375:名前は開発中のものです。
08/01/18 05:15:51 fmL4VK0l
DirectXは初級者には難しいからな
とても素人の手には負えない代物
ラッパーライブラリから入るのは強ち間違ってないな

376:名前は開発中のものです。
08/01/18 07:02:39 cTq/87tt
SDLやopen_glを使ってくだちい<><><><>

377:名前は開発中のものです。
08/01/18 13:03:50 xQ14t5Bn
ライブラリを使いこなして組むことも勉強(経験)の一つだよ。
これができない奴は生産性が恐ろしく低い。
勉強はともかく時間とモチベーションは有限なんだから1がやりたいことをやるべきだ。

378:名前は開発中のものです。
08/01/19 12:25:38 57iRLZiD
俺はゲームのライブラリ作成で挫折した口だ。
ゲーム創るのって難しいんだよな。
特に何もかもを自分で作らないといけないC/C++言語の場合。
だから最近はRPGツクールやHSPに逃げる人が増えているのではないか?

379:名前は開発中のものです。
08/01/19 13:22:38 3gX+QM4P
何もかもを自分で作らなきゃならないと思ってるからモチベーションがもたないだけ
趣味プロは、やりたい所以外は楽してもいいんだよ

380:名前は開発中のものです。
08/01/19 13:32:47 qd03KsuI
俺はエディタや開発環境の構築で挫折したよ

381:名前は開発中のものです。
08/01/19 15:47:36 gSyG+qPE
俺はRPG用ツール(マップエディタやドット絵作成ツール)の開発に熱中して結局RPG本体は作る機会を逸しているよ

382:1
08/01/19 15:50:28 IEEE/S8f
なんか僕、ライブラリの意味が分ってないみたいです。
再利用しやすい形でまとめたプログラムの塊、って思ってたんですが、それだけじゃないのかな?
dllとか共有ライブラリとか、掘り下げれば一晩語れそうなくらい深い…?

でもOpenGLはおもしろそう。XBoxで動くらしいじゃないですか。
コンシューマで自作ゲームが動くなんて!
問題は僕の周りに僕以外にX箱もってる人がいないことですね。ねらーはPCもってるだろうし。

***************************************************************
戦闘中に呪文が使えるようになりました。
MP回復アイテムを実装しました。

URLリンク(sakuratan.ddo.jp)

つぎはルーラとか実装しようかな。
戦闘の呪文が9個以上の時の対応しなくちゃ Orz

383:名前は開発中のものです。
08/01/19 17:02:16 Z9p4bTX2
HelloWorldの次に手つけてここまでやれてるってまじかよw
しかも次なる目標2DアクションMORPGとか>>1なら本当にやれそうだし
久々に焦りを感じた。これは俺も何か形になる物を作らねば


384:名前は開発中のものです。
08/01/19 17:45:24 HocoF4ik
俺はライブラリとサンプル作りながら作業は順調に遅れてる

385:名前は開発中のものです。
08/01/19 20:31:54 M1k0mHX6
XBOXで動くのはXNAだよ
【Xbox360】 XNA Game Studio その4 【C#】
スレリンク(gamedev板)

386:名前は開発中のものです。
08/01/19 20:46:07 efIJqSsS
ゴ ゴ ゴ ゴ ゴ ゴ ゴ ゴ   
   /\  /| 
  / /| \/ |(\ /)
 / / |  \|( ゚ー゚) <全力でBCCを捨てVCに移行せよ
/  / |   __〃`ヽ 〈_ 
  / γ´⌒´--ヾvーヽ⌒ヽ 
  //⌒  ィ mfc `i´cli ); `ヽ
 //    ノ^ 、___¥__人  |
/ !  ,,,ノ爻\_ _人 ノr;^ >  )
/ (   <_ \ヘ、,, __,+、__rノ/  /
  ヽ_  \ )ゝ、__,+、_ア〃 /
    ヽ、___ ヽ.=┬─┬〈  ソ、
      〈J .〉、|   |, |ヽ-´
      /""  |ATL|: |
      レ   :|:   | リ
      /   ノ|__| |
↑    /| ,,  ソ  ヽ  )
 \_/ .,ゝ   )  イ ヽ ノ
     y `レl   〈´  リ
     /   ノ   |   | .
     l  /    l;;  |
     〉 〈      〉  |
    /  ::|    (_ヽ \、
   (。mnノ      `ヽnm

387:名前は開発中のものです。
08/01/20 15:27:22 gNdOCc+8
~がやりたい→試しに実装してみる→せっかくだから汎用的なクラスにしよう
→せっかくここまでやったんだからどうせならこの機能も付けとこう
→ベース部分のコードばっかり増えて全然ゲームが作れない
助けてくれ

388:名前は開発中のものです。
08/01/20 17:05:47 hrOxsR47
妥協無くして形にならず
とりあえずかたちにしたいならいい加減な吶喊工事が一番さ

389:名前は開発中のものです。
08/01/20 18:23:03 WjtNncJn
>>387
>→せっかくだから汎用的なクラスにしよう

ここまでで止める

390:名前は開発中のものです。
08/01/20 18:50:59 ImQG3BnS
>~がやりたい→試しに実装してみる

いつもここで止まる俺は、何が足りないんだろうね?


391:名前は開発中のものです。
08/01/20 20:53:01 3ekNMmoB
「こういうものを作りたい」という完成形が頭に描けないことかな。

多分、ちゃんとした絵と音楽があれば、やる気が俄然違うはず。
それらがないから、ちょっとプログラムの実験をして満足、みたいな。

392:名前は開発中のものです。
08/01/20 21:23:11 6uADG+oQ
Kneel to the Emperor of Japan.
You are a Korean. It is ugly race.

393:1
08/01/21 04:26:01 VsfG21W1
>>386
BCC Developerの便利な機能をやっと把握し始めたところなのに… Orz

呪文で、一定数(8個)を超えるとページが送れる仕組みでちょっとてこずってます。
断片的に思いついた事が一つにまとまらない感じ。
紙に箇条書きと自分にしか分からない図を書いて最適解を探してます。
最適解って言っても、全然【最】適ではないんだろうけど。

【とりあえず動くもの】を作るのが楽しくやる秘訣だ、ってどっかで見ました。
自分が書いたプログラムが動くのが楽しいので
ベースのクラスからかっちりくみ上げていくとモチベーションが持たないらしいです。

ところで、ツクール部分はWinAPIで作ろうかと考えていたんですが、
面倒くさいからやめとけとか、そういうのはこのライブラリを使えとかありますか?
ちょっと先のことになりそうですが、先に聞いておきたいなー なんて思ったりして。

394:名前は開発中のものです。
08/01/21 08:18:29 Pz6N6vbp
> BCC Developerの便利な機能をやっと把握し始めたところなのに… Orz
VCを使うとBCCの糞さに気づいてVCマンセーするに100ペリカ
うだうだ言い訳する前に試しに使ってみろ

395:名前は開発中のものです。
08/01/21 11:58:46 MLczczSF
おれは、他のサンプルプログラムをDLして、コンパイルすると
リンクエラー"mfc42d.lib"が見つからん。というのをみて挫折した。
対処方法をググって見たけど、プロジェクトファイルにそんなmfc42dをリンクする設定なんてなく、
アプリケーション形式も、Win32アプリに設定しているにもかかわらずだ。
コンパイラ自体扱えない俺にはC++は無理だと悟った。

396:名前は開発中のものです。
08/01/21 12:46:36 D+puFnUV
>>395
mfc42d.libって、えらい古いライブラリだな。
たまに使っているプログラム見るけど。
mfc42d.libはちゃんと持っているのか?
プロジェクトにはライブラリまでのパス通したか?

>>393
別に無理してVCに移行することはない。
むしろ、初心者のうちにBCCあたりで苦労しておいた方がいいと思う。
俺はBCC Developer->VCへと移行したが、BCCの苦労も役に立ったぞ。

397:名前は開発中のものです。
08/01/21 13:10:26 gT2U2JAO
ツール類は普通に考えるとMFCなんだろうが有料だしな・・・
自分しか使わないならJavaでもRubyでもPythonでも何でもいいんじゃ?

自分用のツールは楽に作れる言語とライブラリでサクッと作るべき

398:名前は開発中のものです。
08/01/21 15:06:45 4uf1EjU0
普通に考えたら.NETなんじゃないの

399:名前は開発中のものです。
08/01/21 16:09:39 5xd0Lli5
>>378
逃げるって言うか現実的な妥協策だろ

400:名前は開発中のものです。
08/01/21 16:13:16 0dbr+6K/
普通とかわけわからん。
使い慣れた方法つかえばいいよ。
データだけならテキストエディタでもExcelでも作れるし。
HSPでサクッと作れるならそれでやりゃいい。
.NETってのが何を指すのかしらんがそれで作りやすいならそれでやりゃいい。
ツールだしな。

401:名前は開発中のものです。
08/01/21 16:36:37 SNqbI5o2
>>393
とりあえず、ツール類なら「バイナリデータが扱いやすい環境」が欲しいね。
バイナリデータを直感的に扱いにくいJavaやスクリプトはやめておいた方が良い。
できればC/C++、GUIの作りやすさ優先ならC#あたりか。

ツクールとして一体化させたい(今作っているシステムをツクールで作ったシナリオ
実行系に作り直したい)というのであれば、今のライブラリでいけそうならそのまま
行けばよいし、ライブラリを使う利点を感じないならAPIベースで組めばよい。
個人的には自力描画中心で描画も単純なドラクエ系RPGなら、自由度の高いAPI
(DIBSection)ベースの方が作りやすいが。

ただ、この部分も出来ればエディタ部分と同じ環境で開発しておくと「部品」を使い
まわしたり統合しやすくなるかな。


402:名前は開発中のものです。
08/01/21 20:12:37 KV4/mVtg
Javaでドラクエ風のゲーム作ってる俺から言わせてもらえば、
Javaは特にバイナリを扱いにくいということはないと思うぞ。

ただ、ツール作るには確かに向いてないかも。
javax.swingでツール作ってたら、
JDKを5から6に上げた途端動かなくなって俺涙目。

403:名前は開発中のものです。
08/01/21 20:20:55 OwrF49yn
VC#は使い易すぎる
タダだし

404:名前は開発中のものです。
08/01/21 20:23:20 NNIybW4r
好きなの使え
誰も止めない

405:1
08/01/21 20:35:30 VsfG21W1
みんないろいろありがと!
実は環境設定とかが苦手で、DxLibを使うに至ったのもDirectXをそのまま使えなかったから、でした。
みんなの意見を参考にしていろいろ試して、自分に合うものを探してみるよ。

406:名前は開発中のものです。
08/01/21 20:41:57 GWNEjOJ7
自分は逆にVC6からBCC(Developer)だな。
アカデミックで商用は作れなかったのと、
どうせWin32APISDKしか使っていなかったので。
プロジェクトファイル名前順並び替えだけツール作って行っている。



407:名前は開発中のものです。
08/01/22 02:25:51 wx3uD/aG
VCだBCCだ言う前にIDEじゃない素の環境を経験するほうが大事な気がする
そうすればリンクエラーでつまづくとかありえないから
そんな大前提の知識もなしにOOP語ってるからあきれるを通り越して笑える

408:名前は開発中のものです。
08/01/22 02:36:36 6clbrVe2
老害がここにも

409:名前は開発中のものです。
08/01/22 05:38:58 Gv4Ssyc0
GCC(MinGW)はどう? 全部フリーで商用も可能w
実際吉里吉里3はMinGWで作ってるらしいよ
URLリンク(sv.kikyou.info)

410:名前は開発中のものです。
08/01/22 08:47:44 IQmrOM9L
あまり考えすぎてモチベーション下がらないようにな
全員が完全に納得する選択なんてないし趣味の範囲の事だ

411:名前は開発中のものです。
08/01/22 09:32:24 51mKF/+V
emacsとかgnuのツールを使えるようになれば今より確実にコードの質や作業効率はあがるだろうけど、
そうなるまでにソフトが2つ3つ完成するぐらいの時間がかかるからなぁ。
「C++の勉強してたのにいつの間にかperlやlisp、シェルスクリプトの勉強してた」とか馬鹿な事になるのがオチ。
BCからC++にうつるにしても、ここまで酷くはないだろうが似たようなことになるだろうとは思う。

412:名前は開発中のものです。
08/01/22 13:20:46 wLhxzshQ
DirectX使ってる時点で移植性も糞もないが
90%近くの環境で動くから問題なし。

413:1
08/01/22 21:22:41 mOu/eEXx
確かにテキストエディタ+コマンドプロンプトで、ビルドしてみるのは重要かもしれませんねー。
どうして違うのファイルに書かれてる関数が見れるのか、最初不思議だったんですよ。
今日、ためしにやってみて、その謎が解けました。

GNUって名前は聞いたことありますね。emacsは知りません。
なにが自分に必要で、自分にあっているか分からないので、少しずつ試して見たいと思う今日この頃。
一応、作業が滞らない程度にね。

やっと呪文のページ送りの機構ができました。

URLリンク(sakuratan.ddo.jp)

これでルーラの行き先とか
持ち物を9個以上持てるようにしたりとか
フィールドの呪文もたくさん持たせられたりできます。

あとイベントフラグ系を実装してみようかな。

414:名前は開発中のものです。
08/01/22 23:25:50 5GRLbyxQ
そろそろ>>1のキャパが限界に近づいてきたヨカーソ

415:名前は開発中のものです。
08/01/23 05:52:11 wvQOC4ad
とりあえずこれが完成するか行き詰まってやめるかするまではbccのままで行ったほうが良いと思う。

と、ツールをとっかえひっかえして肝心のゲーム制作が一向に進まない俺が言ってみる。

416:名前は開発中のものです。
08/01/23 19:00:56 cgi6PhB/
VHDL → メガカミス
汗   → キロカミス
C/C++ → カミス
Java → アホス
C#  → アホス
VB  → キロアホス
PHP → メガアホス
Flash → ギガアホス
Web → テラアホス

417:名前は開発中のものです。
08/01/23 19:13:39 6RO0vpyg
汗って何かと思ったら
Assemblerか

418:名前は開発中のものです。
08/01/23 20:22:26 2KgUJkIZ
>>416
ワナビー乙

419:名前は開発中のものです。
08/01/23 20:57:14 LtiCnrxY
>>416
RPGツクールでおk

420:名前は開発中のものです。
08/01/23 21:46:22 Qgepck6P
>>416

URLリンク(www.geekpage.jp)
プログラミング言語ヒエラルキー


421:名前は開発中のものです。
08/01/24 00:24:18 ViAvMgFb
>>416
可哀想な子だな

422:名前は開発中のものです。
08/01/24 00:53:39 yYzSvo3e
>>416
わかりました。あなたは世界を革命するしかないでしょう。



423:1
08/01/24 21:41:55 j3/D/798
アク禁につき携帯から…

>>420
吹いたw

空気読まずに最新版投下。
******************************
ルーラが使用可能になりました。
イベントフラグを実装しました。
とびらを実装しました。
各マップオブジェクトに存在フラグを設定できるようになりました。
アリアハンを拡張しました。

URLリンク(sakuratan.ddo.jp)


424:1
08/01/25 14:01:19 UVi0ePn3
すみません、最新版アリアハン歩けませんでした。
metaMap.csvに嘘コメントが乗ってます。
家に帰ったら修正版うぷしますが、とりあえず。

× 画像ファイル名 昼 夜 通行可否
○ 画像ファイル名 通行可否 昼 夜

425:名前は開発中のものです。
08/01/26 07:51:23 6ZDIHq1v
>>423
戦闘の文字の送り方のタイミングとかドラクエっぽくなっているな。

アリアハンに入ると右側に動けない。
左側に動いて城から出ることは出来る。

426:1
08/01/26 09:15:46 3u97CoxS
いろいろ手をつけてたら、まともにアップできる状態じゃなくなってしまった… Orz
とりあえず、>>423でうpしたやつをアリアハンが歩けるようにしてうpしておきます。

URLリンク(sakuratan.ddo.jp)

427:1
08/01/26 10:36:56 3u97CoxS
平行してエディター部分も作り始めました。
WinAPIで作ってます。
C++っぽくウィンドウをクラス化しようと思って、
WNDCLASS構造体を継承したWndクラスを作りました。
WNDCLASS::lpfnWndProcにメンバ関数Wnd::WndProcのポインタを渡したいんですが

'long (__stdcall Wnd::*)(HWND__ *,unsigned int,unsigned int,long)' 型は
'long (__stdcall *)(HWND__ *,unsigned int,unsigned int,long)' 型に変換できない(関数
Wnd::Wnd() )

というコンパイルエラーがでます。
相変わらずBCCでやってます。

ソースは
URLリンク(sakuratan.ddo.jp)
です。
ボスケテ Orz


428:名前は開発中のものです。
08/01/26 10:52:11 H+OG9eM0
HellowWorldの次がこれって絶対冗談だろ?w

429:名前は開発中のものです。
08/01/26 12:32:09 pcXY3xH1
MetaCmd クラスを見ると
bool に int を代入してたり、
bool型を返却するメソッドなのに、intを返却してるケースが有るが、
>>1 の環境ではワーニングも何も出ないんか?

あと、VC++2005だけかもしれんけど、
hakase.h の small関数でエラー出まくる
どうやら、platform sdk側 の rpcndr.h で
#define small char
とか ぶっこいちゃってるのが原因みたい

430:名前は開発中のものです。
08/01/26 13:29:52 pcXY3xH1
うちは VC++2005 しか無いんだけど、
動くようになるまでに色々とイジる必要がありますな
なんつーか、本来なら警告が出る部分が目立つから
いまのうちに潰しとかないと危ないなぁ

>>427
& は要らなくね?

431:名前は開発中のものです。
08/01/26 13:30:25 n87t9W9f
>>427
URLリンク(www.m--takahashi.com)
↑ここ読め


432:名前は開発中のものです。
08/01/26 13:49:11 n87t9W9f
つか1はとても初心者とは思えんな
C++の知識は確かに貧弱だけどCかもしくは別言語はやってたんだろ

まあ、がんばってくれ
俺もゲーム作ってるからソースは参考にさせてもらうよ

433:名前は開発中のものです。
08/01/26 15:37:30 qYaFn144
c用の構造体は継承しちゃダメだよ
publicになっちゃうし…

434:名前は開発中のものです。
08/01/26 18:12:33 e3cqRtGD
small関数は別の名前に変えて欲しいところではある。

435:名前は開発中のものです。
08/01/26 19:33:43 dThAsdf4
MFCやWTLのCRectとかふつーにRECT派生してるよ。
まーそもそもAPIの薄いラッパーなんだが。

436:名前は開発中のものです。
08/01/26 21:17:54 qYaFn144
>>435
で?
CRectと同じように自由に中身いじれていいと?
どう考えてもhas関係のほうがいいだろ

437:名前は開発中のものです。
08/01/26 22:39:29 dThAsdf4
用途によると

438:名前は開発中のものです。
08/01/27 03:49:56 rwExEoOD
>>437
>>427を読んでもまだ言うかww

439:名前は開発中のものです。
08/01/27 14:29:06 T94kIYTo
>>1は当然リファクタリング中なんだよな?
こんな状態で新機能つけられても失笑をかうだけだぞ

440:名前は開発中のものです。
08/01/27 14:35:04 2lUOmqYr
リファクタリングなんか実装終わってからやればいいじゃんか


441:名前は開発中のものです。
08/01/27 17:26:00 bil4rrw2
1は明らかに本業

442:1
08/01/28 09:42:14 efejqwIm
>>429
実は、警告が一切でません。

たとえば
×
bool test(int a){
retun a;
}


bool test(int a){
if(a){return true;
}else{retun false;}
}

とやらないと警告がでるってことですか?
それとも他の問題?

あとsmall関数に関してはreturnSmall関数に名前を変えます。
衝突しやすい名前は避けるべきでしたね。すみませんでした。

>>431
まさしく僕の状況と同じですね、ありがとうございます。
参考にしてやってみます。

アクセス権についてはprotectedにすれば大丈夫?
でも、最悪publicになっても仕方ないと思うことにします。

443:名前は開発中のものです。
08/01/28 11:51:19 Fsa5EfdA
>>442
まあ、普通はboolをintに変換すると警告が出る。
C言語ではしょうがないが、intとboolは本来違う型だから。
BCCでは警告出ないのか……。
BCCは警告がVC++より多く出るのでデバッグしやすいと思っていたのだが。
最近のVC++が賢くなったのかも知れん。

ちなみに、このソースなら
bool test(int a)
{
  return a != 0;
}
とやったほうがいいぞ。
Javaだとifにはbool型しか書けないから、このようにする必要がある。

アクセス権は正直難しいな。
無理やりprivateにしても、アクセサを作るのは面倒だし。
最小限の関数がアクセスできるように設定するのが理想。
継承してオーバーライドしたメンバ関数が参照する変数ならprotected。
そうでなければprivateが正解。
publicは構造体専用のような気がする。構造体のような基本クラスならあり。

444:名前は開発中のものです。
08/01/28 12:17:32 DJpHQP7Z
int から bool への変換で警告はないだろ。
0が偽で非0が真なんだから、警告の出しようがない気がするが。
VC++ が過剰なだけでは?

return a != 0;
としたほうが良いってのは同意だけど。でも Java は別に関係ないな。

445:名前は開発中のものです。
08/01/28 18:46:30 DSI82zKh
コンパイラだけ見ればVCのほうが標準準拠度がまし

446:名前は開発中のものです。
08/01/28 22:03:00 qDZhZR+9
intをboolに変換したらintに再変換できない。
情報が失われているから警告出してもよさそうなのだが。
しかし手元のg++でコンパイルしてみたが警告出ないな。

447:名前は開発中のものです。
08/01/29 01:30:19 M4FlFQH0
世界ランク14位おめw
URLリンク(2chcity.myminicity.com)

ランク   国名      街             人口  (前日比)  前日
--- 1   US1      LUELand         326354 (+211)   326143
--- 2   US2      GoonTown        179482 (+711)   .178771
--- 3   Germany1  .isnichwahr.de       119091 (-654)   119745
--- 4   US3      CreateMyCity Forum  .87380  (+1982)   85398
--- 5   Poland1    #debian.pl         79594  (+1043)   .78551
--- 6   Germany2  upOTia             52443  (+399)    52044
--- 7   France1    Reze'Les Nantes     .41960  (+246)    41714
--- 8   Canada1   J-C Satanas & CO   .40995  (+721)    40274
--- 9   US4      retromundi        .40604  (+788)    39816
--- 10  France2    FanaZ           .39902  .(+1268)   38634
2↑ 11  Germany3   deluxebits         38770  .(+3199)   35571
1↓ 12  US5      .isnichwahr.at        .38234  (+78)    38143
1↓ 13  France3    gravure-news       .37204  .(+765)    36439
2↑ 14  Japan1     2ch_city          35637  .(+1970)   33667
1↓ 15  Spain1     Media-Vida         .35205  .(+686)    34519
1↓ 16  France4    Sguy            .35083  .(+1456)   33626
2↓ 17  Ireland1    .prapikilty          .35067  .(+871)    34196
--- 18  Spain2     benidaver         .34505  .(+914)    33591
--- 19  Germany4   directupload       ..32490  .(+82)    .32408
-↑ 20  Slovakia1    Legionar City       32056

448:1
08/01/29 10:11:54 owOBTCKE
>>349
今中途半端に新機能付けてる所なので、一段落したらリファクタリングしようと思ってます。
VCに移行する事も考えてます。
せっかく見てくれる人がいるんだから、殆ど使われてないBCCよりアドバイスも受けやすそうだし。

はやくアク禁とけないかなぁ…

449:1
08/01/31 08:17:54 gs4vtOjg
VC++ 2005をインスコして、コンパイルしてみたものの
吐き出されたエラーの量に愕然…。
しかも見たことないエラーだから対処法がわかんないOrz

とりあえず、このプロジェクトは最後までBCCで行ったほうがよさそうだ。
VCは次のプロジェクトでつかってみることにするよ。
いや、エディター部分で使ってみるか。

**************************************
人と物の区別をつけました。
町の中の入り口に立ってるのが【人】です。

URLリンク(sakuratan.ddo.jp)


450:名前は開発中のものです。
08/01/31 09:09:52 KWbgYovb
>>449
VC++2005っていうのはExpressEditionか?
それならWin32 SDKをインストールする必要があるぞ。

もし違うのなら、ユニコード関連のエラーじゃなかったか?
俺も最初そこではまったぞ。
VC++2005以降ではデフォルトのプロジェクト設定は
ユニコード関数になってる(当然98/Meでは実行不可)。

多分今まではANSIライブラリで開発していただろうから、
プロジェクトー>プロパティー>構成プロパティ
ー>全般ー>プロジェクトの規定値ー>文字セット
を「マルチバイト文字セットを利用する」と設定してみたらどうだ。
関数でセキュリティ警告がでたらググって消すといい
(あまり良い対処法ではないが)。
意外とVC++も面倒なんだよな。
インテリセンスは便利なんだが、そっちはVC#のほうが進化してるし。

451:名前は開発中のものです。
08/01/31 10:33:31 g4vS4NUg
windowsのAPI直接呼んでなければplatformSDKは不要
>>1のソース見てないから使ってるかは知らんが…

452:名前は開発中のものです。
08/01/31 10:43:18 9v/0NHUq
>>451
Dx_Lib使ってるなら必要だったような希ガス

453:名前は開発中のものです。
08/01/31 13:05:33 g4vS4NUg
>>452
それはおかしい
DX_libがWinAPI用のlibファイルとリンクしてないことになる
バイナリで提供されているということは、WinAPI用のlibはリンク済みなはず

454:名前は開発中のものです。
08/01/31 14:16:08 a5CfO9IL
DXLIB配布元の説明くらい読め
PlatformSDKは必須

455:名前は開発中のものです。
08/01/31 15:42:20 ZxMw62D0
必須て・・・
dll版も配布されているので可能だけど

456:名前は開発中のものです。
08/01/31 15:53:29 a5CfO9IL
ライブラリ群の話しじゃないよ
ヘッダはどうすんのよ
windows.hとか最初に読んでるし

まさかBCCの使えとか言ってる?

457:名前は開発中のものです。
08/01/31 15:57:23 ZxMw62D0
>>456
つれたwww
ライブラリ側のビルド時に依存してるだけだから、コメントアウトして問題ない。

implibとかdumpbin等等の細かいツールいくつかと、元のdxlib.hを加工すればいける
dll作成経験が恐らく無い>>1には大変かもね

458:名前は開発中のものです。
08/01/31 16:02:19 a5CfO9IL
加工かよ
じゃあ
WIN32ライブラリリンクしてるとこも加工な
がんばってくれww

459:名前は開発中のものです。
08/01/31 16:03:26 ZxMw62D0
>WIN32ライブラリリンクしてるとこも加工な
お前本当にDLL作ったことないのな・・・

単体のexeとほぼ同じ構造になってる
この意味がわかるか?

460:名前は開発中のものです。
08/01/31 16:20:07 a5CfO9IL
よく読め
俺はお前の言った
ヘッダの修正の話しをしている

それからdll版ってなんだ?
悪いが見たこともない
win32リンクされてるdll版でも配布されてんの?

461:名前は開発中のものです。
08/01/31 16:26:06 ZxMw62D0
>よく読め
>俺はお前の言った
>ヘッダの修正の話しをしている
やっぱりお前わかってないってdll作ったこと無いなら素直に質問すればいい

>それからdll版ってなんだ?
C#版アーカイブに入っている。
C#で開発する際には、同梱の.NETのクラスライブラリを使ってアクセスするというだけなので、
dxlib.dll自身はネイティブ。

462:名前は開発中のものです。
08/01/31 16:36:15 a5CfO9IL
お?
あった

納得
つかC#かよ!!
というツッコミは辞めておく

勉強になったわ
サンキュー

463:名前は開発中のものです。
08/01/31 17:58:32 ad/sWf4T
>つかC#かよ!!
>というツッコミは辞めておく

いや、そこはつっこめよw

464:名前は開発中のものです。
08/01/31 18:17:56 ZxMw62D0
>463
>C#で開発する際には、同梱の.NETのクラスライブラリを使ってアクセスするというだけなので、
>dxlib.dll自身はネイティブ。

465:名前は開発中のものです。
08/01/31 18:51:00 ad/sWf4T
1の開発環境はC#なのか?w


466:名前は開発中のものです。
08/01/31 18:54:57 ZxMw62D0
>>465
だから、dxlib.dllはネイティブだと何度(ry

467:名前は開発中のものです。
08/01/31 22:23:51 Qxg+Khni
>>452-466
お前らかっこ悪りぃwwww

468:名前は開発中のものです。
08/02/01 19:01:44 eYKdS8Iu
2008EEならPSDK付いてるだろ
同じ無料だし軽くなってるし

469:名前は開発中のものです。
08/02/01 19:19:54 tyk5s2hE
俺が初めにやったのはlibがRelease用なのにdebugでビルドしようとしたミスだ。

470:名前は開発中のものです。
08/02/02 09:02:14 IBv7+ZuZ
>>449
>吐き出されたエラーの量に愕然…。
>しかも見たことないエラーだから対処法がわかんないOrz

たぶん次プロジェクトで使おうとしても同じ部分でつまづくから
開発の合間に少しずつでいいから解決してみれ
オレもこれを VC++2005 でビルドできるようにするまでに
色々な部分をイジったから
分かんねーことがあったら全部ここで聞いてみー

あと、VC++2005 がアホだからかもしれんけど
BattleCommands クラスの giveControl メソッド内に
goto Spell;
があるんだが、Useable.h の Spellクラスと混同されてるみたいで
エラーになっている

Field.cpp の380行目で
構文エラー : ';' が '}' の前にありません
とか出てくるけど、
それ以前に Field クラスの iventProcess メソッドは
近いうちに何とかしといた方が良さそうだな

471:名前は開発中のものです。
08/02/02 14:00:18 O0xDaWr+
gotoのラベルは全て大文字が基本だね
エラー処理以外で使うべきではないが…

472:名前は開発中のものです。
08/02/02 17:38:17 I9mkDQj0
4819と4996の警告を無視するようにオプション付けると少し幸せになるかもしれん。

VC++コンパイラが文字コードを知らないバグはゲイツも認識しているらしいが修正は次期リリースを待て、
とのことだったような気がしたが、ソースは無い。

というわけで、文字コード警告は無視。
atoiは時代遅れ、という警告も無視。

無視するのはいいが、全角文字みたいにマジで認識できない文字が入っていたとしても警告出ないので注意な。

ん?
それだと警告じゃなくてエラーがちゃんと出るやもしれんが…。

どうでもいいが、コンパイラが文字コードを判別できないってアホすぎるだろ。

473:名前は開発中のものです。
08/02/02 17:39:12 I9mkDQj0
おっとsage忘れたごめんよ。

474:1
08/02/03 01:37:14 hMoICJCS
みんなありがとう ><
もうちょっとVCがんばってみるわ。
ちなみに、お察しの通り2005 Express Editionです。
gotoのラベルの文字衝突なんか 自力じゃ絶対わかんないって Orz
壁にぶつかったら質問しに来るね。
ほんとありがと。

475:名前は開発中のものです。
08/02/03 07:00:58 NH1+l1Mk
Standard Editionの俺の足元にも及ばないぜ

476:名前は開発中のものです。
08/02/03 13:23:59 FIiEId7l
>>474
2008でてるのに・・・

477:1
08/02/04 07:07:12 RaDIAkOA
2008か…
ダウソしてみる…


478:名前は開発中のものです。
08/02/04 12:10:13 Cc7CMG8W
>>477
俺はVisual C++ 2008 Express Editionを使っている。
使用頻度は高くないが……。
Visual C++ 2005 Express Editionと違って、
設定しなくてもWin32プログラミングが出来るのが強みだ。

479:名前は開発中のものです。
08/02/04 20:36:01 RaDIAkOA
2008ダウソしたらVC++9.0 って書いてあったけど、 Vc++6.0 の2005と どっちのほうが使ってる人多い?
それともどっちでも関係ない?
もしくは6.0で作っておけば9.0ならコンパイル通る?

480:名前は開発中のものです。
08/02/04 20:38:55 teV1oW9H
VC2005は8.0だよ

481:1
08/02/04 23:04:12 RaDIAkOA
とりあえず2008をダウソして使ってみたんですが、
DxLibのHPのガイドにそって設定を終わらせて、白い点を表示させるだけのプログラムは正常に動きました。
が、肝心のDQもどきのコンパイルは通らなかったです。
エラーメッセージはこんな感じです。

------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------
コンパイルしています...
CommandBattle.cpp
リンクしています...
.\Debug\BattleField.obj : fatal error LNK1107: ファイルが無効であるか、または壊れています: 0x23817 を読み取れません。
ビルドログは "file://c:\Documents and Settings\はかせ\My Documents\Visual Studio 2008\Projects\test\Debug\BuildLog.htm" に保存されました。
test - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

いろいろググって見たところ、リンカが上手く動いてないっぽい?


482:名前は開発中のものです。
08/02/04 23:22:27 PaK1bp7B
VisualC++用 のライブラリ使ってる?


483:名前は開発中のものです。
08/02/05 01:30:29 YbsfZF5u
>>482
ちゃんとVC用のを使ってます><
サンプルは一応動くんですよねぇ…。

ファイルの追加のやり方が間違ってる?

484:名前は開発中のものです。
08/02/05 01:54:57 JnBm9OcX
>>1には悪いけどはかせでワロタ

485:名前は開発中のものです。
08/02/05 01:57:31 c8iqtCfM
>>483
↓これはもう試した?

プロジェクトのプロパティから、構成→全般
文字セットの欄 → 「マルチバイト文字セットを使用する」に変更

486:名前は開発中のものです。
08/02/05 12:53:15 2IEJhn/E
>>483
リンク時のエラーということは文字セットの問題じゃないな。
Releaseモードでコンパイルしてみたらどうだ。
確か、俺はDebugモードではライブラリが入ってなくて
実行時にエラーになった覚えがある。
Releaseモードだとデバッガが使えなくなるのが難点だが。

あと、481のログは全部のソースファイルをビルドしたやつか?
ソースファイルが1つのはずはないが……。

>ファイルの追加のやり方が間違ってる?
どのように追加したのか詳しく説明してくれ。

487:名前は開発中のものです。
08/02/05 18:16:38 Ehp9HBzC
>>485
それ2008からなくなったよ

488:名前は開発中のものです。
08/02/05 18:32:15 tL3mZ0gl
>>487
あるじゃねーかww

釣られてしまった

489:名前は開発中のものです。
08/02/05 21:36:16 YoGlW1vl
流れ無視で書くけど致命的なエラーだからBattleField.objってのに
単純に出力されてないとかロックがかかっててアクセスできないとか
リンカが想定してるobjではないとかそんな感じだとおも
つーかLNK1107もちゃんとヘルプで確認しろよ

490:1
08/02/06 09:36:50 q7r4U2fq
みんなありがとう
体調不良で早く寝て、朝起きて出かける前に少しいじって、出先から携帯カキコ。
LNK1107のエラーはBCCでコンパイルしたobjファイルを削除してからビルドしたら解決した。
>>489の言うとおりヘルプ見たら解決できた。
ググるだけで、ヘルプ見るって考えが無かったよ orz

だけど、また違うエラーがでてきた。
家に帰ってからじっくりやってみる。

491:1
08/02/07 08:19:47 +l6ry8aS
Useable.obj : error LNK2005:
"public: static char * global::c" (?c@global@@2PADA) は既に BattleField.obj で定義されています。
C:\Documents and Settings\はかせ\My Documents\Visual Studio 2008\Projects\test\Debug\test.exe :
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。

現状のエラーは上の感じです。LNK2005が205箇所でてます。
エラー内容はヘッダを複数回重複して読み込んでる、ってことみたいなんですが、
#ifndef _CHARACTER_H_
#define _CHARACTER_H_

本体

#endif

とやって回避したつもりでしたが、できてない様子。
ヘルプを見ると
ヘッダに
extern BOOL MyBool;
cppソースに
MyBool = false;
と記述しろ、と書いてありましたが、記入すると

error C2146: 構文エラー : ';' が、識別子 'MyBool' の前に必要です。
とエラーが出ます。

現状報告でした。



492:名前は開発中のものです。
08/02/07 08:37:14 XCIeOzX/
#ifdef _MSC_VER
#define pragma once
#endif /* _MSC_VER */

ヘッダの重複を避けるなら先頭に↑とでも書いておけば。

493:名前は開発中のものです。
08/02/07 08:37:58 XCIeOzX/
#pragma once

だったorz

494:名前は開発中のものです。
08/02/07 11:11:53 4ZyDT5RJ
>>491
> cppソースに
> MyBool = false;
> と記述しろ、と書いてありましたが、

cppの方でヘッダインクルードしてる?
ってか、ソース晒したほうが早いような

495:名前は開発中のものです。
08/02/07 12:04:04 QgLjGbkn
>エラー内容はヘッダを複数回重複して読み込んでる、ってことみたいなんですが、
>#ifndef _CHARACTER_H_
>#define _CHARACTER_H_
>
>本体
>
>#endif
>
>とやって回避したつもりでしたが、できてない様子。
これ(インクルードガードという)は全部のヘッダにやる必要があるぞ。
面倒だったら大抵のコンパイラが対応している
#pragma once
でも良い。
ヘッダファイルにグローバル変数の定義とか
記述していると重複するのでこんなエラーが出る。

>>491
> cppソースに
> MyBool = false;
> と記述しろ、と書いてありましたが、記入すると
これはBOOL MyBool = false;
の間違いじゃないか?
多分MyBoolの実体をcppソースに定義する必要があるはず。

>error C2146: 構文エラー : ';' が、識別子 'MyBool' の前に必要です。
>とエラーが出ます。
MyBool = false;
の前には何がある?
多分読み込んでいるヘッダファイルの中身がおかしい。
このエラーだと;の抜けか?

496:名前は開発中のものです。
08/02/07 13:24:18 /8kqxVw7
BOOLのtypedefしたヘッダ読んでないんだろうよ
あとBOOLはfalseじゃなくFALSEだな

497:名前は開発中のものです。
08/02/07 21:59:20 tz5rxEMj
そういやー、Usable.h の
static int amount;
static Item *itemList;
に対する
int ItemList::amount = 0;
Item * ItemList::itemList = NULL;
の部分は、上のと似たような理由でコメントアウトしたような気がするなー
そもそも静的変数って 0 で自動的に初期化されるんだっけか?

498:1
08/02/07 23:31:34 +l6ry8aS
コンパイルとおったぁぁぁああああああああああああああああ!

>>491のエラーの原因は
ヘッダファイルで関数の中身を書いてたからみたいです。
たとえば
//* const.h
class global{
 public:
  static char c[64];
  static std::string msg;
};
char * global::c = 0;
std::string global::msg = "";
はダメで


//* const.h
class global{
 public:
  static char c[64];
  static std::string msg;
};

//* const.cpp
char * global::c = 0;
std::string global::msg = "";

と、ファイルを分ければおk。
…仕様なのかな?

ろだの調子が悪いみたいなので、あとでファイルあげます。
みんな本当にありがとう T◇T

499:名前は開発中のものです。
08/02/08 00:51:30 8VOzPRyE
>>498
静的メンバ変数はグローバル変数と似たような扱いになる。

common.hにてグローバル変数g_varが存在し、a.cpp, b.cppがそれぞれincludeしているとする。
a.cppがコンパイルされる→a.objにg_varが存在する
b.cppがコンパイルされる→b.objにg_varが存在する
最終的にリンクするときにg_varがバッティングする。

500:名前は開発中のものです。
08/02/08 01:11:45 MoDyMZB7
某ランドでは動くのにね

501:名前は開発中のものです。
08/02/08 11:48:47 sAmmpMO4
>>498
> //* const.h
> class global{
>  public:
>   static char c[64];
>   static std::string msg;
> };
>
> //* const.cpp
> char * global::c = 0;
> std::string global::msg = "";
こうではなくて、こちらが正しい。

//* const.h
class global{
 public:
  static char c[64];
  static std::string msg;
};
extern char * global::c;
extern std::string global::msg;

//* const.cpp
char * global::c = 0;
std::string global::msg = "";

つまり、ヘッダファイルに記述するのは
変数や関数、クラスの宣言であって、定義ではない。
これはBorland C++でも問題が出たと思うぞ。
多分Borland C++でコンパイルした時は複数のcppファイルで
ヘッダファイルをインクルードしていなかったから問題が起こらなかったのだろう。

502:名前は開発中のものです。
08/02/08 12:50:49 l8JQSvGp
>>501
デタラメ書くなよ
コンパイルできないぞ

あと配列をポインタに変換してexternさせると長さ失うからお勧めしない

503:501
08/02/08 13:15:21 sAmmpMO4
>>502
すまん、間違えた。
クラスのstaticメンバだったんだな。
普通のグローバル変数と勘違いしていた。
クラス自体が宣言だ。
> extern char * global::c;
> extern std::string global::msg;
これはいらない。501で言ったことは忘れてくれ。

あと、確かに>>502の言うように
//* const.cpp
char global::c[64];
としたほうがいいな。

それで気づいたのだが、
char * global::c = 0;
はバグだな……。
ここで配列の初期化はできないぞ。
しかもポインタで代入してるし……。
>>1にはコンストラクタを使えといっておく。

504:名前は開発中のものです。
08/02/08 22:54:29 1LutvMl1
ぼ、ぼ、ぼくも、C++でゲーム作るんだお。
すーぱーマリおだお。
URLリンク(members2.tsukaeru.net)

さん、をつけて、ねっ。はずかしがりや、さんっ。
ぼ、ぼ、ぼくは、言語にふりまわされないんだからっ。えっへん、だお。
なんかー、言語名を冠につけるってはずかしいお。きゃっ。
すれちがっている。ミーンがすれちがっている。しゅーるだお。
ぼくね、IQ300なんだおって細君にいったら、絶対30だからっ!って言われたの。
1回転して、30になっちゃたんだね。って言ったら、ほんとに30だねって感心されたお。ぶぃっ!

なにがいいたいかってーと、まぁ、言語に振り回されんなや、ゲームなんて、たかだか、数値と画面を
更新してるだけのもんだで。まじでそんだけ。ぷっ。だよな。むずかしいことなんて、ひとつもないぜ。
まぁ、頑張れや。ぼ、ぼくは、いま、がんばれ屋さんです。がんばれ、1。
あんまりにも言語に振り回されている様が、恥ずかしかったので、まぁ、書き込んでしまた。

ぼくのオーバードライアブ(波紋)が、伝わっただろうか。夕陽のオレンジのオーバードライアブ(覚醒の波紋(あの裏側が目覚める!))

505:名前は開発中のものです。
08/02/09 00:26:46 41azRV47
C言語ぐらいわかってからゲーム作れよw

URLリンク(www.ascii.co.jp)
オススメ

506:名前は開発中のものです。
08/02/09 00:35:32 ucOS0Odn
スレリンク(gamedev板)
ここのオガワンってヤツだろ

507:名前は開発中のものです。
08/02/09 02:08:54 uWdwi6vy
ホームページに自分の画像を載せてるけどナルシストなのかな?

URLリンク(members2.tsukaeru.net)

508:名前は開発中のものです。
08/02/09 02:17:17 OEsnMtz3
>>504
あまりにも酷いソースでお茶噴いたww

509:名前は開発中のものです。
08/02/09 21:35:27 vKTa7a8F
>>504
宣言わろた

510:名前は開発中のものです。
08/02/10 00:36:09 Ze9YCxYS
>>504
> int TIME[3]; //基本的に、通番の変数は1番から使う。0番は無視。
クソワロタww


511:名前は開発中のものです。
08/02/10 07:51:48 DQWHtX5v
using namespace std; //?

512:1
08/02/11 00:04:10 vFv6OLzk
ろだの調子が悪いんじゃなくて、サイズオーバーでした Orz
VCに変えたとたんいきなり5倍くらいサイズが増えたみたいでびっくり。

コンパイル事態は通ったものの、会話するとエラーで落ちる。
どうやらhakase.hのStringクラスが悪さしてるみたいだけど、まだ原因の特定には至ってません。

IDEに慣れるまで少し時間はかかりそうだけど
とりあえずデバッグ機能は使いこなせるようになりたいな。

URLリンク(sakurachan.dip.jp)

513:名前は開発中のものです。
08/02/11 02:35:47 vFv6OLzk
あとなんか良く分からなくなってきたので質問なんですが

const.h
class global{
  public:
   static char c[64]; //これが宣言
};

const.cpp
char global::c[64] = ""; //これが定義

でいいんですよね?
ちなみにこのクラスはexternを知らなかったので
無理やりグローバル変数として使ってた。
グローバル変数って言っても、宣言無しで使いまわしてなるだけメモリを使わないように、って用途ですけど。
コンストラクタは一回も呼び出されないので、cppで定義しました。
もしクラスを生成するなら
const.cpp
char global::c[64];
global::global(){
 c="";
}
でいいのかな?
でもコンストラクタが呼び出されるたびに初期化されちゃう?




514:名前は開発中のものです。
08/02/11 04:10:20 pgtIh2EL
文字列と文字は違うからどちらもコンパイルできないよ

515:名前は開発中のものです。
08/02/11 08:30:36 aDsF8YDL
>>512
たぶん 拡張子 .ncb ってヤツが一番巨大だと思うんだけど、
.ncb は各々の環境で勝手に作られるから、配布時は不要っすね、
配布用からは消して圧縮すればいいよー。

あと、すごい昔から気になってたけど
はかせって何よ?

516:名前は開発中のものです。
08/02/11 14:28:47 UBlSMgHv
俺もそれが気になる。すげー気になるw>はかせ

517:名前は開発中のものです。
08/02/11 14:37:13 dALXccIV
>>481を見るとユーザ名みたいだけど
1の名前なのかな

518:名前は開発中のものです。
08/02/11 14:50:42 G+Qy0YvV
これからは>>1をはかせと呼ばせていただきます

519:名前は開発中のものです。
08/02/11 20:01:42 o0lcrIeV
NCBはインテリセンスのキーワードデータベースだな
STL使うと相当膨れる。

520:名前は開発中のものです。
08/02/11 22:31:24 ummcWhTi
余計なファイルを作らせない設定ってないんですか?

521:名前は開発中のものです。
08/02/11 23:57:52 HhQuAIPA
インテリ切れば?

522:1
08/02/12 00:22:15 tLRoXqiP
はかせ は僕のあだ名です。
もっとも今もそうやって呼ぶ人はいなくなったけど、気に入ってるから使ってます。かたわれも同様。
本名ってのもアレだし。
>>512のエラーですがデストラクタで
delete [] restr;
をする時にエラーになってるっぽい。
危険だけどコメントアウトすると動くんだけどなんで?
コンストラクタはそれぞれ引数に char* FILE* std::string を取る三種類しかなくて
それぞれで char str[] と char restr[] を new してて
strとrestrの配列は同じ長さをとってあるはずなのになんで?

でも、まったく違うところが原因かも。

523:名前は開発中のものです。
08/02/12 00:28:40 IKtCZVK3
>>520

ツール(&T)→オプション(&O)→テキストエディタ→C/C++→全般→入力候補
自動メンバ表示(&M) [OFF]
パラメータヒント [OFF]
→OK

524:はかせ
08/02/12 01:22:27 tLRoXqiP
バグの原因がわかりました。
Stringクラスを作る時の引数が、空の文字列だとエラーになるみたいです。
とりあえずMsgCmd::Draw() 側ではじくようにしたんですが
本来はStringの方で何らかの処理をすべきですよね。

さて、どうやって処理するのが一番いいんだろう?
ゆっくり考えてみます。
さて、ようやく前に進めそうなのでモチベーションあがってきました!

↓とりあえず動くようにしたバージョン↓
URLリンク(sakuratan.ddo.jp)


525:名前は開発中のものです。
08/02/12 04:46:08 XWB4jY1F
おー、久々にビルドしてみたら、スゴい進化してるではないか
ルーラとかまで実装されてんのな

画面上のウィンドウを生成するところは
装備ウィンドウやステータスウィンドウごとに力技で作ってるように見えるけど
ウィンドウ生成部分は、もっと部品化していいんじゃないっすかね?
基本的に # とか % で長方形を作ってるだけっしょ?
難しいんかな?

526:名前は開発中のものです。
08/02/12 18:37:02 oGlnsN82
解凍した中のDebugフォルダの中のtest.exeクリックしたら、
「デバッグ」
「GameData\Useable\SpellList.csvが開けませんでした。」
が出て、プログラム終了してもプロセス残っててCPU100%になるんだけど、なんで?
これこっちでVC入れてコンパイルしないと実行ファイル試せないの?

527:名前は開発中のものです。
08/02/12 19:09:02 fyhPt8Zk
.\GameData\Useable\SpellList.csv
を用意してやれば

528:はかせ
08/02/13 11:01:51 husK91Sv
>>526
解凍したフォルダにdebugフォルダとGameDataフォルダがあると思います。
GameDataフォルダをdebugフォルダに入れてからtest.exeを起動するとできると思います。
プロセスが残ってる件は、これからやっつけます orz

529:はかせ
08/02/15 08:08:59 Vnl/Si0U
城などの入り口の位置を修正しました。
大きい扉を実装しました。
移動中に【e】を押すとエンカウントを無効にできます。

URLリンク(sakuratan.ddo.jp)

岬の洞窟に入った時に二人目以降のグラがおかしいです。
原因は分かっているので、それを上手いこと修正したいと思います。

530:名前は開発中のものです。
08/02/15 09:04:54 5vT1hdTU
インテリoffってどこの馬鹿だよ…

531:名前は開発中のものです。
08/02/15 19:41:30 mWyYNOjz
本人が余計なものと認識しているんだから仕方ない。

532:名前は開発中のものです。
08/02/15 19:53:52 Rkucko5s
>>531
インテリ機能が邪魔なわけじゃなくて、.ncbを消したいだけなんだろ
バッチ書くとかビルドイベントいじるとかいくらでも方法はあるだろうに・・・

533:1
08/02/16 02:56:55 ArwSTL4u
ごめんなさい。インテリOffにした馬鹿です。
邪魔とかうざいとかそういうの以前に
nbcがなんなのか、インテリセンスが何なのかまだ理解してないので
その辺はご理解くださいませ。

がんばって勉強しなくちゃなー



534:1
08/02/16 03:58:26 ArwSTL4u
マップ切り替え時の二人目以降のキャラクタの描写をなんとかしました。
リレミトを使うと落ちるバグを修正しました。

URLリンク(sakuratan.ddo.jp)


まだVCになれない… Orz

535:名前は開発中のものです。
08/02/16 06:06:27 CcpxY//e
URLリンク(homepage1.nifty.com)
インテリセンスの機能はここに書いてある。
(C++の場合もうちょっとしょぼいけどw)

536:1
08/02/16 13:28:46 ArwSTL4u
>>535
ありがとうございます。
たしかにこれ切ったら馬鹿って言われるなー Orz

537:名前は開発中のものです。
08/02/16 21:32:02 CmBL2sVg
vsよりイクリプスの方がインテリ強くね?

538:名前は開発中のものです。
08/02/17 13:14:43 aHSAdthd
VCに比べてCDTがショボいのは定説
WindowsアプリでVS使わない奴は頭湧いてる

539:名前は開発中のものです。
08/02/17 14:23:07 Cg2VWlwZ
その辺の主張はム板でやればいいと思うよ

540:名前は開発中のものです。
08/02/17 17:20:33 rRXJwyg0
ム板にも持ち込まなくて結構。マ板でやれ。

541:名前は開発中のものです。
08/02/17 21:35:01 XOQbsCvL
補完使ってると馬鹿になるよ。

542:名前は開発中のものです。
08/02/18 00:28:07 BBbqDL5F
↑こういう奴に限ってコンパイル通らないソースをオープンソースのプロジェクトにコミットしたがるから困る

543:名前は開発中のものです。
08/02/18 00:36:07 08DD/JC7
有名な哲学者も文字なんか使うと脳が退化するとか言ってたからねw

544:名前は開発中のものです。
08/02/18 01:08:34 vUYQTiug
小説読まずに漫画ばかり見てると馬鹿になるとも言われてたなw

これについてだけは当たってなくもない気がするが

545:名前は開発中のものです。
08/02/18 01:14:50 UpTmLwcj
VCのインテリセンスはVBやVC#が神すぎるからしょぼく見えるんだよね

546:1
08/02/20 08:18:05 V7ld5O9y
現在新機能実装中なわけですが、作業が難航してます。
FieldMapのMapObj[i]をField.party->iventFlag[i]に対応させて表示/非表示を切り替えたかったのですが
FieldMapクラスで表示/非表示を切り替えさせようと思ったけど

check(PlayerParty *party)
として引数にポインタを取るか
あらかじめFieldMapクラスにポインタ変数を格納しておくか
PlayerPartyクラスをグローバル化してしまうか
悩んでます。
どっちにしてもFieldMapクラスにPlayerPartyクラスをヘッダを読み込ませないとだめですよね?


547:名前は開発中のものです。
08/02/20 10:01:13 eusdqHEV
iventじゃなくてeventにしたほうが

548:名前は開発中のものです。
08/02/20 18:18:28 a8QXZ2ge
いくらイージス艦のレーダーが凄いからって
戦時でもないのに常に最高の警戒レベルで巡航していることなんか有り得ないわけで…

549:名前は開発中のものです。
08/02/20 18:24:11 V7EDVY0P
そうは言ってもあれじゃ中国や朝鮮が船で攻めて来たら何もできずに沈められちゃうよ

550:名前は開発中のものです。
08/02/21 02:26:57 Wf5Zb2+X
漁船と衝突してイージス艦が沈んだら面白かったのにw

551:名前は開発中のものです。
08/02/21 04:48:12 vbUxjJ5P
最強の楯は殴るのにも最強でした

552:名前は開発中のものです。
08/02/21 07:03:01 R8XN2vkw
デュエル バスター ブリッツ

553:名前は開発中のものです。
08/02/21 20:21:58 fJ0DkPYJ
>>546
アクセサ書くってのはどうだい?
ソース見てないから最適解かどうかは知らんが。

554:名前は開発中のものです。
08/02/21 21:52:45 iy0K8pSX
class PlayerParty;
class FieldMap
{
 check(PlayerParty *party);
 いろいろ…
};

でいいんじゃないか。

555:名前は開発中のものです。
08/02/21 21:53:00 0C4L3kC+
マップオブジェクトの表示制御に必要なのは
パーティ情報じゃなくて、イベントの状態なんだから
わざわざパーティ情報の扱いを考慮するんじゃなくて
フィールドマップはイベント情報だけ受け取るべきじゃね?

そうでないと、
フィールドオブジェクトとパーティ情報の結合度が強くなり過ぎて
ちょっと気持ち悪い感じがする
(ドラクエだったら、パーティ情報 = フィールドの状態
 で構わないかもしれないけどね・・・)

556:1
08/02/21 23:28:46 9ZwlGJuJ
たしかに あんまり依存関係を強くしたくないのはありますね。
イメージ的にこうやってFieldクラスがFieldMapクラスとPlyartPartyクラスを見て仲介するようにしたかったのかも。

          Field class
    ┌───┴───┐
PlayerParty class      FieldMap class
                      │
                 MapObject class

ただしPlayerPartyクラスにイベントのフラグが入っていたため
FieldMapの中にあるMapObjectクラスから、何番のフラグがたっているかは見えない、っていうのが問題でした。

こうなると Fieldクラスで
if(PlayerParty.getIventFlag(FieldMap.MapObject.getEventFlag())){
 //以下普通に処理

みたいな感じに処理するふうになるのかな?


557:1
08/02/21 23:29:37 9ZwlGJuJ
あと
×
 ivent

 event

は、めっちゃ恥ずかしくて死にたくなった。


558:名前は開発中のものです。
08/02/22 00:45:22 /6yYYp4N
ええー

559:名前は開発中のものです。
08/02/22 12:19:02 gAchg6ey
>FieldMap.MapObject.getEventFlag()
POD型ではないのにpublicなメンバ変数があるのは変だと思う。
インスタンスの利用者が階層を深く掘るのが当たり前な実装はOOPじゃないし。
かといって、万能クラスを作るのもおかしい話だけど・・・
あとインスタンスがPascal記法ってどうなの?

とここまで書いてからソース読んでみた。
いくら擬似コードでも実態とかけ離れすぎだろww
publicになってないし、インスタンスは小文字始まりの名前になってるし・・・

むしろ気になったのは
・コンストラクタで初期化じゃなく代入をしてる
・あちこちにハードコーディングしてる
・継承しててもデストラクタがvirtualじゃない
・enumを使わず#define使ってる
・関数に対するコメントが無い(doxygenやxml code commentのような)
・ローカル変数にポインタか参照おけばいいのに"character[ci]->getDs()->"のような記述が沢山並んでいる
・あちこちで動的なメモリ確保を行っているにも関わらずスマートポインタを使っていない
・警告レベルが最大じゃない

こういうところ

560:名前は開発中のものです。
08/02/22 14:30:33 ik+aPlRF
>>559
まぁ、>>1はC++初心者のようだからな。
C++の標準記法を知らなくても不思議じゃない。

補足しておこう。
>・コンストラクタで初期化じゃなく代入をしてる
多分>>1は初期化リストを知らない。
初期化リストのほうが分かりやすいし、constな変数、参照は
これでしか初期化できない(代入できないため)。

>・継承しててもデストラクタがvirtualじゃない
デストラクタがvirtualじゃないと、
基底クラスのポインタに派生クラスのポインタを代入して
ポリモ-フィズムをしているとき、
オブジェクトを破棄するときに派生クラスのデストラクタが呼ばれない。

>・enumを使わず#define使ってる
#defineは時代遅れ。コンパイラが処理していないので。
できればenumやconstを使う。

>・ローカル変数にポインタか参照おけばいいのに"character[ci]->getDs()->"のような記述が沢山並んでいる
ローカル変数にポインタか参照を代入して、
hoge = character[ci]->getDs();
hoge->hoge();
のように呼び出したほうが読みやすい(し、関数を不必要に呼ばないので高速)
ということを言っている。

561:名前は開発中のものです。
08/02/22 14:33:59 ik+aPlRF
続き。
>・あちこちで動的なメモリ確保を行っているにも関わらずスマートポインタを使っていない
動的メモリ確保は解放し忘れてしまうので、
参照が無くなった時に自動的に解放してくれる
boost::smart_ptrのようなスマートポインタを使うのが基本。
標準のスマートポインタにはstd::auto_ptrがあるが、使い方が特殊でオススメしない。
使えるところなら、std::vectorを使うのも良い。

>・警告レベルが最大じゃない
警告を無視するのはバグの元。
むしろ、「もっと俺に警告をくれ!!」のような勢いで。

562:名前は開発中のものです。
08/02/22 20:29:49 zYdRz8UL
あんまり一気にダメ出ししちゃうと はかせタンが凹んじゃうから
週に1個ほど、ちょいダメ出しにしといてあげて
オレはそうしてる

まぁ、はかせタンの向上心なら幾らダメ出ししても学習しそうだけど

563:名前は開発中のものです。
08/02/22 20:38:44 HEZBKFdo
ダメ出しでも実力自慢じゃなくフォロー入ってるあたり良スレ

564:559
08/02/22 21:37:02 sRPpWiqL
ソースはそこそこ綺麗だったよ
このスレに載る疑似コードがいつもショボかったから、upされてるのも当然…と思ってたんで意外だった

>>562
この先原因不明のバグでモチベーションダウンさせるよりはいいかなと思った。
少し反省している。

565:1
08/02/22 22:55:08 OojD/ESp
みんなのヌクモリティで前がにじんで見えない…
みんなありがと

ダメだしが多いのは、へこまないのは嘘ですけど
消化しきるのに時間がかかるので、レスが遅くなっちゃって申し訳ない気持ちが強いです。Orz
ご飯食べてお風呂入って続きがんばります!

みんな ほんとに ありがとう!

追伸
またアク禁の食らいました。
なんでこんなに喰らうんだろう?
普通そんなもん?


566:名前は開発中のものです。
08/02/23 02:05:15 bnLD25M9
>>565
俺も最近くらった。一日でとけたけど。

567:名前は開発中のものです。
08/02/23 06:56:35 HSvKNA24
なんだ、DQIをつくってるのかと思ったらIIIか。
また大変なところを選んだなあ。

568:名前は開発中のものです。
08/02/23 08:37:01 N04xmAge
>>1 に影響されました
僕はDQIIをC#で作ろうと思います!

569:名前は開発中のものです。
08/02/23 12:16:38 OuVO6QWF
じゃ 俺はDQ4にするか

570:名前は開発中のものです。
08/02/23 12:57:51 x1Ouesp5
俺はMASMでFF11を作るぜ!!

571:名前は開発中のものです。
08/02/23 13:11:06 F+CAkEqg
じゃおれDQ1をC++で

572:名前は開発中のものです。
08/02/23 14:18:01 Oy3gPfcf
果たして何人生き残れるのか・・・

573:名前は開発中のものです。
08/02/23 14:39:52 CN8IHKwV
アセは死ねるだろw

574:名前は開発中のものです。
08/02/23 17:13:08 yJaKrN6D
FCのドラクエは殆どアセンブラだろうが…FF11と言う所に大物の器を感じるぜ。

575:名前は開発中のものです。
08/02/23 19:39:11 5sJEeE+q
俺は綾織で

576:名前は開発中のものです。
08/02/23 23:32:45 3EN2w25Y
C++から汗のソース作れるけどね。

577:名前は開発中のものです。
08/02/24 01:02:43 l0RmX92h
568です、2008は持ってないので、VS2005 C# Framework2.0でやります!
DirectDrawはとりあえず使わないで、やります
動くものが出来たら別スレを立て・・・るまでもないですね、
適当にうpしていきます

>>1さんに負けずにやっていきたいと思います

578:名前は開発中のものです。
08/02/24 03:56:21 nHWrFw/U
>>576
全然意味合いが異なるのに何故得意気になって言ってるんだ?
キモイヨー

579:名前は開発中のものです。
08/02/24 09:09:13 ATsuTWws
>>576
C++コンパイラの仕組みを理解して無いだろ。
作れないコンパイラがあったら教えて欲しいわ。

580:名前は開発中のものです。
08/02/24 09:55:26 lvcDUo5f
if(>>576)
{
 std::cout << "作れないコンパイラがないなら正しいだろ。" << std::endl;
}

581:名前は開発中のものです。
08/02/24 10:39:19 pf6g1kUn
ソース見たよ。
他の人が言うように、初心者にしては上出来。
動くとやっぱり感動するね。

>556
とりあえずそれがいいんじゃないかな。ベストな解かどうかわからないけど、
グローバルにするよりは確実にbetter。

全体に関していえるけど、変数のスコープをできるだけ狭くしたほうがいい。
理由はバグを減らすため。またデバッグを楽にするため。例えばある変数の値がおかしくなっていたとき、
スコープが狭いと調べる範囲が少なくてすむ。広いと大変。

なおローカル変数、非staticメンバ変数、staticメンパ変数、グローバル変数 の順にスコープが広くなる。
グローバル変数はよっぽどのことがなければ使わないこと。

class global{
public:
static std::string msg;
static char c[64];
};

これは使用している各クラスで定義できないの?

582:581
08/02/24 10:47:13 pf6g1kUn
あとデバッガはちゃんと使えてる?

以下のようにすると、VSでデバッグ時に画面下の「出力」欄に出力される。
要所要所で変数の値とかを出力すると楽だよ。

#ifdef _DEBUG // デバッグ時のみ出力
int value = 3;
char buf[128];
sprintf(buf, "値=%d\n", value);
OutputDebugString(buf); // デバッグ出力するWin32API
#endif

//出力欄
//値=3

583:581
08/02/24 10:54:51 pf6g1kUn
>これは使用している各クラスで定義できないの?

例えば以下の部分ではローカル変数で十分だよね。多分。

void BattleField::battleProcess()
{
global::msg = party->getMember(0)->getName();
global::msg += "たちは にげだした!";
coms.getMsgCmd()->setMsg(global::msg);
}

584:1
08/02/25 20:20:58 D9lkRrNk
土日は風邪で寝込んでました。
今日もこれから寝込むと思います。
目の前が見えなくなったのは涙じゃなくて熱の所為だったのかもしれません(ぁ

寝付けないときに少しずつ手をつけようと思ったんだけど
自分が何をやってるのかわからなくなってしまう感じで作業が進みませんでした。

一緒になにか作ってみるって名乗りを上げてくれた方、一緒にがんばりませう。
やっぱりライバルがいたほうがモチベーションあがるしね。

585:名前は開発中のものです。
08/02/25 23:38:57 sR23oxXi
>>584
お大事に!!

586:名前は開発中のものです。
08/02/25 23:57:44 8s3HJfM7
>>584
本当は、ロジックを真似した方が早いと思うんですが、
まったく同じじゃ意味がないですし、言語も違うことですから、
まずは C#でどれだけ出来るのか、ってことを意識しつつ、やっていこうかなと思ってます
物理層がやることって同じなんですけど、今は、FC DQII をプレイして、動きを調べています
主に、ビルダーとC#で、VC++はわかりませんが、よろしくお願いします

587:名前は開発中のものです。
08/02/26 02:39:50 4hK7dCf/
>>584
お体お大事に
僕も今年の初めごろインフルエンザにかかって数日寝込みましてね
体調がすぐれないときは難しいことを考えるとgdgdになるので
回復に努めたほうがいいと思う…

寝付けないときは僕はようつべやニコ動を見てましたね
最近はゲームのプレイ画面などをキャプチャしてる人も多くて
検索すると同人ゲームや自作ゲーム、制作講座、開発過程なども
ちらほらとアップロードされてるみたいです
手軽に見られてなかなか興味深いです

588:名前は開発中のものです。
08/02/26 14:11:57 aeOOlTFX
やばい、俺スレ違いすぎる・・・
二年間学校でcとjavaを習って中途半端に覚えて
RPG作ろうと思った俺が馬鹿だったぜ。
あとapiのサイト見てウィンドウの出し方とか
ちょっとづつ勉強してるが大半イミフだぜ。

589:名前は開発中のものです。
08/02/26 15:41:39 DQfrVq4A
プラットフォームAPI使うより、簡単なライブラリ探して作ったら?

590:名前は開発中のものです。
08/02/26 16:20:44 MEOj2U2m
>>589
ID:DQおめ

591:名前は開発中のものです。
08/02/26 20:10:21 DQfrVq4A
あり
記念に俺もDQ作るかなw

592:名前は開発中のものです。
08/02/26 22:07:55 HLcSYJXY
MDXあぼーんされたしGDI+だとBitBltすらないからなー。
XNAに逃げるか、DllImport連呼か、C++/CLIか。

593:名前は開発中のものです。
08/02/26 22:57:31 gUk7N6wJ
それでもまだ非C/C++の中では恵まれてるけどな
自分でラッパー書かなくてもSlimDX(非公式MDX)とかSDL.NETとか探せばいろいろあるし

594:オワンワン
08/02/26 23:02:50 CncrBCpj
ライバルがきましたよ。
ぼくはね、関数とかクラスとかポインタとか構造体とか
仮想関数とかローカル変数とかを一切使わないでゲームを作ります。
必要不可欠でないことをがんばっている1さんとは好対照ですね。
ま、さ、に、ライボー。
更新してないんでリンクは貼りませんが、進展したら貼りにきますよ。
よろしこっ。ぼく、おじさんだけど、、、なかよくしてね。ぶちゅー。
おれの、おれの屍をこえていけよ、わかうどよ。ふっふっふ。
「未来の人よ 僕を思い出してくれ 僕は 王者の滅びる時代に生きていた」
「未来の人よ 僕を崇めたたえよ 僕は あなたたちよりも未来の時代を生きていた」
だれだ!?
タキシードのロングハットのコケティッシュな、、、ぼく!?
「不可思議という点において、この世界の不可解という点において、みな平等ではないかね」
、、、
「形而上の話をしてるわけではありません。形而下において、、、ふふふ、
僕は何百年先を生きているんだろう!ふあははー」
、、、
「ぼくはぼくはぼくは、、いや、結果がすべてか、結果をだせてない僕は、
まだ、天才ではないか、、、」
、、、
「はぁ、遠いね、境地は遠いね。凡人とは違って僕には見えているが、遠い」


595:名前は開発中のものです。
08/02/26 23:22:32 oa0uM2zA
>>594ふむふむ、なるほど、ほほぉ~。それでそれで!?

596:名前は開発中のものです。
08/02/28 19:08:36 SwMCkkQw
いちはにげだした。
しかし(ry

597:1
08/02/29 00:27:49 PbvqMElj
まだ全部直ったわけじゃないけど報告age

とりあえずdefineはconstに直しました。
デストラクタも仮想関数に変えました。(なんか上手く動かないって悩んでたことがあったけどこれが原因だったのか?
コメントもこれからなるべくつけていきたいと思います。(全部つける前に心が折れそうです。
初期化リストも一箇所だけやってみました。
実はこれもっと先に知っておきたかったことだったかも。
引数無しのコンストラクタと引数ありのコンストラクタの二つ用意しなくちゃいけないって悩んでたんですよ。Orz
親クラスのコンストラクタも明示的に呼び出したいと思ってたし…。
ま、あとの祭りなんですが。 Orz

スマートポインタ、っていうかboostなんですが、
じつは<>の意味が分からなくて手をつけられなかったんですよ。
<>でぐぐるわけにもいかず途方にくれていたんですが
ようやくクラステンプレートと言うものだったことが判明。
コンテナクラスもなんとなくは理解できたのですが
今から組み込むのは結構大変そうだなぁ…
とりあえず多重deleteはNULL代入で回避できそうっていうのは分かりましたが、
del忘れは回避できないですよね。
でもハンドルの開放し忘れもおんなじような問題がおこるので、
ある程度は仕方がないのかも、と割り切ってます。(いや、ダメだろ

*****************************************************************
イベントアイテムを使ってイベントを起動できるようになりました。

アリアハンの右の女にゴールドオーブを使うとイベント起動します。

現状、はなす、とアイテム使用の両方同時に起動スイッチに指定することはできますが
起動方法によって起きるイベントを別々にすることができません。


…あ、警告レベル変え忘れてたOrz

598:名前は開発中のものです。
08/02/29 00:33:14 PbvqMElj
おまけにURLも貼り忘れた… Orz

シャワー浴びてくるOrz
p://sakuratan.ddo.jp/uploader/source/date72377.lzh

599:名前は開発中のものです。
08/02/29 00:40:35 cTbpZwm+
:p

600:名前は開発中のものです。
08/02/29 11:44:13 DrPXVtO6
むしろあれだけのコードをよくコメント無しでやってられたな。
今の俺はコメントだらけだよ

601:名前は開発中のものです。
08/02/29 12:28:22 sp+Hir2Y
まだ11月に作り始めたばかりだから
>>1の頭の中にコードが入っているのだろう。
ただ、これからプログラムはどんどん複雑になっていくので、
コメントを入れるようになったのは良かったと思う。

602:名前は開発中のものです。
08/02/29 14:36:59 jGuhamLn
自分のソース見てるとどうでもいいコメントが多くて困る

603:名前は開発中のものです。
08/02/29 16:14:12 l3/kMfiZ
MDXあぼーんなのか?
XNAはWinProcもフックできないし、
使い難くてしょうがないよな、、

604:名前は開発中のものです。
08/02/29 18:55:48 P7uRmJkm
>>603
MDX2.0はベータの段階で消滅済み。
MDX1.1のランタイムは残ってるけどサンプルはなくなった。

605:名前は開発中のものです。
08/03/01 00:45:34 w3ZGIR9q
>>603
SlimDX使え
つか流れ読まずにスレ違いって…

606:603
08/03/01 01:08:55 PBLPyAh9
スマソ、吊ってくる

607:1
08/03/05 00:07:57 XbOvO3YX
久しぶりのソースうpです。
URLリンク(sakuratan.ddo.jp)

*街から出ちゃうと入れないかも。
入り口に立っている女に「はなす」かゴールドオーブを「つかう」とイベントが起動します。
話したときとアイテムを使ったときでイベントを分岐できて
アイテムを使ったときにイベントフラグをオンにして
それに連動してイベントが消えるようになりました。

608:名前は開発中のものです。
08/03/05 19:39:27 /lpfwC1N
ここまで整理もせず手広く機能増やし続けられるのはある意味凄い

609:名前は開発中のものです。
08/03/05 22:09:51 L493nIER
>>1さんハァハァ

610:名前は開発中のものです。
08/03/06 00:31:36 RMi8Rb30
真似して作ってみたがタイトル表示まで出来たら秋田

611:名前は開発中のものです。
08/03/06 00:58:35 7dwVQ00B
>>610
DQ3のタイトル画面なら文字だけじゃねーかw

612:オワン
08/03/06 03:01:49 +3hA2EkN
報告忘れてました。更新しました。インデントがおかしいのは
VC++のせいです。
URLリンク(ogawapc.myhome.cx)

613:名前は開発中のものです。
08/03/06 07:41:01 cGcDTNaF
<code></code>で囲んで
タブをスペース四つに置換すれば正常に表示されるはずなんだが。
おめーがタブとスペースごちゃ混ぜで打ってるのが原因だ。

614:名前は開発中のものです。
08/03/06 07:53:07 cGcDTNaF
<pre class="code"></pre>のほうがいいか。

615:名前は開発中のものです。
08/03/06 15:15:17 eBnb1Mw9
>>612
本人かどうかは知らんがもうやめて
そんな糞コード真に受ける奴が増えたら世の中に良くない

616:名前は開発中のものです。
08/03/06 17:19:40 htNDRL9Y
VCカワイソス

617:1
08/03/07 00:57:17 rq1yy0In
整理はちょっとずつ… じゃダメですよね Orz
実装を進めていくうちにコメントつけたり、無駄なコードを減らしたりはしてるんですがまだまだです。
せっかく見てくれる人がいるんだからもっと見やすくしなくちゃいけないのは分かってるつもりなんですが
モチベーションと時間が… Orz

static なメンバ変数を初期化で分からないことがありまして。
関数の戻り値を初期値でセットしたいんですが

//DQI..hより
class VisualEffect{
  static int hBlendGraph;
(略)

//Effect.cppより
int VisualEffects::hBlendGraph = LoadBlendGraph("GameData/EffectData/BlendGraph.bmp");
(略)

これでコンパイルは通るけど、起動すると動きません。
なんか無限ループに入っちゃってるような雰囲気。
メイン関数で初期化してあげるべきでしょうか?
それとも他に方法があるのでしょうか?

*********************************************
レベルアップで呪文を覚えるようになりました。

URLリンク(sakuratan.ddo.jp)

警告レベルを最大にしたら警告いぱーい Orz
がんばって退治しなくちゃな。。。



618:1
08/03/07 02:08:23 rq1yy0In
上のstaticの問題、解決しました。
c++の問題ではなくDxLibの問題でした。
DxLib_Init()を呼び出す前にGetBlendGraph関数を呼び出せないみたいです。
とりあえずエフェクト関連のクラスを初期化する関数を作って、メイン関数でDxLib_Init()後に呼び出す事にします。

現状のバグですが、フィールドで普通のアイテムや呪文が使えません。
ホイミを使ってもルーラを使っても
しかし なにもおこらなかった
と表示されます。

原因は分かったので直しておきます。

619:名前は開発中のものです。
08/03/07 02:11:20 QhGOdilr
その hBlendGraph は main 関数よりも前の段階で初期化が行われるから
DX ライブラリの初期化より前に LoadBlendGraph が呼ばれることになる。
しかもどの翻訳単位から初期化されるかは決まってない。
準備が整う前に関数を呼び出したりしたら、上手く動きそうも無い。

基本的に static を多用するのは良くないよ。C++の本読んで勉強しる。。

620:255
08/03/07 07:10:26 jWW/3mmy
>>617
そういう場合には、デザインパターンのシングルトンパターンってのが使える。
具体的にいうと、
class VisualEffect{
  static int hBlendGraph = NULL;
(略)
としておいて
static int VisualEffects::GetBlendGraph(){
  if(hBlendGraph == NULL){
    hBlendGraph = LoadBlendGraph("GameData/EffectData/BlendGraph.bmp");
  }
  return hBlendGraph;
}

とすれば、VisualEffects::GetBlendGraph()を呼び出した時点で
1回だけ初期化が行われる。

でもゲームだと、1回だけとはいえメインループで重い処理
をやっちゃうとアレなので初期化関数でやるのが正解だと思う。

621:名前は開発中のものです。
08/03/07 10:56:57 1WoBL1I/
>>620
static constじゃないのにクラス定義で初期化は不可能。
ポインタでないのにNULL判定をするのはおかしい(cppではNULL=0)。

そもそもこれをシングルトンパターンと呼ぶのが間違いな気がする

622:名前は開発中のものです。
08/03/07 12:38:13 QLw1djJn
シングルトンってコンストラクタをprivateにしたやつでインスタンスが1つなのが保証されてるってやつじゃなく?
1つだけに限定されるから、static要素にする必要もないわけだおね。

623:620
08/03/07 19:49:28 jWW/3mmy
>>static constじゃないのにクラス定義で初期化は不可能。
そうでした。Javaとごっちゃになってしまいました…orz

>>ポインタでないのにNULL判定をするのはおかしい(cppではNULL=0)。
ハンドルもNULL判定するよね?if(m_hWnd == NULL)とか

つか、LoadBlendGraphがNULL返したらどうするつもりなんだ、俺。
ごめん、このコード忘れて。

>>622
元がstaticだったからそのままにした。深く考えてなかった。忘れて。

624:名前は開発中のものです。
08/03/07 21:53:13 hQbuz1ma
>621
>static constじゃないのにクラス定義で初期化は不可能。
constは関係ねーだろ。
静的オブジェクトが生成されるタイミングほんとにわかってんのかよ。

625:1
08/03/08 00:44:08 D+4Cnx/D
言いたいことはなんとなく伝わってきたので大丈夫です。
たしかにシングルトンパターンをイメージしてました。
全部staticでできてるクラスってシングルトンパターンと変わらない気がしませんか?
仮にインスタンス化しても全てのメンバ変数はどのインスタンスから見ても同じものになるから。

メモリの無駄遣いになりそうな感じはありますが。

やっちゃいけないstaticの使い方をしているところは確かにあります。
FieldMapクラスのms_xとms_yです。
いけない理由も分かってるつもりです。
どうやってstaticじゃないメンバ変数に変えようか悩んでて、そのまま忘れて放置プレイになってました。

今、手をつけてる箇所の実装終わったらそこ修正してみます。


626:名前は開発中のものです。
08/03/08 01:36:29 0CP0oXDr
1の熱情に感動した。
こまめにソースアップしてるとこも好感度高いよ高いよー。

627:名前は開発中のものです。
08/03/08 09:21:15 U6M1Sa0y
619の言うように、staticメンバ変数の多用はよくない。シングルトンパターンも多用しないほうがよいよ。
理由は分かってると思うけど。581も参照のこと。

まずはstaticじゃなきゃ実現できないのかよく考えること。
おそらくstaticじゃなきゃいけない場合はほとんどないはず。
自分はC++職業プログラマだけど、staticメンバ変数を使うことはまずない。

面倒くさいけど、まだまだ規模が大きくなるんだから
しっかりやっといたほうがいいよ。
大きくなればなるほど痛い目みるから。

628:名前は開発中のものです。
08/03/08 09:41:50 U6M1Sa0y
VisualEffectsクラスについてアドパイス(提案)

1.まずメンバ変数、メンバ関数を全て非staticにする
メンバ変数の初期化はコンストラクタで行う。

2.VisualEffectsクラスのインスタンスをどこで作成するか考える。
プログラムの保守性の観点からは以下の順が良い。
 (1)VisualEffectsのメンバ関数を呼び出してる部分で毎回作成する。
 (2)VisualEffectsを使用するクラスのメンバ変数とする
(3)WinMain()で作成して、VisualEffectsを使用するクラスに参照orポインタで渡す
 (4)singletonパターンを使う。(詳しくは後述)

インスタンスの生成回数は以下のとおり
(1) >= (2) >= (3) = (4) =1
まず(1)から順に試してみて処理速度に問題があれば(3)か(4)にすればいい。

629:名前は開発中のものです。
08/03/08 09:51:02 U6M1Sa0y
Singletonパターンを使ったVisualEffectsクラスの例

VisualEffects.h// ヘッダファイル作った方がいいよ。

class VisualEffects{
int GrHandle1;
int hBlendGraph;
// コンストラクタをprivateに
VisualEffects();
public:
void CaptureScreen();
void BlackOut();
void SpellFlash();
void EffectErase();
       static VisualEffects& GetInstance(); // ここがポイント
};


630:名前は開発中のものです。
08/03/08 09:51:58 U6M1Sa0y

--VisualEffects.cpp---
// コンストラクタで変数を初期化
VisualEffects::VisualEffects(void)
: GrHandle1(-1), hBlendGraph(LoadBlendGraph("GameData/EffectData/BlendGraph.bmp"))
{
}

// 他のメンバ関数はそのまま。

VisualEffects& VisualEffec::GetInstance()
{
static VisualEffects instance;
return instance;
}

呼び出し方はこんな感じ
VisualEffects::GetInstace().BlackOut();

詳しくはググってみて。

631:名前は開発中のものです。
08/03/08 09:56:59 U6M1Sa0y
念のためだが、620やメンバ変数/関数が全部staticのクラスは
singletonパターンとは呼ばない。やりたいことは似てるけど。

632:名前は開発中のものです。
08/03/08 11:23:41 e3SgUCNB
private:を書かないなんてキモいな。
あとコンストラクタでファイル読み込みなんてしない方がいいのでは

633:名前は開発中のものです。
08/03/08 11:37:13 d+vrDc9c
どっからでも使いたいからシングルトンにするんだったらグローバル変数と一緒

634:名前は開発中のものです。
08/03/08 14:26:33 eQ2FMe8O
>>624
タイミングの話じゃない
そんなものハナから指定できないからな
constならそこで初期値を与えてもコンパイルできるという話。

635:名前は開発中のものです。
08/03/08 16:01:25 njb2fD55
さすがにVisualEffectクラスにシングルトンパターンに適用するのは
やりすぎかと。

要件としては、
1)VisualEffectのインスタンスは複数あってよい。
2)ただし、複数のVisualEffectのインスタンスから
参照されるhBlendGraphは必ずひとつ
3)hBlendGraphは外部からアクセスできない
な感じとして、

hBlendGraphを管理するクラスを
a)VisualEffectのprivateな内部クラス(要件3)
b)シングルトンパターン適用(要件1・2)
として作るのがいいと思うがどうよ。

636:名前は開発中のものです。
08/03/08 16:40:27 U6M1Sa0y
>>635
よく分からないな。
要件1の「VisualEffectのインスタンスは複数あってよい」であればSingletonにする必要がない。
この要件であれば620のやり方(Proxyパターンに近い)が自然と思うけど。
hBlendGraphを管理するクラスを作る方がやり過ぎに感じる。

>>632
>private:を書かないなんてキモいな。
好き嫌いの問題。よく見る。自分は書くが、なくても気にならない。

>あとコンストラクタでファイル読み込みなんてしない方がいいのでは
一概にそうは言えないけど、今回についてはそう思う。原型をなるべく変えないためにこうしたが、
もうちょっとやりようがあると思う。




637:名前は開発中のものです。
08/03/08 17:06:53 U6M1Sa0y
FieldMapクラスのms_xとms_yをどう非staticにするかだけど、PlayerParty::DrawParty と PlayerParty::move で呼んでるFieldMap::getMsx()とFieldMap::getMsy()を引数で渡すようにすれば
解決すると思うよ。呼び出し側ではfm.getMsx(), fm.getMsy()を使えばいい。
とりあえず直して動かしたけど大丈夫っぽい。

FieldMapのコンストラクタでms_xとms_yを初期化するのを忘れないように。

638:名前は開発中のものです。
08/03/08 17:44:56 U6M1Sa0y
>>635,636
よく分からないこともなかった。b)に要件1が書いてあったので勘違いした。
そのやり方でも別にいいと思う。

自分ならVisualEffects::BlackOut()のループの前で毎回LoadBlendGraphする。
でSingletonは使わないで毎回インスタンス生成する。(628の2(1)の少し変形)

ダンジョンや城から出るときに呼ぶ関数で、そんなに頻繁に使うわけじゃないからファイル読み込み時間はそんなに問題じゃなさそうだから。
問題になったらそのときにリファクタリングすればいいし。

まあ正解はないので
ハカセは今まで出てきた中から、自分がいいと思う方法でやればいいかと。

639:名前は開発中のものです。
08/03/08 22:39:15 b0Kr/BOB
また>1未満の屑がネット弁慶かよ



640:1
08/03/09 01:21:21 ZtBr13OB
みんないろいろありがとう。
VisualEffectクラスはシングルトンで行くことにします。
ちなみにSpellFlashはじゅもんを使ったときのあの光です。
他にもいろいろな場面で使うことが予想されるので
インスタンスを複数作る必要もないし
ファイルの読み込みは一回で済ませるようにしたほうがよさそうだからです。

効果音担当のSoundEffectクラスを作ろうとかも思ってるんですが
この二クラスを集約するEffectクラスとかにまとめたほうがいいのかな?
音関連もそろそろ実装してみたいと思う今日この頃。
効果音のファイルを用意するとしたら…
肉声しかないか!?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch