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;
}
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력