我創建了一個俄羅斯方塊遊戲,您可以在遊戲結束後重新啓動遊戲。我用goto實現了這個快速和骯髒(見代碼)。 Game
類依賴於析構函數,這些調用與這些goto的?這有多糟糕,是否可以接受,或者我該怎麼做?這是怎麼回事?
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
// initiate sdl
sdl_init();
// seed rng
srand(time(NULL));
newgame: // new game label
Game game(GAME_WIDTH, GAME_HEIGHT, 1, screen);
// keydowns
bool fastfall = false;
bool gamerunning = true;
Uint32 lastupdate = 0;
while (gamerunning && game.isalive()) {
// game running stuff here
}
// game over stuff here
while (gamerunning) {
if (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
gamerunning = false;
} else if (event.type == SDL_KEYDOWN) {
if (event.key.keysym.sym == SDLK_r) goto newgame; // yay a new game!
}
}
}
TTF_Quit();
SDL_Quit();
return 0;
}
EWWW ...如果它僅僅是爲轉到 – 2011-05-03 16:18:35
當然,你可以使用goto語句,如果你能承擔後果:http://xkcd.com/292/ – bitmask 2011-05-03 16:37:33