我正在開發一個遊戲,我有一個樹類。這個類有一個叫做「木」的int,它保留了樹中留下的木材數量。還有一個功能可以跟蹤所有事件。當值達到0我想刪除這個對象(順便說一句,我使用的代碼塊和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;
}
}
樹是包含地圖
你也可以說經過SDL_Event到'樹:: handle_events()'的代碼?你有一個析構函數,'Tree ::〜Tree()'? – svk
你確定你叫這個方法嗎? –
我有一個空的析構函數Tree ::〜Tree(){}。至於傳遞的代碼,它位於主遊戲循環中。我把它張貼在第二個 – user2466076