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


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

C++でFCのドラクエっぽいRPGを作る



1 名前:名前は開発中のものです。 [2007/11/02(金) 01:53:08 ID:M/fkomaJ]
C++の勉強をかねてFCのドラクエっぽい感じのRPGを作りたいんです。

しょっぱなからつまずいています、知恵を貸してください。

<<使用しているもの>>
BorlandC++
DXライブラリ
ドラクエフォント


DXライブラリはここ
ttp://homepage2.nifty.com/natupaji/DxLib/index.html

ドラクエフォントはここ
ttp://slime4.hp.infoseek.co.jp/font/font.html






301 名前:名前は開発中のものです。 mailto:sage [2008/01/04(金) 14:59:40 ID:0MJJiUxP]
ファイル分割と前方宣言を駆使すれば
循環インクルードは回避できるYO!

302 名前:名前は開発中のものです。 mailto:sage [2008/01/04(金) 15:08:51 ID:0MJJiUxP]
あ、今回のは循環インクルード問題じゃなくて相互参照の問題だった

303 名前: [2008/01/04(金) 17:31:29 ID:4fMs9e5G]
>>300
確かに回避できますが…
HPやらNameやらを全部実装させないといけないので、あんまり意味がないような気が…
実際Characterを継承しているPCクラスがItemBoxを持っているので、ヘッダを別ければいけるんですが、
つかうと独自に設定したメッセージを表示できるアイテムとかを作れるようにしたいので
なんちゃってスクリプトの方に投げる形式にすることにしました。
static Useable::outMsg , who , to を作ってFieldクラスから命令文、使用者、対象者を見れるようにして

Field::iventPriProcess(std::string*)で
"<UserName>" とかを使用者の名前に変換して命令文を実行するようにしました。
PriProcess関数を使うと普通の村人の会話を作る時に先頭の人の名前を呼び出せたりできます。

Useableを自作スクリプトで解決する以上、
戦闘中のアイテム使用や、呪文使用も同じ方法で解決しなければいけないため
FieldとBattleFieldの上位クラスを作って継承させるか、
それぞれに独自に実装させるべきか迷ってます。
もしくは両方つかって、共用部は親クラスで、専用部は子クラスで実装すべき?
書いててわけわかんなくなってきたので 頭冷やしてきます。

tp://sakuratan.ddo.jp/uploader/source/date65423.lzh



304 名前:名前は開発中のものです。 mailto:sage [2008/01/04(金) 18:14:08 ID:uTfk0Xu7]
>>298
メンバは基本ポインタのみにすれば
前置宣言だけで、継承元のクラス以外のファイルはincludeする必要はない。
というか実体を持たせるとそのクラスを作成したときにメンバに実体を持っている
クラスのインスタンスも作成されて複雑になってくると問題が発生しやすいので
基本的には単にデータをまとめたようなクラス以外はポインタで持つのが基本。
ゲーム作るのと平行してC++の勉強をもっとした方がいい。

305 名前:名前は開発中のものです。 mailto:sage [2008/01/04(金) 19:53:41 ID:OF7wpiKh]
>>303
まずはそれぞれ独自に実装して、共通する部分が多いなら分離してクラス化すべし。
最初から共通部分を使いまわすことを前提に作ると、かえって冗長な部分が多くなって失敗することがある。

コードの美しさが気になるなら、リファクタリングとかデザインパターンを勉強するといいかも。

306 名前: [2008/01/04(金) 20:22:51 ID:4fMs9e5G]
>>304
基本型以外のメンバ変数はなるべく作らずにするべき、という事でしょうか?
class TestClass{
public:
int x;
};

class TestMain{
 private:
  TestClass obj;
 public:

  void setObj(TestClass *obj){
   this->obj = *obj;
  }
×
  void setObj(TestClass obj){
   this->obj = obj;
  }
};
こんな感じですか?
でも、前置宣言だけで、継承元のクラス以外のファイルはincludeする必要はない。
って言うのが いまいち理解できなくて… Orz
すみません Orz

