SDL2侧滚动变量未累计

时间:2018-05-29 04:35:56

标签: c++ scroll

我有一个猫游戏,我一直在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);

https://github.com/ironsketch/catGamecpp

1 个答案:

答案 0 :(得分:0)

我的老师提到我可能在某处调用了构造函数!我发现我传递的是关卡的副本,而不是指向关卡的指针!

void Cat::move(int screenSize, Level l){

所以我把它改成了

void Cat::move(int screenSize, Level *l){

我更新了一些其他内容以反映我现在正在使用指针并且已经修复了!谢谢所有回复的人<3