ページ 11

「敵にショットを撃たせてみよう」でエラーが出てしまいます。

Posted: 2012年5月04日(金) 09:02
by pingguo
「敵にショットを撃たせてみよう」を見て、プログラムを実行してみると
1>------ ビルド開始: プロジェクト: RyuJin, 構成: Debug Win32 ------
1>コンパイルしています...
1>cl : コマンド ライン warning D9035 : オプション 'Wp64' の使用は現在推奨されていません。今後のバージョンからは削除されます。
1>load.cpp
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : error C2078: 初期化子の数が多すぎます。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : error C2440: '初期化中' : 'int [10]' から 'int' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(76) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(76) : error C2374: 'LoadDivGraph' : 再定義されています。2 回以上初期化されています。
1> c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : 'LoadDivGraph' の宣言を確認してください。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(76) : error C2078: 初期化子の数が多すぎます。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(76) : error C2440: '初期化中' : 'int [10]' から 'int' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(77) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(77) : error C2374: 'LoadDivGraph' : 再定義されています。2 回以上初期化されています。
1> c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : 'LoadDivGraph' の宣言を確認してください。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(77) : error C2078: 初期化子の数が多すぎます。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(77) : error C2440: '初期化中' : 'int [10]' から 'int' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(78) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(78) : error C2374: 'LoadDivGraph' : 再定義されています。2 回以上初期化されています。
1> c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : 'LoadDivGraph' の宣言を確認してください。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(78) : error C2078: 初期化子の数が多すぎます。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(78) : error C2440: '初期化中' : 'int [10]' から 'int' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(79) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(79) : error C2374: 'LoadDivGraph' : 再定義されています。2 回以上初期化されています。
1> c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : 'LoadDivGraph' の宣言を確認してください。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(79) : error C2078: 初期化子の数が多すぎます。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(79) : error C2440: '初期化中' : 'int [10]' から 'int' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(80) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(80) : error C2374: 'LoadDivGraph' : 再定義されています。2 回以上初期化されています。
1> c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : 'LoadDivGraph' の宣言を確認してください。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(80) : error C2078: 初期化子の数が多すぎます。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(80) : error C2440: '初期化中' : 'int [10]' から 'int' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(81) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(81) : error C2374: 'LoadDivGraph' : 再定義されています。2 回以上初期化されています。
1> c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : 'LoadDivGraph' の宣言を確認してください。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(81) : error C2078: 初期化子の数が多すぎます。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(81) : error C2440: '初期化中' : 'int [10]' から 'int' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(82) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(82) : error C2374: 'LoadDivGraph' : 再定義されています。2 回以上初期化されています。
1> c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : 'LoadDivGraph' の宣言を確認してください。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(82) : error C2078: 初期化子の数が多すぎます。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(82) : error C2440: '初期化中' : 'int [10]' から 'int' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(83) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(83) : error C2374: 'LoadDivGraph' : 再定義されています。2 回以上初期化されています。
1> c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : 'LoadDivGraph' の宣言を確認してください。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(83) : error C2078: 初期化子の数が多すぎます。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(83) : error C2440: '初期化中' : 'int [10]' から 'int' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(84) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(84) : error C2374: 'LoadDivGraph' : 再定義されています。2 回以上初期化されています。
1> c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(75) : 'LoadDivGraph' の宣言を確認してください。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(84) : error C2078: 初期化子の数が多すぎます。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(84) : error C2440: '初期化中' : 'int [10]' から 'int' に変換できません。
1> この変換が可能なコンテキストはありません。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(87) : error C2466: サイズが 0 の配列を割り当てまたは宣言しようとしました。
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(87) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\load.cpp(87) : error C2440: '初期化中' : 'int' から 'int [100]' に変換できません。
1> 配列型への変換はありませんが、参照またはポインタから配列への変換があります。
1>graph.cpp
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\graph.cpp(36) : error C3861: 'graph_bullet': 識別子が見つかりませんでした
1>shot.cpp
1>c:\users\hayate\desktop\龍神録\project\1章\mydat\source\shot.cpp(30) : error C3861: 'shot_calc': 識別子が見つかりませんでした
1>コードを生成中...
1>ビルドログは "file://c:\Users\hayate\Desktop\龍神録\project\1章\Debug\BuildLog.htm" に保存されました。
1>RyuJin - エラー 44、警告 1
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
このようになってしまいます。どうすればいいでしょうか?

