エラーが出て実行されない(龍神録プログラミングの館を進行中)

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

エラーが出て実行されない(龍神録プログラミングの館を進行中)

#1

投稿記事 by シルム » 9年前

質問失礼します。
最近C++の勉強を始めた者で、龍神録プログラミングの館でシューティングゲームの製作練習をさせていただいていたのですが、
七章の『ボードを表示してみよう』のところで実行を行ってもエラーとなり、実行できません。
エラーコードは
エラー 1 error C2039: 'cnt' : 'ch_t' のメンバーではありません。
エラー 2 error C2039: 'cnt' : 'ch_t' のメンバーではありません。
3 IntelliSense: class "ch_t" にメンバー "cnt" がありません
4 IntelliSense: class "ch_t" にメンバー "cnt" がありません
以上の4つで、char.cppのコードが

コード:

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

void calc_ch(){
        ch.cnt++;
        ch.img=(ch.cnt%24)/6;
}
です。4行目と5行目の cnt に赤波線が表示されている状態です。

どなたかご指摘よろしくお願いします。

以下、七章までで書き加えた現在のソースコードです(初心者も同然なので原文をそのまま書き込んでます)

<main.cpp>

コード:

#define GLOBAL_INSTANCE 
#include "../include/GV.h"

//ループで必ず行う3大処理
int ProcessLoop(){
        if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
        if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
        GetHitKeyStateAll_2();//現在のキー入力処理を行う
        return 0;
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化

    while(ProcessLoop()==0){//メインループ
                switch(func_state){
                        case 0:
                                load();         //データロード
                                first_ini();//初回の初期化
                                func_state=100;
                                break;
                        case 100:
                                calc_ch();
                                graph_main();//描画メイン
                                break;
                        default:
                                printfDx("不明なfunc_state\n");
                                break;
                }

                if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
    ScreenFlip();//裏画面反映
    }

    DxLib_End();//DXライブラリ終了処理
    return 0;
}
<key.cpp>

コード:

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

unsigned int stateKey[256];

int GetHitKeyStateAll_2(){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key[i]==1) stateKey[i]++;
        else                            stateKey[i]=0;
    }
    return 0;
}

int CheckStateKey(unsigned char Handle){
        return stateKey[Handle];
}
<struct.h>

コード:

//キャラクターに関する構造体
typedef struct{
	int flag;		//フラグ
	int cut;		//カウンター
	int power;		//パワー
	int point;		//ポイント
	int scoer;		//スコア
	int num;		//残機数
	int mutekicnt;	//無敵状態とカウント
	int shot_mode;	//ショットモード
	int money;		//お金
	int img;		//画像
	int slow;		//スローかどうか
	double x,y;		//座標
}ch_t;
<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] ) ;
}
<graph.cpp>

コード:

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

void graph_ch(){
        DrawRotaGraphF(ch.x+FIELD_X,ch.y+FIELD_Y,1.0f,0.0f,img_ch[0][ch.img],TRUE);
}

void graph_board(){
        DrawGraph(  0,  0,img_board[10],FALSE);
        DrawGraph(  0, 16,img_board[11],FALSE);
        DrawGraph(  0,464,img_board[12],FALSE);
        DrawGraph(416,  0,img_board[20],FALSE);
}

void graph_main(){
        graph_ch();
        graph_board();
}
<function.h>

コード:

//graph.cpp
        //描画メイン
        GLOBAL void graph_main();

//key.cpp
        //現在のキー入力処理を行う
        GLOBAL int GetHitKeyStateAll_2();
        //受け取ったキー番号の現在の入力状態を返す
        GLOBAL int CheckStateKey(unsigned char Handle);

//laod.cpp
        //データのロード
        GLOBAL void load();

GLOBAL void first_ini();

GLOBAL void calc_ch();
<GV.h>

コード:

#include "../../../include/DxLib.h"
#include "define.h"

#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern 
#endif

#include "function.h"           //関数宣言

//画像用変数宣言部
GLOBAL int img_ch[2][12];       //キャラクタ画像9枚分 X2(変身用)

//構造体変数宣言部
GLOBAL ch_t ch;                 //キャラクタデータ宣言

GLOBAL int func_state;

GLOBAL int img_board[40];
<ini.cpp>

コード:

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

//一番最初の初期化
void first_ini(){
        ch.x=FIELD_MAX_X/2;
        ch.y=FIELD_MAX_Y*3/4;
}
<define.h>

コード:

#include "struct.h"

#define FIELD_MAX_X 384
#define FIELD_MAX_Y 448

#define FIELD_X 32
#define FIELD_Y 16

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 13年前
住所: 大阪府
連絡を取る:

Re: エラーが出て実行されない(龍神録プログラミングの館を進行中)

#2

投稿記事 by Hiragi(GKUTH) » 9年前

struct.h 4行目にタイプミスです。
変数が宣言されてない、とか、ありませんなどというエラーが出た時はそれを宣言している場所を探し、
そこを修正するとよいでしょう。
だいがくせい!

シルム

Re: エラーが出て実行されない(龍神録プログラミングの館を進行中)

#3

投稿記事 by シルム » 9年前

確かにタイプミスしてました。

ご指摘ありがとうございます。

実行できました。

閉鎖

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