我有一个猫游戏,我一直在pygame工作,我现在用c ++ SDL2编写,它们是相似的。但我有一个奇怪的具体问题。我的level.cc类中的变量不会在move()函数中产生旧的+ = new我认为它在某处设置为0或者我的范围已关闭但我只是丢失了。我将发布相关文件,然后链接到我的github。感谢您的时间和帮助。
level.cc文件:
void Level::move(int newx){
groundX += newx;
}
和cat.cc文件:
void Cat::move(int screenSize, Level l){
if((catmX + mVelX > 0) && (catmX + mVelX + (catwidth / 2) < (screenSize * .70))){
catmX += mVelX;
} else if(catmX + mVelX + (catwidth / 2) >= (screenSize * .70)){
l.move(CAT_VEL);
catmY += mVelY;
}
}
和主要:
string grndLoc = "src/grass.png";
Level level1(extra.loadTexture(grndLoc, extra.getRen()), extra.getHeight());
string backgroundImage = "src/sky.png";
SDL_Texture *bck = extra.loadTexture(backgroundImage, extra.getRen());
if(bck == nullptr){
extra.destroyer(bck);
extra.quitGame();
return 1;
}
SDL_Event e;
bool quit = false;
while(!quit){
while(SDL_PollEvent(&e)){
if(e.type == SDL_QUIT){
quit = true;
}
switch(e.key.keysym.sym){
case SDLK_ESCAPE:
quit = true;
break;
}
catplayer.handleEvent(e);
}
SDL_RenderClear(extra.getRen());
extra.renderTexture(bck, extra.getRen(), 0, 0, extra.getWidth(), extra.getHeight());
level1.rend(extra);
extra.renderTexture(catplayer.getTexture(), extra.getRen(), catplayer.getX(), catplayer.getY(), catplayer.getclip());
SDL_RenderPresent(extra.getRen());
catplayer.move(extra.getWidth(), level1);
答案 0 :(得分:0)
我的老师提到我可能在某处调用了构造函数!我发现我传递的是关卡的副本,而不是指向关卡的指针!
void Cat::move(int screenSize, Level l){
所以我把它改成了
void Cat::move(int screenSize, Level *l){
我更新了一些其他内容以反映我现在正在使用指针并且已经修复了!谢谢所有回复的人<3