Re: 「敵にショットを撃たせてみよう」でエラーが出てしまいます。

Posted: 2012年5月04日(金) 10:41
by softya(ソフト屋)
これは実行エラーではなくコンパイルエラーですね。
ソースコードは全部自分で入力されたのでしょうか?

たくさんエラーが出ている部分は、ここだと思うのですが

コード:

        //弾画像のファイルを読み込む
        LoadDivGraph( "../dat/img/bullet/b0.png" , 5 , 5 , 1 , 76 , 76 , img_bullet[0] ) ;
        LoadDivGraph( "../dat/img/bullet/b1.png" , 6 , 6 , 1 , 22 , 22 , img_bullet[1] ) ;
        LoadDivGraph( "../dat/img/bullet/b2.png" , 10 , 10 , 1 , 5 , 120 , img_bullet[2] ) ;
        LoadDivGraph( "../dat/img/bullet/b3.png" , 5 , 5 , 1 , 19 , 34 , img_bullet[3] ) ;
        LoadDivGraph( "../dat/img/bullet/b4.png" , 10 , 10 , 1 , 38 , 38 , img_bullet[4]  ) ;
        LoadDivGraph( "../dat/img/bullet/b5.png" , 3 , 3 , 1 , 14 , 16 , img_bullet[5] ) ;
        LoadDivGraph( "../dat/img/bullet/b6.png" , 3 , 3 , 1 , 14 , 18 , img_bullet[6] ) ;
        LoadDivGraph( "../dat/img/bullet/b7.png" , 9 , 9 , 1 , 16 , 16 , img_bullet[7] ) ;
        LoadDivGraph( "../dat/img/bullet/b8.png" , 10 , 10 , 1 , 12 , 18 ,img_bullet[8] ) ;
        LoadDivGraph( "../dat/img/bullet/b9.png" , 3 , 3 , 1 , 13 , 19 , img_bullet[9] ) ;
打ち間違いはありませんか?
それと打ち込んだ部分が間違っていませんか?(前後関係)

エラーが出ているソースファイルをcodeタグを使って貼り付けてもらえると何か分かるかもしれません。

Re: 「敵にショットを撃たせてみよう」でエラーが出てしまいます。

Posted: 2012年5月04日(金) 11:09
by pingguo
load.cppのコードはこうなっているのですが

コード:

#include "../include/GV.h"

