- 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
- 431 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 13:30:25 ID:n87t9W9f]
- >>427
www.m--takahashi.com/bbs/pastlog/04500/04419.html ↑ここ読め
- 432 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 13:49:11 ID:n87t9W9f]
- つか1はとても初心者とは思えんな
C++の知識は確かに貧弱だけどCかもしくは別言語はやってたんだろ まあ、がんばってくれ 俺もゲーム作ってるからソースは参考にさせてもらうよ
- 433 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 15:37:30 ID:qYaFn144]
- c用の構造体は継承しちゃダメだよ
publicになっちゃうし…
- 434 名前:名前は開発中のものです。 [2008/01/26(土) 18:12:33 ID:e3cqRtGD]
- small関数は別の名前に変えて欲しいところではある。
- 435 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 19:33:43 ID:dThAsdf4]
- MFCやWTLのCRectとかふつーにRECT派生してるよ。
まーそもそもAPIの薄いラッパーなんだが。
- 436 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 21:17:54 ID:qYaFn144]
- >>435
で? CRectと同じように自由に中身いじれていいと? どう考えてもhas関係のほうがいいだろ
- 437 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 22:39:29 ID:dThAsdf4]
- 用途によると
- 438 名前:名前は開発中のものです。 mailto:sage [2008/01/27(日) 03:49:56 ID:rwExEoOD]
- >>437
>>427を読んでもまだ言うかww
- 439 名前:名前は開発中のものです。 [2008/01/27(日) 14:29:06 ID:T94kIYTo]
- >>1は当然リファクタリング中なんだよな?
こんな状態で新機能つけられても失笑をかうだけだぞ
- 440 名前:名前は開発中のものです。 mailto:sage [2008/01/27(日) 14:35:04 ID:2lUOmqYr]
- リファクタリングなんか実装終わってからやればいいじゃんか
- 441 名前:名前は開発中のものです。 mailto:sage [2008/01/27(日) 17:26:00 ID:bil4rrw2]
- 1は明らかに本業
- 442 名前:1 [2008/01/28(月) 09:42:14 ID: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 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 11:51:19 ID: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 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 12:17:32 ID:DJpHQP7Z]
- int から bool への変換で警告はないだろ。
0が偽で非0が真なんだから、警告の出しようがない気がするが。 VC++ が過剰なだけでは? return a != 0; としたほうが良いってのは同意だけど。でも Java は別に関係ないな。
- 445 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 18:46:30 ID:DSI82zKh]
- コンパイラだけ見ればVCのほうが標準準拠度がまし
- 446 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 22:03:00 ID:qDZhZR+9]
- intをboolに変換したらintに再変換できない。
情報が失われているから警告出してもよさそうなのだが。 しかし手元のg++でコンパイルしてみたが警告出ないな。
- 447 名前:名前は開発中のものです。 mailto:sage [2008/01/29(火) 01:30:19 ID:M4FlFQH0]
- 世界ランク14位おめw
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 [2008/01/29(火) 10:11:54 ID:owOBTCKE]
- >>349
今中途半端に新機能付けてる所なので、一段落したらリファクタリングしようと思ってます。 VCに移行する事も考えてます。 せっかく見てくれる人がいるんだから、殆ど使われてないBCCよりアドバイスも受けやすそうだし。 はやくアク禁とけないかなぁ…
- 449 名前:1 [2008/01/31(木) 08:17:54 ID:gs4vtOjg]
- VC++ 2005をインスコして、コンパイルしてみたものの
吐き出されたエラーの量に愕然…。 しかも見たことないエラーだから対処法がわかんないOrz とりあえず、このプロジェクトは最後までBCCで行ったほうがよさそうだ。 VCは次のプロジェクトでつかってみることにするよ。 いや、エディター部分で使ってみるか。 ************************************** 人と物の区別をつけました。 町の中の入り口に立ってるのが【人】です。 tp://sakuratan.ddo.jp/uploader/source/date68697.lzh
- 450 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 09:09:52 ID:KWbgYovb]
- >>449
VC++2005っていうのはExpressEditionか? それならWin32 SDKをインストールする必要があるぞ。 もし違うのなら、ユニコード関連のエラーじゃなかったか? 俺も最初そこではまったぞ。 VC++2005以降ではデフォルトのプロジェクト設定は ユニコード関数になってる(当然98/Meでは実行不可)。 多分今まではANSIライブラリで開発していただろうから、 プロジェクトー>プロパティー>構成プロパティ ー>全般ー>プロジェクトの規定値ー>文字セット を「マルチバイト文字セットを利用する」と設定してみたらどうだ。 関数でセキュリティ警告がでたらググって消すといい (あまり良い対処法ではないが)。 意外とVC++も面倒なんだよな。 インテリセンスは便利なんだが、そっちはVC#のほうが進化してるし。
- 451 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 10:33:31 ID:g4vS4NUg]
- windowsのAPI直接呼んでなければplatformSDKは不要
>>1のソース見てないから使ってるかは知らんが…
- 452 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 10:43:18 ID:9v/0NHUq]
- >>451
Dx_Lib使ってるなら必要だったような希ガス
- 453 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 13:05:33 ID:g4vS4NUg]
- >>452
それはおかしい DX_libがWinAPI用のlibファイルとリンクしてないことになる バイナリで提供されているということは、WinAPI用のlibはリンク済みなはず
- 454 名前:名前は開発中のものです。 [2008/01/31(木) 14:16:08 ID:a5CfO9IL]
- DXLIB配布元の説明くらい読め
PlatformSDKは必須
- 455 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 15:42:20 ID:ZxMw62D0]
- 必須て・・・
dll版も配布されているので可能だけど
- 456 名前:名前は開発中のものです。 [2008/01/31(木) 15:53:29 ID:a5CfO9IL]
- ライブラリ群の話しじゃないよ
ヘッダはどうすんのよ windows.hとか最初に読んでるし まさかBCCの使えとか言ってる?
- 457 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 15:57:23 ID:ZxMw62D0]
- >>456
つれたwww ライブラリ側のビルド時に依存してるだけだから、コメントアウトして問題ない。 implibとかdumpbin等等の細かいツールいくつかと、元のdxlib.hを加工すればいける dll作成経験が恐らく無い>>1には大変かもね
- 458 名前:名前は開発中のものです。 [2008/01/31(木) 16:02:19 ID:a5CfO9IL]
- 加工かよ
じゃあ WIN32ライブラリリンクしてるとこも加工な がんばってくれww
- 459 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 16:03:26 ID:ZxMw62D0]
- >WIN32ライブラリリンクしてるとこも加工な
お前本当にDLL作ったことないのな・・・ 単体のexeとほぼ同じ構造になってる この意味がわかるか?
- 460 名前:名前は開発中のものです。 [2008/01/31(木) 16:20:07 ID:a5CfO9IL]
- よく読め
俺はお前の言った ヘッダの修正の話しをしている それからdll版ってなんだ? 悪いが見たこともない win32リンクされてるdll版でも配布されてんの?
- 461 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 16:26:06 ID:ZxMw62D0]
- >よく読め
>俺はお前の言った >ヘッダの修正の話しをしている やっぱりお前わかってないってdll作ったこと無いなら素直に質問すればいい >それからdll版ってなんだ? C#版アーカイブに入っている。 C#で開発する際には、同梱の.NETのクラスライブラリを使ってアクセスするというだけなので、 dxlib.dll自身はネイティブ。
- 462 名前:名前は開発中のものです。 [2008/01/31(木) 16:36:15 ID:a5CfO9IL]
- お?
あった 納得 つかC#かよ!! というツッコミは辞めておく 勉強になったわ サンキュー
- 463 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 17:58:32 ID:ad/sWf4T]
- >つかC#かよ!!
>というツッコミは辞めておく いや、そこはつっこめよw
- 464 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 18:17:56 ID:ZxMw62D0]
- >463
>C#で開発する際には、同梱の.NETのクラスライブラリを使ってアクセスするというだけなので、 >dxlib.dll自身はネイティブ。
- 465 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 18:51:00 ID:ad/sWf4T]
- 1の開発環境はC#なのか?w
- 466 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 18:54:57 ID:ZxMw62D0]
- >>465
だから、dxlib.dllはネイティブだと何度(ry
- 467 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 22:23:51 ID:Qxg+Khni]
- >>452-466
お前らかっこ悪りぃwwww
- 468 名前:名前は開発中のものです。 mailto:sage [2008/02/01(金) 19:01:44 ID:eYKdS8Iu]
- 2008EEならPSDK付いてるだろ
同じ無料だし軽くなってるし
- 469 名前:名前は開発中のものです。 mailto:sage [2008/02/01(金) 19:19:54 ID:tyk5s2hE]
- 俺が初めにやったのはlibがRelease用なのにdebugでビルドしようとしたミスだ。
- 470 名前:名前は開発中のものです。 mailto:sage [2008/02/02(土) 09:02:14 ID:IBv7+ZuZ]
- >>449
>吐き出されたエラーの量に愕然…。 >しかも見たことないエラーだから対処法がわかんないOrz たぶん次プロジェクトで使おうとしても同じ部分でつまづくから 開発の合間に少しずつでいいから解決してみれ オレもこれを VC++2005 でビルドできるようにするまでに 色々な部分をイジったから 分かんねーことがあったら全部ここで聞いてみー あと、VC++2005 がアホだからかもしれんけど BattleCommands クラスの giveControl メソッド内に goto Spell; があるんだが、Useable.h の Spellクラスと混同されてるみたいで エラーになっている Field.cpp の380行目で 構文エラー : ';' が '}' の前にありません とか出てくるけど、 それ以前に Field クラスの iventProcess メソッドは 近いうちに何とかしといた方が良さそうだな
- 471 名前:名前は開発中のものです。 mailto:sage [2008/02/02(土) 14:00:18 ID:O0xDaWr+]
- gotoのラベルは全て大文字が基本だね
エラー処理以外で使うべきではないが…
- 472 名前:名前は開発中のものです。 [2008/02/02(土) 17:38:17 ID:I9mkDQj0]
- 4819と4996の警告を無視するようにオプション付けると少し幸せになるかもしれん。
VC++コンパイラが文字コードを知らないバグはゲイツも認識しているらしいが修正は次期リリースを待て、 とのことだったような気がしたが、ソースは無い。 というわけで、文字コード警告は無視。 atoiは時代遅れ、という警告も無視。 無視するのはいいが、全角文字みたいにマジで認識できない文字が入っていたとしても警告出ないので注意な。 ん? それだと警告じゃなくてエラーがちゃんと出るやもしれんが…。 どうでもいいが、コンパイラが文字コードを判別できないってアホすぎるだろ。
- 473 名前:名前は開発中のものです。 mailto:sage [2008/02/02(土) 17:39:12 ID:I9mkDQj0]
- おっとsage忘れたごめんよ。
- 474 名前:1 [2008/02/03(日) 01:37:14 ID:hMoICJCS]
- みんなありがとう ><
もうちょっとVCがんばってみるわ。 ちなみに、お察しの通り2005 Express Editionです。 gotoのラベルの文字衝突なんか 自力じゃ絶対わかんないって Orz 壁にぶつかったら質問しに来るね。 ほんとありがと。
- 475 名前:名前は開発中のものです。 mailto:sage [2008/02/03(日) 07:00:58 ID:NH1+l1Mk]
- Standard Editionの俺の足元にも及ばないぜ
- 476 名前:名前は開発中のものです。 mailto:sage [2008/02/03(日) 13:23:59 ID:FIiEId7l]
- >>474
2008でてるのに・・・
- 477 名前:1 [2008/02/04(月) 07:07:12 ID:RaDIAkOA]
- 2008か…
ダウソしてみる…
- 478 名前:名前は開発中のものです。 mailto:sage [2008/02/04(月) 12:10:13 ID:Cc7CMG8W]
- >>477
俺はVisual C++ 2008 Express Editionを使っている。 使用頻度は高くないが……。 Visual C++ 2005 Express Editionと違って、 設定しなくてもWin32プログラミングが出来るのが強みだ。
- 479 名前:名前は開発中のものです。 [2008/02/04(月) 20:36:01 ID:RaDIAkOA]
- 2008ダウソしたらVC++9.0 って書いてあったけど、 Vc++6.0 の2005と どっちのほうが使ってる人多い?
それともどっちでも関係ない? もしくは6.0で作っておけば9.0ならコンパイル通る?
- 480 名前:名前は開発中のものです。 mailto:sage [2008/02/04(月) 20:38:55 ID:teV1oW9H]
- VC2005は8.0だよ
- 481 名前:1 [2008/02/04(月) 23:04:12 ID: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 名前:名前は開発中のものです。 mailto:sage [2008/02/04(月) 23:22:27 ID:PaK1bp7B]
- VisualC++用 のライブラリ使ってる?
- 483 名前:名前は開発中のものです。 [2008/02/05(火) 01:30:29 ID:YbsfZF5u]
- >>482
ちゃんとVC用のを使ってます>< サンプルは一応動くんですよねぇ…。 ファイルの追加のやり方が間違ってる?
- 484 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 01:54:57 ID:JnBm9OcX]
- >>1には悪いけどはかせでワロタ
- 485 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 01:57:31 ID:c8iqtCfM]
- >>483
↓これはもう試した? プロジェクトのプロパティから、構成→全般 文字セットの欄 → 「マルチバイト文字セットを使用する」に変更
- 486 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 12:53:15 ID:2IEJhn/E]
- >>483
リンク時のエラーということは文字セットの問題じゃないな。 Releaseモードでコンパイルしてみたらどうだ。 確か、俺はDebugモードではライブラリが入ってなくて 実行時にエラーになった覚えがある。 Releaseモードだとデバッガが使えなくなるのが難点だが。 あと、481のログは全部のソースファイルをビルドしたやつか? ソースファイルが1つのはずはないが……。 >ファイルの追加のやり方が間違ってる? どのように追加したのか詳しく説明してくれ。
- 487 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 18:16:38 ID:Ehp9HBzC]
- >>485
それ2008からなくなったよ
- 488 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 18:32:15 ID:tL3mZ0gl]
- >>487
あるじゃねーかww 釣られてしまった
- 489 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 21:36:16 ID:YoGlW1vl]
- 流れ無視で書くけど致命的なエラーだからBattleField.objってのに
単純に出力されてないとかロックがかかっててアクセスできないとか リンカが想定してるobjではないとかそんな感じだとおも つーかLNK1107もちゃんとヘルプで確認しろよ
- 490 名前:1 [2008/02/06(水) 09:36:50 ID:q7r4U2fq]
- みんなありがとう
体調不良で早く寝て、朝起きて出かける前に少しいじって、出先から携帯カキコ。 LNK1107のエラーはBCCでコンパイルしたobjファイルを削除してからビルドしたら解決した。 >>489の言うとおりヘルプ見たら解決できた。 ググるだけで、ヘルプ見るって考えが無かったよ orz だけど、また違うエラーがでてきた。 家に帰ってからじっくりやってみる。
- 491 名前:1 [2008/02/07(木) 08:19:47 ID:+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 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 08:37:14 ID:XCIeOzX/]
- #ifdef _MSC_VER
#define pragma once #endif /* _MSC_VER */ ヘッダの重複を避けるなら先頭に↑とでも書いておけば。
- 493 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 08:37:58 ID:XCIeOzX/]
- #pragma once
だったorz
- 494 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 11:11:53 ID:4ZyDT5RJ]
- >>491
> cppソースに > MyBool = false; > と記述しろ、と書いてありましたが、 cppの方でヘッダインクルードしてる? ってか、ソース晒したほうが早いような
- 495 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 12:04:04 ID: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 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 13:24:18 ID:/8kqxVw7]
- BOOLのtypedefしたヘッダ読んでないんだろうよ
あとBOOLはfalseじゃなくFALSEだな
- 497 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 21:59:20 ID:tz5rxEMj]
- そういやー、Usable.h の
static int amount; static Item *itemList; に対する int ItemList::amount = 0; Item * ItemList::itemList = NULL; の部分は、上のと似たような理由でコメントアウトしたような気がするなー そもそも静的変数って 0 で自動的に初期化されるんだっけか?
- 498 名前:1 [2008/02/07(木) 23:31:34 ID:+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 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 00:51:30 ID: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 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 01:11:45 ID:MoDyMZB7]
- 某ランドでは動くのにね
- 501 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 11:48:47 ID: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 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 12:50:49 ID:l8JQSvGp]
- >>501
デタラメ書くなよ コンパイルできないぞ あと配列をポインタに変換してexternさせると長さ失うからお勧めしない
- 503 名前:501 mailto:sage [2008/02/08(金) 13:15:21 ID: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 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 22:54:29 ID:1LutvMl1]
- ぼ、ぼ、ぼくも、C++でゲーム作るんだお。
すーぱーマリおだお。 members2.tsukaeru.net/ogawa/gameprogu2.html さん、をつけて、ねっ。はずかしがりや、さんっ。 ぼ、ぼ、ぼくは、言語にふりまわされないんだからっ。えっへん、だお。 なんかー、言語名を冠につけるってはずかしいお。きゃっ。 すれちがっている。ミーンがすれちがっている。しゅーるだお。 ぼくね、IQ300なんだおって細君にいったら、絶対30だからっ!って言われたの。 1回転して、30になっちゃたんだね。って言ったら、ほんとに30だねって感心されたお。ぶぃっ! なにがいいたいかってーと、まぁ、言語に振り回されんなや、ゲームなんて、たかだか、数値と画面を 更新してるだけのもんだで。まじでそんだけ。ぷっ。だよな。むずかしいことなんて、ひとつもないぜ。 まぁ、頑張れや。ぼ、ぼくは、いま、がんばれ屋さんです。がんばれ、1。 あんまりにも言語に振り回されている様が、恥ずかしかったので、まぁ、書き込んでしまた。 ぼくのオーバードライアブ(波紋)が、伝わっただろうか。夕陽のオレンジのオーバードライアブ(覚醒の波紋(あの裏側が目覚める!))
- 505 名前:名前は開発中のものです。 mailto:sage [2008/02/09(土) 00:26:46 ID:41azRV47]
- C言語ぐらいわかってからゲーム作れよw
www.ascii.co.jp/books/books/detail/4-7561-1639-6.shtml オススメ
- 506 名前:名前は開発中のものです。 mailto:sage [2008/02/09(土) 00:35:32 ID:ucOS0Odn]
- pc11.2ch.net/test/read.cgi/gamedev/1034694683/
ここのオガワンってヤツだろ
- 507 名前:名前は開発中のものです。 mailto:sage [2008/02/09(土) 02:08:54 ID:uWdwi6vy]
- ホームページに自分の画像を載せてるけどナルシストなのかな?
members2.tsukaeru.net/ogawa/index.html
- 508 名前:名前は開発中のものです。 mailto:sage [2008/02/09(土) 02:17:17 ID:OEsnMtz3]
- >>504
あまりにも酷いソースでお茶噴いたww
- 509 名前:名前は開発中のものです。 mailto:sage [2008/02/09(土) 21:35:27 ID:vKTa7a8F]
- >>504
宣言わろた
- 510 名前:名前は開発中のものです。 mailto:sage [2008/02/10(日) 00:36:09 ID:Ze9YCxYS]
- >>504
> int TIME[3]; //基本的に、通番の変数は1番から使う。0番は無視。 クソワロタww
- 511 名前:名前は開発中のものです。 mailto:sage [2008/02/10(日) 07:51:48 ID:DQWHtX5v]
- using namespace std; //?
- 512 名前:1 [2008/02/11(月) 00:04:10 ID:vFv6OLzk]
- ろだの調子が悪いんじゃなくて、サイズオーバーでした Orz
VCに変えたとたんいきなり5倍くらいサイズが増えたみたいでびっくり。 コンパイル事態は通ったものの、会話するとエラーで落ちる。 どうやらhakase.hのStringクラスが悪さしてるみたいだけど、まだ原因の特定には至ってません。 IDEに慣れるまで少し時間はかかりそうだけど とりあえずデバッグ機能は使いこなせるようになりたいな。 tp://sakurachan.dip.jp/up/src/up9332.lzh
- 513 名前:名前は開発中のものです。 [2008/02/11(月) 02:35:47 ID: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 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 04:10:20 ID:pgtIh2EL]
- 文字列と文字は違うからどちらもコンパイルできないよ
- 515 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 08:30:36 ID:aDsF8YDL]
- >>512
たぶん 拡張子 .ncb ってヤツが一番巨大だと思うんだけど、 .ncb は各々の環境で勝手に作られるから、配布時は不要っすね、 配布用からは消して圧縮すればいいよー。 あと、すごい昔から気になってたけど はかせって何よ?
- 516 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 14:28:47 ID:UBlSMgHv]
- 俺もそれが気になる。すげー気になるw>はかせ
- 517 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 14:37:13 ID:dALXccIV]
- >>481を見るとユーザ名みたいだけど
1の名前なのかな
- 518 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 14:50:42 ID:G+Qy0YvV]
- これからは>>1をはかせと呼ばせていただきます
- 519 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 20:01:42 ID:o0lcrIeV]
- NCBはインテリセンスのキーワードデータベースだな
STL使うと相当膨れる。
- 520 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 22:31:24 ID:ummcWhTi]
- 余計なファイルを作らせない設定ってないんですか?
- 521 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 23:57:52 ID:HhQuAIPA]
- インテリ切れば?
- 522 名前:1 [2008/02/12(火) 00:22:15 ID:tLRoXqiP]
- はかせ は僕のあだ名です。
もっとも今もそうやって呼ぶ人はいなくなったけど、気に入ってるから使ってます。かたわれも同様。 本名ってのもアレだし。 >>512のエラーですがデストラクタで delete [] restr; をする時にエラーになってるっぽい。 危険だけどコメントアウトすると動くんだけどなんで? コンストラクタはそれぞれ引数に char* FILE* std::string を取る三種類しかなくて それぞれで char str[] と char restr[] を new してて strとrestrの配列は同じ長さをとってあるはずなのになんで? でも、まったく違うところが原因かも。
- 523 名前:名前は開発中のものです。 mailto:sage [2008/02/12(火) 00:28:40 ID:IKtCZVK3]
- >>520
ツール(&T)→オプション(&O)→テキストエディタ→C/C++→全般→入力候補 自動メンバ表示(&M) [OFF] パラメータヒント [OFF] →OK
- 524 名前:はかせ [2008/02/12(火) 01:22:27 ID:tLRoXqiP]
- バグの原因がわかりました。
Stringクラスを作る時の引数が、空の文字列だとエラーになるみたいです。 とりあえずMsgCmd::Draw() 側ではじくようにしたんですが 本来はStringの方で何らかの処理をすべきですよね。 さて、どうやって処理するのが一番いいんだろう? ゆっくり考えてみます。 さて、ようやく前に進めそうなのでモチベーションあがってきました! ↓とりあえず動くようにしたバージョン↓ tp://sakuratan.ddo.jp/uploader/source/date70346.lzh
- 525 名前:名前は開発中のものです。 mailto:sage [2008/02/12(火) 04:46:08 ID:XWB4jY1F]
- おー、久々にビルドしてみたら、スゴい進化してるではないか
ルーラとかまで実装されてんのな 画面上のウィンドウを生成するところは 装備ウィンドウやステータスウィンドウごとに力技で作ってるように見えるけど ウィンドウ生成部分は、もっと部品化していいんじゃないっすかね? 基本的に # とか % で長方形を作ってるだけっしょ? 難しいんかな?
- 526 名前:名前は開発中のものです。 mailto:sage [2008/02/12(火) 18:37:02 ID:oGlnsN82]
- 解凍した中のDebugフォルダの中のtest.exeクリックしたら、
「デバッグ」 「GameData\Useable\SpellList.csvが開けませんでした。」 が出て、プログラム終了してもプロセス残っててCPU100%になるんだけど、なんで? これこっちでVC入れてコンパイルしないと実行ファイル試せないの?
- 527 名前:名前は開発中のものです。 mailto:sage [2008/02/12(火) 19:09:02 ID:fyhPt8Zk]
- .\GameData\Useable\SpellList.csv
を用意してやれば
- 528 名前:はかせ [2008/02/13(水) 11:01:51 ID:husK91Sv]
- >>526
解凍したフォルダにdebugフォルダとGameDataフォルダがあると思います。 GameDataフォルダをdebugフォルダに入れてからtest.exeを起動するとできると思います。 プロセスが残ってる件は、これからやっつけます orz
- 529 名前:はかせ [2008/02/15(金) 08:08:59 ID:Vnl/Si0U]
- 城などの入り口の位置を修正しました。
大きい扉を実装しました。 移動中に【e】を押すとエンカウントを無効にできます。 tp://sakuratan.ddo.jp/uploader/source/date70703.lzh 岬の洞窟に入った時に二人目以降のグラがおかしいです。 原因は分かっているので、それを上手いこと修正したいと思います。
- 530 名前:名前は開発中のものです。 mailto:sage [2008/02/15(金) 09:04:54 ID:5vT1hdTU]
- インテリoffってどこの馬鹿だよ…
- 531 名前:名前は開発中のものです。 mailto:sage [2008/02/15(金) 19:41:30 ID:mWyYNOjz]
- 本人が余計なものと認識しているんだから仕方ない。
|

|