SDL2 Переменная боковой прокрутки не начисляется - PullRequest
0 голосов
/ 29 мая 2018

У меня есть игра-кошка, над которой я работаю в pygame, которую я сейчас пишу на c ++ SDL2 и которая похожа.Но у меня странная специфическая проблема.Переменная в моем уровне level.cc не накапливается со старым + = new в функции move (). Я думаю, что она где-то установлена ​​в 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 голосов
/ 29 мая 2018

Мой учитель упомянул, что, возможно, я где-то звонил конструктору!Я обнаружил, что передаю копию уровня, а не указатель на уровень!

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

Поэтому я изменил его на

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

Я обновил несколько других вещей, чтобы отразить, что я сейчас использую указатель, и это исправлено!Спасибо всем, кто ответил <3 </p>

...