307 名前:名前は開発中のものです。 [2008/01/04(金) 20:27:35 ID:4fMs9e5G]
>>305
なるほど。確かにそんな感じがします。
個別に作っていって見ますね。
デザインパターンはGofは買ったんですが、半分くらいしか読んでねぇ。Orz
経験を重ねて、どう便利なのか理解しないと、身にならないなー、と実感してる次第でございます。

308 名前:名前は開発中のものです。 mailto:sage [2008/01/05(土) 10:54:21 ID:NGmgLj5+]
Gofはひととおりどんなパターンがあるのか目を通しておくだけで、
あとは必要に応じて辞書みたいに引くんでいいと思う。
「ここはもっと綺麗に実装できなかな?」と思ったときにちょうどいいパターンがないか探す感じで。

最初からパターンどおりに作ろうとするとこういう罠にはまることがある。

「ここはコマンド機能だからCommandパターンで作ろう!」
 ↓
「あれ…? なんでこんなに面倒な構造にしなきゃいけないんだ…?」
 ↓
「せっかくデザインパターンを適用したのにちっとも効率良くならない。やっぱデザパタなんて糞だな。」

309 名前:名前は開発中のものです。 mailto:sage [2008/01/05(土) 12:52:55 ID:6sNkPPyH]
>>308
でも、それができるのってある程度以上パターンを実際に見たり使ったりして
ある種のとっかかりがあればの話じゃないかなぁ?

なんというか、最低限の所は抑えておかないと部分的に”より綺麗な実装”とかって困難な作業じゃん。
下手したら、一から作ったほうが早かったりするし。




310 名前:名前は開発中のものです。 mailto:sage [2008/01/05(土) 18:06:17 ID:TQ5K8a3c]
深く考えるとゲームを作るというよりも、
パターンを実装するのが目的になってゲームが作れないという。

311 名前:名前は開発中のものです。 mailto:sage [2008/01/05(土) 20:47:44 ID:6fbMpELT]
>>パターンを実装するのが目的になってゲームが作れない
あるあるw

312 名前:名前は開発中のものです。 mailto:sage [2008/01/05(土) 20:50:04 ID:ycLLo6O8]
パターンとゲームエンジンは危険

313 名前:名前は開発中のものです。 mailto:sage [2008/01/05(土) 23:48:21 ID:CJpqsrn9]
デザパタとかアホが参考にするもんだろ

314 名前: [2008/01/06(日) 01:17:33 ID:8z3cTay0]
今の僕がまさにその状態かもしれません。
ま、仕様も決めずにできるところからはじめたので、
詰まるだろうな、とは思ってましたが、リファクタリングってつらいですねぇ…
SEに完璧な仕様を求めるのも不可能だし
仕様書が変更されすぎてデスマーチなPGも気持ちも理解した。

本当はPartyクラスとかItemListクラスとかはSingletonパターンを使ったほうがよかったんだろうなぁ…

315 名前:名前は開発中のものです。 mailto:sage [2008/01/06(日) 02:12:10 ID:7m3sm5Xq]
>本当はPartyクラスとかItemListクラスとかはSingletonパターンを使ったほうがよかったんだろうなぁ…

それ罠。
「デザパタが使いこなせるようになれば上級者になれる」というのがそもそも迷信。
デザパタは銀の弾丸じゃない。
コーディングに後悔は付き物。迷うくらいなら今の設計で進んだほうがいい。

あと、リファクタリングは本来楽しいもの。
つらいと感じるようならリファクタリングのやり方が間違ってる。
アジャイルとかextreme programmingとかxUnitについて調べてみ。

316 名前:名前は開発中のものです。 mailto:sage [2008/01/06(日) 03:12:38 ID:0uUhrKJm]
さんざんガイシュツネタなんだが
デザパタはクラス設計をする上で(その当時は)頻繁に発生する設計を
うまく抽象化(これ重要。そのまま使えるわけではない)して名前をつけただけ。
主に設計者同士のコミュニケーションの役に立つ。
デザパタがそのままの形で設計に現れてくるケースは
実はそんなに多くない。大抵は状況に合わせて変形されていたりする。
またデザパタはC++に特化されたものではない
(ポインタとかテンプレートとかシラネ)ので過信は禁物。
正直言ってクラス設計の基本パターンを全てここから引いてくると
コードは酷いことになると思っている。
それよりかは熟練者のコードを読んだほうがいい。
デザパタは継承ありきの設計だが、
現在は不要な継承はできるだけ避けるべきとする設計手法もある。


