おしえてください。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ZIKI

おしえてください。

#1

投稿記事 by ZIKI » 15年前

http://www.play21.jp/board/formz.cgi?ac ... &rln=45634
で、私の質問の仕方が間違っていると教わったので、反省し、それを生かして投稿さしていただきます。

私は今「龍神録プログラミングの館」の10章、「敵を表示させてみよう」で、
敵が出ない。というところで困っています。

私はvisual c++ 2008 edition を使っています。

10章の前の9章「キャラクタの移動制御をしてみよう」までをコピペし、デバッグしたときには、
正常に作動しました。
その後10章をコピペして、デバッグしてもエラー、警告がでて、9章の時と同じ事しかできません。

出力されたエラーは、多いので添付さしてもらいます。


反省を生かせたと自分では思いますが、足りない部分があったらコメントください。

ZIKITETRY

Re:おしえてください。

#2

投稿記事 by ZIKITETRY » 15年前

名前の場所がまた変になってます。すみません。
削除キーになにも入れてなかったので編集できないので書かして貰います。
私の名前は、ZIKIではありません、「ZIKITETRY」です

SooA

うっかり消してしまったんだろう。

#3

投稿記事 by SooA » 15年前

再定義しようとしてエラー
 ↓
なぜ再定義されているのか?
 ↓
ヒント「5章」

sizuma

Re:うっかり消してしまったんだろう。

#4

投稿記事 by sizuma » 15年前

おそらく写し間違えがほとんどでしょう。
(変更しなくてはいけないのに、そのままぜんぶコピペしたり)
もう一度出来なくなった章の最初にもどってまた読み直す、ってのがいいとは思いますが、動く状態のものはないですかね?

龍神録プログラミングの館のトップで全章のプロジェクトが一括でDL出来ます
一応リンクを
http://dixq.net/rp/zip/project.zip

僕はプログラミングの館を読んでないので、SooAさんのアドバイスに従ってちょっと見直してみては?
どうしても分からなかったら、何処がミスってるのかをエラーが発生した行を見直したり、10章のソースを見ながら修正すれば直ると思いますよ。

ZIKITETRY

Re:うっかり消してしまったんだろう。

#5

投稿記事 by ZIKITETRY » 15年前

返信ありがとうございます。
SooAさんにはヒントを貰いましたが、すみません。分かりません。
sizumaさんにも言われたとおり写し間違えだと思うのですが、
写し間違えて、いつも投稿していたら切りがない。と自分で思ったので、
龍神録の章の一番下の、「この章までのプログラムを一括ダウンロード」をダウンロードしました。



最初から作るのではなく、作られている物を軸にして変換しながら作る事にします。



ですがこれもおかしいです。
ダウンロードして解凍し、デバッグしたのですが、黒い画面しか出ません。
これは自分が間違えているんですかね?

sizuma

Re:うっかり消してしまったんだろう。

#6

投稿記事 by sizuma » 15年前

10章のプロジェクトを実行しましたか?
おそらく最初のほうのプロジェクトだと、画面を表示する、とかの項目ではないのですかね?
それ以外だったら僕にはわからないです。

SooA

Re:うっかり消してしまったんだろう。

#7

投稿記事 by SooA » 15年前

答えを書くと main.cpp の一行目、

誤 define GLOBAL_INSTANCE
  ↓
正 #define GLOBAL_INSTANCE

sizuma

Re:うっかり消してしまったんだろう。

#8

投稿記事 by sizuma » 15年前

>SooAさん
>誤 define GLOBAL_INSTANCE
気の利いたエディタなら、色が違うからすぐわかりますよね。
一番上だし。

じゃぁ僕もぱっと見て

>\project\1章\mydat\source\ini.cpp(21) : error C2084: 関数 'void first_ini(void)' は既に本体を持っています

おそらくコピーしたときにもともとあったやつを消さないで書いたから、前の章でやったのが残ってるのでは?
ini.cpp(21)とありますよね
ini.cppの21行目より上ですでに定義されてるよってことでしょう。(もしくはincludeしたファイル内)
既存の関数に処理を付け加える部分を、そのままコピーしてるから動かないのだと。
こういう風にまずはエラーが出てる行のあたりをデバッグしましょう。
それでも見つからなかったら(実行時エラーとか)ブレークポイントを使って・・・となるんですけど、これはおいおい。


1>f:\project\1章\mydat\source\load.cpp(11) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>f:\project\1章\mydat\source\load.cpp(11) : error C2365: 'LoadDivGraph' : 再定義; 以前の定義は '関数' でした。
1> f:\project\include\dxlib.h(1594) : 'LoadDivGraph' の宣言を確認してください。
1>f:\project\1章\mydat\source\load.cpp(11) : error C2078: 初期化子の数が多すぎます。
1>f:\project\1章\mydat\source\load.cpp(11) : error C2440: '初期化中' : 'int [9]' から 'int' に変換できません。

明らかにこの行はおかしいって言ってます。

1>c:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(19) : error C2146: 構文エラー : ';' が、識別子 'GLOBAL_INSTANCE' の前に必要です。
1>c:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(19) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(19) : error C2144: 構文エラー : '__w64 unsigned int' は ';' によって先行されなければなりません。
1>c:\program files\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(19) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません

これがおそらく#defineの#が抜けてることによるエラーなんじゃないかな?と思います。

1>f:\project\1章\mydat\source\main.cpp(25) : error C3861: 'ini': 識別子が見つかりませんでした
1>f:\project\1章\mydat\source\main.cpp(31) : error C3861: 'enemy_main': 識別子が見つかりませんでした
ソースコードの上をたどっていって、おそらく関数の
ini()とenemymain()の関数プロトタイプがないですね。
多分includeされてるヘッダの中にまとめてあるはず。


・・・あぁ、ありました。
10章のページの実行結果の上

--function.hに以下を追加--

GLOBAL void enemy_main();
GLOBAL void ini();


とあります。
これが抜けてるのでしょう。
画像

ZIKITETRY

Re:うっかり消してしまったんだろう。

#9

投稿記事 by ZIKITETRY » 15年前

ありがとうございます。
SooAさんの言うとおり、#を付けたら正常にできました。
sizumaさんの言うとおり、10章を開くとできました。

実は、1章のファイルしか開いたことが無くて、何処が間違えているか
自分で調べることができませんでした。
皆さんありがとうございました。
これからはあまり質問しなくてもすむと思います

sizuma

Re:うっかり消してしまったんだろう。

#10

投稿記事 by sizuma » 15年前

普通はエラーメッセージからデバッグします。
別に龍神録だけつくれればいいなら一括DLのプロジェクトを見て訂正してもいいとは思いますが、いろいろ自分の力で出来るようにしたほうがいいですよ。
ここで何をしているのか?
というのを理解しながら解説ページのコードを書いたり、写したりしたほうがいいと思います。

ゲームが自分で作れるようになりたいなら、C言語の文法も並行して学習するべきでしょう。

あと、次回何か問題が起きたら、何で困ってるのかをトピックのタイトルにしましょう。
今回の場合ですと、

龍神録プログラミングの館:10章について
とか、
エラーのデバッグの仕方がについて
とか。

僕は質問したことがないので、ほんとうにこれでいいのかは考える必要がありますけど
少なくとも「おしえてください」よりは質問内容が分かりやすいですよね。

閉鎖

“C言語何でも質問掲示板” へ戻る