게임을 끝낸 후에 다시 시작할 수있는 테트리스 게임을 만들었습니다. 나는 이것을 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 ... 그것은 단지 당신이 결과로 살 수있는 경우, 고토를 사용할 수 있습니다 물론 고토 –
을 위해 인 경우 : http://xkcd.com/292/ – bitmask