void load(){
        img_board[10] = LoadGraph("../dat/img/board/10.png");
        img_board[11] = LoadGraph("../dat/img/board/11.png");
        img_board[12] = LoadGraph("../dat/img/board/12.png");
        img_board[20] = LoadGraph("../dat/img/board/20.png");
        LoadDivGraph( "../dat/img/char/0.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
        LoadDivGraph( "../dat/img/enemy/0.png" , 9 , 3 , 3 , 32 , 32 , img_enemy[0] ) ;
}

//敵の出現情報をエクセルから読み込んで格納する関数
void load_story(){
        int n,num,i,fp;
        char fname[32]={"../dat/csv/13章/storyH0.csv"};
        int input[64];
        char inputc[64];

        fp = FileRead_open(fname);//ファイル読み込み
        if(fp == NULL){
                printfDx("read error\n");
                return;
        }
        for(i=0;i<2;i++)//最初の2行読み飛ばす
                while(FileRead_getc(fp)!='\n');

        n=0 , num=0;
        while(1){
                for(i=0;i<64;i++){
                        inputc[i]=input[i]=FileRead_getc(fp);//1文字取得する
                        if(inputc[i]=='/'){//スラッシュがあれば
                                while(FileRead_getc(fp)!='\n');//改行までループ
                                i=-1;//カウンタを最初に戻して
                                continue;
                        }
                        if(input[i]==',' || input[i]=='\n'){//カンマか改行なら
                                inputc[i]='\0';//そこまでを文字列とし
                                break;
                        }
                        if(input[i]==EOF){//ファイルの終わりなら
                                goto EXFILE;//終了
                        }
                }
                switch(num){
                        case 0: enemy_order[n].cnt      =atoi(inputc);break;
                        case 1: enemy_order[n].pattern  =atoi(inputc);break;
                        case 2: enemy_order[n].knd      =atoi(inputc);break;
                        case 3: enemy_order[n].x        =atof(inputc);break;
                        case 4: enemy_order[n].y        =atof(inputc);break;
                        case 5: enemy_order[n].sp       =atof(inputc);break;
                        case 6: enemy_order[n].bltime   =atoi(inputc);break;
                        case 7: enemy_order[n].blknd    =atoi(inputc);break;
                        case 8: enemy_order[n].col      =atoi(inputc);break;
                        case 9: enemy_order[n].hp       =atoi(inputc);break;
                        case 10:enemy_order[n].blknd2   =atoi(inputc);break;
                        case 11:enemy_order[n].wait     =atoi(inputc);break;
                        case 12:enemy_order[n].item_n[0]=atoi(inputc);break;
                        case 13:enemy_order[n].item_n[1]=atoi(inputc);break;
                        case 14:enemy_order[n].item_n[2]=atoi(inputc);break;
                        case 15:enemy_order[n].item_n[3]=atoi(inputc);break;
                        case 16:enemy_order[n].item_n[4]=atoi(inputc);break;
                        case 17:enemy_order[n].item_n[5]=atoi(inputc);break;
                }
                num++;
                if(num==18){
                        num=0;
                        n++;
                }
        }
EXFILE:
        FileRead_close(fp);
}

//弾画像のファイルを読み込む
        LoadDivGraph( "../dat/img/bullet/b0.png" , 5 , 5 , 1 , 76 , 76 , img_bullet[0] ) ;
        LoadDivGraph( "../dat/img/bullet/b1.png" , 6 , 6 , 1 , 22 , 22 , img_bullet[1] ) ;
        LoadDivGraph( "../dat/img/bullet/b2.png" , 10 , 10 , 1 , 5 , 120 , img_bullet[2] ) ;
        LoadDivGraph( "../dat/img/bullet/b3.png" , 5 , 5 , 1 , 19 , 34 , img_bullet[3] ) ;
        LoadDivGraph( "../dat/img/bullet/b4.png" , 10 , 10 , 1 , 38 , 38 , img_bullet[4]  ) ;
        LoadDivGraph( "../dat/img/bullet/b5.png" , 3 , 3 , 1 , 14 , 16 , img_bullet[5] ) ;
        LoadDivGraph( "../dat/img/bullet/b6.png" , 3 , 3 , 1 , 14 , 18 , img_bullet[6] ) ;
        LoadDivGraph( "../dat/img/bullet/b7.png" , 9 , 9 , 1 , 16 , 16 , img_bullet[7] ) ;
        LoadDivGraph( "../dat/img/bullet/b8.png" , 10 , 10 , 1 , 12 , 18 ,img_bullet[8] ) ;
        LoadDivGraph( "../dat/img/bullet/b9.png" , 3 , 3 , 1 , 13 , 19 , img_bullet[9] ) ; 

        //敵のショット音を読み込む
        sound_se[0]=LoadSoundMem("../dat/se/enemy_shot.wav");
どこが違うのでしょうか?
度々すいません。

Re: 「敵にショットを撃たせてみよう」でエラーが出てしまいます。

Posted: 2012年5月04日(金) 11:18
by softya(ソフト屋)
C言語の勉強はされましたか?
龍神録はC言語の基礎を理解していることが前提になっていますので言われなくても分かるだろうって部分はフォローされていません。
エラーと成っている部分は関数外にLoadDivGraphが書かれているためです。これはC言語の文法として致命的な書き方です。
再確認のためC言語の関数を勉強されたほうが良いでしょう。

で修正の仕方ですが、「10.敵を表示させてみよう」でも同じ様な箇所に追加しているはずなので、同じ場所に追加しましょう。

Re: 「敵にショットを撃たせてみよう」でエラーが出てしまいます。

Posted: 2012年5月04日(金) 11:45
by pingguo
解決しました。
私の勉強不足でした。ありがとうございました。