0

私はゲームを開発しており、ツリークラスがあります。このクラスには、ツリーに残っている木材の量を保持する「wood」と呼ばれる int があります。すべてのイベントを追跡する機能もあります。値がゼロになったらこのオブジェクトを削除したい(ちなみにCodeBlocksとSDLライブラリを使っています)

handle_events 関数:

void Tree::handle_events(SDL_Event event, int MouseX, int MouseY, int Xoffset, int Yoffset) {
if(event.type == SDL_MOUSEBUTTONDOWN) {
    if( event.button.button == SDL_BUTTON_LEFT ) {

        if((MouseX >= (xPos - Xoffset)) && (MouseX <= ((xPos + 50) - Xoffset)) && (MouseY >= (yPos - Yoffset)) && (MouseY <= ((yPos + 50) - Yoffset))) {
            selected = true;
        } else {
            selected = false;
        }
    }
}

if(wood <= 0) {
    delete this;
}

}

ゲームを起動して「木」がゼロになっても、木はまだそこにあり、機能しています。助けてください

編集:

while(SDL_PollEvent(&event)) {
        MouseX = event.motion.x;
        MouseY = event.motion.y;

        menu_button.handle_button_events(event, MouseX, MouseY);
        exit_button.handle_button_events(event, MouseX, MouseY);

        for(int i = 0; i < trees.size(); i++)
        {
            trees[i].handle_events(event, MouseX, MouseY, Xoffset, Yoffset);
        }

        for(int i = 0; i < stones.size(); i++)
        {
            stones[i].handle_events(event, MouseX, MouseY, Xoffset, Yoffset);
        }

        for(int i = 0; i < bushes.size(); i++)
        {
            bushes[i].handle_events(event, MouseX, MouseY, Xoffset, Yoffset);
        }

        if(event.type == SDL_QUIT) {
            running = false;
        }

        if(event.type == SDL_KEYDOWN) {
            switch(event.key.keysym.sym) {
            case SDLK_ESCAPE:
                running = false;
            }
        }

        if(exit_button.clicked) {
            running = false;
        }

        if(menu_button.clicked) {
            paused = true;
        }


    }

Trees は、マップ上のすべての木を含むベクトルです。

4

2 に答える 2