分かりません

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

分かりません

#1

投稿記事 by ロクサス » 14年前

コード:

#include <GConsoleLib.h>
#include <stdio.h>

//マップデータ
#define MAXWIDTH 10
#define MAXHEIGHT 7
int g_mapdata[MAXHEIGHT][MAXWIDTH] = {
	// 0 1 2 3 4 5 6 7 8 9
	{ 1, 0, 1, 1, 1, 1, 1, 1, 1, 1},//0
	{ 1, 0, 0, 1, 2, 0, 0, 1, 3, 1},//1
	{ 1, 1, 0, 1, 1, 1, 0, 1, 0, 1},//2
	{ 1, 0, 0, 0, 0, 0, 0, 1, 0, 1},//3
	{ 1, 0, 1, 1, 1, 1, 1, 1, 0, 1},//4
	{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1},//5
	{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},//6
};

//マップの部品の画像
char *g_images[] = {
  "C:\\GConsole追加ファイル\\sampleimg\\chap5-1-field.png",
  "C:\\GConsole追加ファイル\\sampleimg\\chap5-1-wall.png",
  "C:\\GConsole追加ファイル\\sampleimg\\chap5-1-goal.png",
  "C:\\GConsole追加ファイル\\sampleimg\\chap5-1-key.png",
  "C:\\GConsole追加ファイル\\sampleimg\\chap5-1-man.png"
};

//主人公の位置
int g_x = 1, g_y = 0;
int g_keyflag = 0; //鍵を拾ったフラグ

//関数プロトタイプ宣言
void DrawMap();
void RedrawMap(int, int, int, int);

int main(){
	gcls();
	gfront();

	DrawMap(); //マップ全体を表示

	while(1){
		glocate(0,19); gcolor(128,0,0);
		gprintf("コマンド(左A、上W、下S、右D)?    ");
		glocate(32,19);
		char ch = ggetchar();
		int newx=g_x, newy=g_y;
		switch(ch){
			case 'W':
			case 'w':
				newy--;
				break;
			case 'S':
			case 's':
				newy++;
				break;
            case 'A':
            case 'a':
				newx--;
				break;
            case 'D':
            case 'd':
				newx++;
				break;
		}
		//移動チェック
		if(newx >=0 && newx < MAXWIDTH && newy >=0 && newy < MAXHEIGHT){
			//壁かどうかチェック
			if(g_mapdata[newy][newx]!=1){
				//ゴールと鍵の処理
				switch(g_mapdata[new_y][new_x]){
					case 3://鍵
						g_keyflag = 1;     //鍵フラグオン
						g_mapdata[new_x][new_y] = 0; //鍵を消す
					    break;
					case 2: //ゴール
						break;
				}
				RedrawMap(g_x, g_y, newx, newy);
				g_x = newx;
				g_y = newy;
			}
		}
	}
}
//マップ再描画
void RedrawMap(int oldx, int oldy, int newx, int newy){
	gimage(g_images[g_mapdata[oldy][oldx]], oldx*62, oldy*62);
	gimage(g_images[4], newx*62, newy*62);
}
//マップ表示
void DrawMap(){
	for(int y=0; y<MAXHEIGHT; y++){
		for(int x=0; x<MAXWIDTH; x++){
			if(x == g_x && y == g_y){
              //主人公表示
	          gimage(g_images[4], g_x*62, g_y*62);
	         }else{
			gimage(g_images[g_mapdata[y][x]], x*62, y*62);
			}
		}
	}
}
(70) : error C2065: 'new_y' : 定義されていない識別子です。
(70) : error C2065: 'new_x' : 定義されていない識別子です。
(73) : error C2065: 'new_x' : 定義されていない識別子です。
(73) : error C2065: 'new_y' : 定義されていない識別子です。
これらのエラーがでます。
誰かわかる人がいましたら返答お願いします。

non
記事: 1097
登録日時: 14年前

Re: 分かりません

#2

投稿記事 by non » 14年前

> error C2065: 'new_y' : 定義されていない識別子です。

new_yという変数をあなたは使っているけど、使う前に定義していませんよという意味です。
newyの間違いの可能性もあります。
non

ロクサス

Re: 分かりません

#3

投稿記事 by ロクサス » 14年前

すいません…。
分かりませんでした。

アバター
沖 滉均
記事: 237
登録日時: 14年前
住所: K県F市

Re: 分かりません

#4

投稿記事 by 沖 滉均 » 14年前

エラーの原因についてはnonさんが書いています通りnew_yやnew_xが定義されていませんということですね。
また、本件に限らずいくつか言いたいことがあるのですが、

まず、既存の問題が解決されないまま放置されていること(下記2件)
http://dixq.net/forum/viewtopic.php?f=3&t=8628
http://dixq.net/forum/viewtopic.php?f=3&t=8627
解決しているのであれば解決にチェックを入れてください。

同じく上記2件と今回のタイトルが「分かりません」だけで同じ質問なのか異なる質問なのかが判断しにくいこと
同じ問題に当たった人が過去の記事を検索しやすいように、概要が分かるようなタイトルをつけていただくと良いと思います。

あと、毎回ですがコードとビルドエラーのログが貼り付けられているだけというのが多いことと
今回はエラーの行や理由まで日本語で表示されていますね。
ロクサス さんが書きました: (70) : error C2065: 'new_y' : 定義されていない識別子です。
(70) : error C2065: 'new_x' : 定義されていない識別子です。
(73) : error C2065: 'new_x' : 定義されていない識別子です。
(73) : error C2065: 'new_y' : 定義されていない識別子です。
一番上は70行目に'new_y'という定義されていない識別子(変数など)とそのまま読むことができますね。
(但し、行数は必ずしも一致しない可能性があります)

エラーが発生する度に毎回聞くのではなくて、自分で調べる癖をつけた方が良いですよ。
毎回聞いて、そこを直してとやっていればそのうち全部直るかもしれませんが、
いつまで経っても自分ひとりでコードを書くことはできるようにはなりませんし
常時すぐに教えてくれる人がいるとも限りません。
今後のためにも自分で調べて自分で覚えていただけると良いと思います。
There is no royal road to learning.
codeタグで指定できる言語
画像

ロクサス

Re: 分かりません

#5

投稿記事 by ロクサス » 14年前

わっかりました!!
さんくす!!

閉鎖

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