もっと根本的には設計の技術は単なる道具。
重要なのは「設計思想」であって、
つまりなにがしたいのかと言う事。
例えば目的がコードを綺麗でシンプルにする事である場合、
デザパタを使った結果としてコードが複雑に読みにくくなったのなら
その道具はこの場合役に立たないということだ。

317 名前:名前は開発中のものです。 [2008/01/06(日) 15:15:00 ID:SZ5sx4fN]
ドラクエと関係ないな
実践の伴わない理論なんかどうでよい


318 名前:名前は開発中のものです。 [2008/01/06(日) 15:21:05 ID:SZ5sx4fN]
つか
ドラクエすれ
多すぎね?まとめろよ

319 名前:名前は開発中のものです。 mailto:sage [2008/01/06(日) 16:43:22 ID:/HrmMcya]
既に立てられたスレをまとめるって具体的にどうすんのよ



320 名前:名前は開発中のものです。 [2008/01/06(日) 17:12:30 ID:SZ5sx4fN]
削除依頼出すなり
下げて落とすなり出来るだろ
何年かかるかは知らんが

それぞれのスレも
どうせ、この板の住人なんだろうから見てる奴も
かぶってるだろうしな


321 名前:名前は開発中のものです。 mailto:sage [2008/01/06(日) 17:57:28 ID:DM+h60cC]
最終書き込みから5年近く生存してたスレもあるわけでw

322 名前:名前は開発中のものです。 mailto:sage [2008/01/07(月) 01:02:22 ID:YQu/Z7rd]
削除人はあなた方の消しゴムではありません

323 名前:1 [2008/01/07(月) 02:53:31 ID:4zheO+Ql]
とりあえず 戦闘中に薬草が使えるようになりました。
攻撃のダメージ計算の結果がマイナスの時にHPが回復するという間抜けなバグを修正しました。

tp://sakuratan.ddo.jp/uploader/source/date65782.lzh

アイテムを増やしていろいろ実験してみなくちゃな。破損率とか。
次は装備を実装してみたいと思います。


324 名前:名前は開発中のものです。 mailto:sage [2008/01/07(月) 20:59:30 ID:yiUETlQX]
すげーよ、がんばれ

325 名前: [2008/01/08(火) 08:00:58 ID:28otzPtg]
装備実装とか言っておきながら、戦闘順番の修正をしてました。
すばやさを−25%〜25%の補正をかけて、補正後の値の大きい順番で行動します。
ただのバブルソートです。

tp://sakuratan.ddo.jp/uploader/source/date65958.lzh

326 名前:名前は開発中のものです。 mailto:sage [2008/01/08(火) 09:52:24 ID:D3pjyDXl]
テスト

327 名前:名前は開発中のものです。 mailto:sage [2008/01/08(火) 17:10:35 ID:JvrNAlpQ]
あぷろだにアクセスできないな
ddo.jp/には行けるんだけど…

328 名前:名前は開発中のものです。 mailto:sage [2008/01/08(火) 17:55:44 ID:Y5Es8nAh]
sakuratan時々アクセスできなくなる。
しばらくすると復旧するからしばし待てばよし

329 名前:名前は開発中のものです。 mailto:sage [2008/01/09(水) 03:23:20 ID:yeQM8ZEN]
濁点が<
なのがなんか泣ける
でもそんなの関係ねぇ〜

がんばれ



330 名前:1 [2008/01/09(水) 08:13:12 ID:HAK5lZLN]
とりあえず 装備しているものに E がつくようになりました。
でも、攻撃力とかは上がってません。
戦闘時にすばやさで行動順がかわるようになりました。

tp://sakuratan.ddo.jp/uploader/source/date66027.lzh

331 名前:名前は開発中のものです。 mailto:sage [2008/01/10(木) 22:36:10 ID:1zT0fMGD]
ここのスレを見て、
>>1の晒したEXEを実行してみた。

 コマンド部分はまだ完成度は低いのかな…?
