편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.04.22

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


    안녕하세요 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;
    }
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.04.22

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


    안녕하세요 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;
    

    }