将值传递给布尔数组

时间:2014-10-31 07:07:16

标签: c++ arrays boolean

我正在研究一个简单的2D游戏引擎,并且我正在尝试建立一个系统,其中玩家模型可以移动到某些对象后面。每次将非玩家对象布置到屏幕上时,其X和Y都会以数组形式记录,以便以后使用。因此,我建立了一个系统,如果玩家X和玩家Y以某种方式相对于环境对象的X和Y,则环境对象不会立即进行blitting(通常,它会立即在玩家角色之前进行blitting这样玩家角色就在对象之上)。我没有被blitted,而是将一个真值传递给一个布尔数组。我有一个int变量,每次对象blit时,它变大1,这样不同的X,Y和boolean值就与数组中的某个位置相关联。基本上,系统看起来像这样:

HDcounter += 1;

forbiddenX[HDcounter] = modelX[modelNumber] + modelXChange;
forbiddenY[HDcounter] = modelY[modelNumber] + modelYChange;
forbiddenSpriteWidth[HDcounter] = 100;
forbiddenSpriteHeight[HDcounter] = 200;
forbiddenSpriteDepth[HDcounter] = 25;

if((forbiddenX[HDcounter] <= playerXE + forbiddenSpriteWidth[HDcounter]) && (forbiddenX[HDcounter] + forbiddenSpriteWidth[HDcounter] >= playerXE) && (forbiddenY[HDcounter] <= playerYE + forbiddenSpriteWidth[HDcounter]) && (forbiddenY[HDcounter] + forbiddenSpriteHeight[HDcounter] >= playerYE + 77))
{
     pineTreeBlitAP = true;
     blitModelAP[HDcounter] = true;
}
else
{
     modelIMAGE = IBFobjectENVIRO.loadIMG("pineTree.png");
     IBFobjectENVIRO.blitIMG(modelX[modelNumber] + modelXChange, modelY[modelNumber] +   modelYChange, windowMODELS, modelIMAGE, 0, 0, 200, 200);
}

问题在于,当我尝试使用布尔数组在播放器之后对模型进行blit时,它似乎不起作用。当玩家X和Y达到阈值时,我可以得到一些事情,但我似乎无法获得在布尔数组中记录的真值,然后由我的函数使用。 这是使用它的功能:

void enviroment::blitEnviroModelsAP(SDL_Surface* BAPwindow, int modelAmount)
{
    SDL_Surface* modelAPimage;

    for(int model = 0; model < modelAmount; model++)
    {
        if((pineTreeBlitAP == true) && (blitModelAP[model] == true))
        {
            modelAPimage = IBFobjectENVIRO.loadIMG("pineTree.png");
            IBFobjectENVIRO.blitIMG(forbiddenX[model], forbiddenY[model], BAPwindow, modelAPimage, 0, 0, 200, 200);
        }
    }
}

我知道这可能是一个完全没有问题的问题,我只是想要一些帮助,因为我已经被困了将近一个星期。

编辑:以下是我的数组的声明方式。

int forbiddenX[2000] = {0}; 
int forbiddenY[2000] = {0}; 
int forbiddenSpriteHeight[2000] = {0}; 
int forbiddenSpriteWidth[2000] = {0}; 
int forbiddenSpriteDepth[2000] = {0};
int blitModelAP[2000] = {false}; 

0 个答案:

没有答案