Ive a laissé tomber l'utilisation de ce vecteur. (sera l'aide de vecteurs dans l'environnement d'exécution principal, toutefois). Maintenant, je me fais des erreurs vraiment bizarre.
#ifndef levelsFile
#define levelsFile
//struct used to hold the block locations and healths for each level
struct SblockData{
u16 location; //8 bit x and y locations in a 16 bit value
u8 hp; //hits to destroy
//constructor
SblockData(u8 x,u8 y,u8 setHp){
location = blockPos(x,y);
hp = setHp;
}
//returns a 16 bit value for the block's co-ordinates
u16 blockPos(u8 x,u8 y){
//put x in the left half and y in the right half
return (x<<8)|y;
}
};
//struct used to hold each level
struct SlevelData{
//level id
u8 id;
//dynamic array of blocks
SblockData* blocks;
//number of blocks
u8 blockCount;
//set level data
void setId(u8 setId){
id = setId;
blockCount = 0;
}
//adds a block to the level
void addBlock(u8 x,u8 y,u8 hp){
blocks[blockCount] = SblockData(x,y,hp);
blockCount ++;
}
};
const u8 numLevels = 3;
const SlevelData* levelData;
for(int i=0;i < numLevels;i++)
SlevelData[i] = new SlevelData;
levelData[0].setId(0);
levelData[0].addBlock(32,32,1);
levelData[0].addBlock(48,32,1);
levelData[0].addBlock(64,32,1);
levelData[0].addBlock(80,32,1);
levelData[0].addBlock(96,32,1);
levelData[1].setId(1);
levelData[1].addBlock(112,64,2);
levelData[1].addBlock(112,72,2);
levelData[1].addBlock(112,80,2);
levelData[1].addBlock(112,88,2);
levelData[2].setId(2);
levelData[2].addBlock(64,64,4);
levelData[2].addBlock(80,72,3);
levelData[2].addBlock(96,80,2);
levelData[2].addBlock(112,88,1);
levelData[2].addBlock(128,88,1);
levelData[2].addBlock(144,80,2);
levelData[2].addBlock(160,72,3);
levelData[2].addBlock(176,64,4);
#endif