コマンド>つよさ>じょうたい と選んでいったときに、
「MetaCmd::getWidth()が適当な実装です」と出てくるが、OKボタンを押しても
しつこく出てくるのだけは勘弁…(ノд`
(未実装なら、エラーメッセージを出して強制終了 ぐらいはしてもいいかな…?と思うけどw)

それでも、形になっているみたいなので、負けてられんなと思ったよ。
>>1よ、がんがってくれ!


自分も、昔VBで作ったRPGをVCとDirectXでリメイク中だが
勉強の為にライブラリから自作しとるので、何にも形になっとらん…orz





332 名前:1 [2008/01/10(木) 22:59:37 ID:kdi+SJlD]
装備品の能力上昇を実装しました。
ドラクエフォントをインストールしていない場合に警告が出るようになりました。
つよさをみる のステータス詳細画面に装備品が表示されるようになりました。
IventScriptに【Goto】と【Label】と【If】(HasItem)と【Div】を実装しました。
これによってアイテムフラグで進む簡単なストーリーなら作れます。
破損率99%以下の物の破損時「おともなくくずれさった…」と表示するようになりました。

とりあえず、ストーリーはおわりです、というメッセージが表示されるまでの
ミニストーリーを作ってみました。
ちょっとテストのつもりなので、おもしろいとか面白くないとか言わないでくださいね。

メモ帳でEditしたんですが、このスクリプト結構見づらいです。(インデントつけられないし
がんばって専用のエディターも作らなくっちゃ、ですね。

tp://sakuratan.ddo.jp/uploader/source/date66194.lzh
次は戦闘中の武器持ち替え対応か
→ はい
   いいえ
の選択窓か
あと呪文?

の前にフィールドでそうびコマンドの実装だな Orz


333 名前: [2008/01/10(木) 23:07:07 ID:kdi+SJlD]
>>331
あれ?ほんとだ(汗
いままでちゃんと表示されてたはずなのにOrz
332でUpしたやつも同じ症状に陥るので、修正版を出すまで【つよさをみる】をしないでください。
未実装の部分は、選択してもなにもおこらないようにしてあるつもりなので(強制終了すると、僕も困る)
つっこみサンクスです。


334 名前: [2008/01/10(木) 23:10:21 ID:kdi+SJlD]
バグが出るのは【つよさをみる】じゃなくて【じょうたい】でした。
そういえば、実装しようとして、中途半端なまま忘れてたんだ Orz
実装してきます。Orz


335 名前:1 [2008/01/11(金) 00:06:11 ID:Jjm7Zu81]
つよさ->じょうたい のバグっていうか、放置プレイだった箇所を修正しました。
そういえば、「うんのよさ」の使い道ってなにもなし、だったかしら?
雰囲気だけでつけたとかって話を聞いたことがあるんですが…
でも、それじゃアレなので、なにかつけたいと思います。
何か利用方法ある?
宝箱のドロップ率アップくらいしか思いつかないや。

あ… 宝箱おとすとかも実装しないとな…

tp://sakuratan.ddo.jp/uploader/source/date66205.lzh

336 名前:名前は開発中のものです。 [2008/01/11(金) 22:37:41 ID:8z4xaIl1]
すげーことやってんなw

337 名前:1 [2008/01/12(土) 00:28:36 ID:WDlhVTgQ]
どうぐ->そうび から装備できるようにしました。
普通の装備コマンドはまだ未実装です。
戦闘中に攻撃用アイテムが使えるようになりました。
複数攻撃できるようになったのは、かなり興奮しました。

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

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

説明のしかたがへたくそだなぁ… Orz
tp://sakuratan.ddo.jp/uploader/source/date66269.lzh

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

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



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

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

342 名前:名前は開発中のものです。 mailto:sage [2008/01/12(土) 21:00:00 ID:PD5xMP0i]
過去40万年の気温変化
ttp://www.teamrenzan.com/archives/writer/nagai/human_innovation2.png

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

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

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

345 名前: [2008/01/14(月) 06:17:05 ID:aSQurjHs]
【そうび】コマンドを実装しました。
思ったよりはすんなりできたかもしれない。

tp://sakuratan.ddo.jp/uploader/source/date66552.lzh

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

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

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


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

347 名前:名前は開発中のものです。 mailto:sage [2008/01/14(月) 19:50:06 ID:UuCFVpAj]
>>344
それが普通だと思うよ

348 名前:名前は開発中のものです。 mailto:sage [2008/01/14(月) 22:32:53 ID:G0SwQqXv]
この板の普通といえば逃亡だろ

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



350 名前:名前は開発中のものです。 [2008/01/15(火) 00:43:14 ID:C2FoLMEe]
そんなもの完成するまで作る必要なし

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

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

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

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

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

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

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


354 名前:名前は開発中のものです。 mailto:sage [2008/01/15(火) 19:18:51 ID: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 名前:名前は開発中のものです。 mailto:sage [2008/01/15(火) 19:22:55 ID:TKI/oqBM]
悪かったところばかり挙げていると、
>>1がへこんでしまうだろうから、最後に良かったところを挙げる。

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

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

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

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

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

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

356 名前:名前は開発中のものです。 mailto:sage [2008/01/15(火) 23:48:33 ID:UO44uzzc]
Window閉じたけどpostpuitしてないって奴か?

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

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

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

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

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

tp://sakuratan.ddo.jp/uploader/source/date66751.lzh

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

359 名前:名前は開発中のものです。 mailto:sage [2008/01/16(水) 08:16:39 ID:9K3RdyGz]
ごめ、post"q"uit w



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

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

361 名前:名前は開発中のものです。 mailto:sage [2008/01/16(水) 17:11:20 ID:dnCNkhgK]
>>360
ソース見てないから、適当な発言だが

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

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

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




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

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

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

365 名前:1 [2008/01/17(木) 21:23:10 ID:HCFfaCxW]
あ、本当だ… Orz
右も左も分からない時に書いた箇所だ…

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

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

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

tp://sakuratan.ddo.jp/uploader/source/date66885.lzh
削除パス設定し忘れた… Orz



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

367 名前:名前は開発中のものです。 mailto:sage [2008/01/17(木) 22:17:21 ID:/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 名前:名前は開発中のものです。 mailto:sage [2008/01/17(木) 22:18:56 ID:yQ/WXoAm]
最初から人様の作ったラッパー使うのはどうかと

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



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

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

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

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

tp://sakuratan.ddo.jp/uploader/source/date66915.lzh

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

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

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

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

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

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

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

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

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

376 名前:名前は開発中のものです。 mailto:sage [2008/01/18(金) 07:02:39 ID:cTq/87tt]
SDLやopen_glを使ってくだちい<><><><>

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

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

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



380 名前:名前は開発中のものです。 mailto:sage [2008/01/19(土) 13:32:47 ID:qd03KsuI]
俺はエディタや開発環境の構築で挫折したよ

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

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

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

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

tp://sakuratan.ddo.jp/uploader/source/date67042.lzh

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

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


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

385 名前:名前は開発中のものです。 mailto:sage [2008/01/19(土) 20:31:54 ID:M1k0mHX6]
XBOXで動くのはXNAだよ
【Xbox360】 XNA Game Studio その4 【C#】
pc11.2ch.net/test/read.cgi/gamedev/1198312422/

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

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

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

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

ここまでで止める



390 名前:名前は開発中のものです。 mailto:sage [2008/01/20(日) 18:50:59 ID:ImQG3BnS]
>〜がやりたい→試しに実装してみる

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


391 名前:名前は開発中のものです。 mailto:sage [2008/01/20(日) 20:53:01 ID:3ekNMmoB]
「こういうものを作りたい」という完成形が頭に描けないことかな。

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

392 名前:名前は開発中のものです。 mailto:sage [2008/01/20(日) 21:23:11 ID:6uADG+oQ]
Kneel to the Emperor of Japan.
You are a Korean. It is ugly race.

393 名前:1 [2008/01/21(月) 04:26:01 ID:VsfG21W1]
>>386
BCC Developerの便利な機能をやっと把握し始めたところなのに… Orz

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

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

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

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

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

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

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

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

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

398 名前:名前は開発中のものです。 mailto:sage [2008/01/21(月) 15:06:45 ID:4uf1EjU0]
普通に考えたら.NETなんじゃないの

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



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

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

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

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







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

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

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