C++ 将值传递给布尔数组
我正在开发一个简单的2d游戏引擎,并试图建立一个系统,让玩家模型可以在特定对象后面移动。每当一个非玩家对象被闪电显示到屏幕上时,它的X和Y都会被记录在一个数组中,以便以后使用。因此,我建立了一个系统,如果玩家X和玩家Y以某种方式相对于环境对象的X和Y,环境对象通常不会立即闪烁,它会在玩家角色之前立即闪烁,以便玩家角色位于对象上方。我将一个真值交给一个布尔数组,而不是blit。我有一个int变量,每当一个对象被blit时,它会变大1,这样不同的X、Y和布尔值就会与数组中的某个位置相关联。从本质上讲,系统如下所示:C++ 将值传递给布尔数组,c++,arrays,boolean,C++,Arrays,Boolean,我正在开发一个简单的2d游戏引擎,并试图建立一个系统,让玩家模型可以在特定对象后面移动。每当一个非玩家对象被闪电显示到屏幕上时,它的X和Y都会被记录在一个数组中,以便以后使用。因此,我建立了一个系统,如果玩家X和玩家Y以某种方式相对于环境对象的X和Y,环境对象通常不会立即闪烁,它会在玩家角色之前立即闪烁,以便玩家角色位于对象上方。我将一个真值交给一个布尔数组,而不是blit。我有一个int变量,每当一个对象被blit时,它会变大1,这样不同的X、Y和布尔值就会与数组中的某个位置相关联。从本质上讲
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);
}
你能更准确地描述一下你的问题,实际输出和预期输出吗?基本上,当我的播放器X和Y在一定距离内时,该函数清楚地识别出它在该距离内,因为对象停止了闪烁,但是出现了一些问题,因为应该发生的是对象没有停止闪烁,它只会在播放器被闪烁后闪烁。请添加更多上下文,例如,在pastebin.com或ideone.com上。BlitModelLap是什么类型的?是的,感谢您的更改,但是需要更多信息输入数据是什么。函数是如何调用的。没有上下文,很难理解细节。您能否提供一个调用相应错误行为的主函数。
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};