main함수를 재시작하는데는 어떤 방법이 있을까요?

조회수 1266회

안녕하세요 c언어로 공룡게임 만들어보다가 해결이 안되는 점이 있어 질문드립니다.

해당 함수는 main함수이고 콘솔창을 이용해 구글의 공룡게임을 재현해 보자했습니다.

그러나 공룡이 죽고나서 랭킹테이블에 값을 저장뒤 메인함수의 처음으로 돌아가 재시작 할려하였습니다.

업드려진 상태에서 죽으면 공룡의 상태를 나타내는 dinoStatus가 초기화가 되어 재시작했을때 콘솔창에는 서있는 공룡의 모습으로 게임을 시작해야되는데, 업드려진 상태로 게임을 시작하게 됩니다.

init함수는 공룡과 장애물을 초기화 시켜주는 함수입니다. 따라서 메인함수의 처음으로 돌아가 시작하게 될때는 모든 값들이 초기화되어 첫시작과 같아야되는데, 왜 이럴까요?

int main(void){
    SetConsoleView();

    DinoStatus dinoStatus;
    ObsStatus obsStatus;
    bool gameOver = false;
    void(*DrawDino)(DinoStatus * status) = DrawDinoStand;

    init(&dinoStatus, &obsStatus);

    int score = 0;




    while (true)
    {

        DrawDino = OperateDino(&dinoStatus);
        ManageJump(&dinoStatus);
        ManageObstacle(&obsStatus);

        gameOver = CollisionDetection(dinoStatus, obsStatus);

        if (gameOver)
        {
            system("cls");
            DrawGameOver();
            Ranking(score);

            void(*restart)();
            restart = main;

            int try;

            GotoXY(30, 3);
            printf(" 한번 더? (좋아! : 1 싫어! : else) : ");
            scanf("%d", &try);

            if (try == 1)
            {
                restart();
            }
            else
            {
                Sleep(80);
                system("cls");
                return 0;
            }
        }

        GotoXY(30, 0);
        printf("score : %d ", score);

        DrawDino(&dinoStatus);    //draw dino
        DrawObstacle(obsStatus);
        Sleep(80);
        system("cls");    //clear
        score++;
    }
    return 0;
}
  • main 함수를 재시작하시면 안 되고, main 함수가 뭔가를 재시작하도록 하셔야 해요. 엽토군 2021.4.22 09:57

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)