シンプルなローグライク ゲームの簡単なマップを作成しています。そのため、文字配列 [i] [j] からデータを受け取って、配列セルごとに作成されたオブジェクトでマップを初期化する必要があります。このような CWall、CDoor クラスは、CWall.cpp、CWall.h などの他のファイルで定義することをお勧めします。その下には、map.cpp で初期化するコードがあります。
しかし、これは正しいコーディング方法でしょうか? これにより、メモリの割り当ての問題が発生すると思います。
CObject CMap::insertObject(char character){
if (character = '*') {
CWall cwall;
return cwall;
}
if (character = 'D') {
CDoor cdoor;
return cdoor;
}
if (character = 'F') {
CFood cfood;
return cfood;
}
if (character = 'K') {
CKey ckey;
return ckey;
}
if (character = 'M') {
CMMonster cmmonster;
return cmmonster;
}
if (character = 'm') {
CMonster cmonster;
return cmonster;
}
if (character = '@') {
CPlayer cplayer;
return cplayer;
}
if (character = 'P') {
CPrincess cprincess;
return cprincess;
}
if (character = '&') {
CRock crock;
return crock;
}
if (character = 'S') {
CShield cshield
return cshield;
}
else {
CShield cshield;
return cshield;
}
}
void CMap::initialize(char arr[][COLS]){
for (int i = 0; i <= 11; i++){
for (int j = 0; j <= 38; j++){
char character = arr[i][j];
insertObject(character);
}
}
}