ここから本文です

#define _CRT_SECURE_NO_WARNINGS ローグライクのプログラミングを作っているので...

kaj********さん

2017/10/2516:08:33

#define _CRT_SECURE_NO_WARNINGS
ローグライクのプログラミングを作っているのですが
if (map[i][j]) printf("#");のところで
[error C2109: 配列または、ポインターでない変数に添字が使われました。]と
[IntelliSense

: 式には pointer-to-object 型が必要です。]
エラーが出ました
どう修正すればいいでしょうか

コードは下に載せます
#include <windows.h>
#include <Mmsystem.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include<time.h>
#include<vector>

void show_title(void);
char make_character(void);
void show_dungeon(void);
int main(void)
{
char result = 'n';
show_title();
while (result != 'y'){
result = make_character();
}
system("cls");
show_dungeon();
}
void show_title(void)
{
system("cls");
printf("無限メイキュウ(仮)\n\n");
}
char make_character(void)
{
char name[10];
char confirmation;
printf("名前の入力:");
scanf("%s", name);
printf("%sでよろしいでしょうか?:(Y/N)", name);
scanf("%*c%c", &confirmation);
if (confirmation == 'y')printf("冒険の始まりです。\n");
return confirmation;
}
void show_dungeon(void) {
class Point{ //座標
public:
int x, y;
};

class Root{ //通路
public:
Point start, end;
};

class Area{ //部屋のための領域
public:
Point start, end;

int sizeX(){
return end.x - start.x + 1;
}
int sizeY(){
return end.y - start.y + 1;
}
int size(){
return sizeX() * sizeY();
}
};

class Room{ //部屋
public:
Point start, end;

int sizeX(){
return end.x - start.x + 1;
}
int sizeY(){
return end.y - start.y + 1;
}
int size(){
return sizeX() * sizeY();
}

Point random;//通路を繋げる
Point cross[4];// 通路を伸ばす
bool gateexist[4];//方向に通路
int amountgate; //通路の数
};
class Map{
private:
int x, y;
public:
Area area[20];
Room room[20];
Root root[20];
};
enum { //サイズ
MAP_W = 30,
MAP_H = 20,
};
int i, j;
int map;
for (j = 0; j < MAP_H; j++) {
for (i = 0; i < MAP_W; i++) {
if (map[i][j]) printf("#");
else printf(" ");
};
printf("\n");
};
return ;
}

閲覧数:
45
回答数:
1

違反報告

ベストアンサーに選ばれた回答

has********さん

2017/10/2518:35:38

int map;
は整数の宣言です。
でも
if (map[i][j]) printf("#");
は配列として使っています。こんなことはできません。
従って、
int **map ;
としてmalloc関数で2次元配列を確保して使用するのが適当かと存じます。

質問した人からのコメント

2017/10/25 22:17:41

ありがとうございます

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる