-
3. 플레이어의 기록을 파일에 저장 & 로드 하기C,C++로 만드는 간단한 프로젝트/숫자 야구 2021. 1. 2. 22:09
1. 플레이어의 기록을 파일에 저장하기
우리가 게임이 끝났을 때, 플레이어의 이름과 점수를 파일에 기록할 것이다.
그런데 제약 사항을 하나 두도록 하자.
즉, 점수( 시도 회수 )가 가장 높은 플레이어 5명에 대한 정보만 저장할 것이다.
그리고 파일에 저장할 때, 맨 윗줄에는 저장되어 있는 플레이어의 숫자를 기록하자.
그리고 플레이어의 정보는 점수가 가장 높은 순으로 저장을 한다.
다시 말하면 시도 회수가 낮은 순에서 높은 순으로 저장이 된다.
파일 분할을 통해서, 플레이어의 정보와 파일에 플레이어의 정보를 저장하는 함수들을 저장해보자.
< FileInfo.h >
< FileInfo.c >
아래는 플레이어들의 정보를 파일에 저장하는 함수
아래는 플레이어들의 점수를 낮은 순에서 높은 순으로 정렬하는 함수이다.
점수를 낮은 순에서 높은 순으로 정렬하는 이유는 여기서의 점수는 시도 회수이다.
우리가 게임을 할 때, 적은 회수로 데이터를 맞추면 보다 점수가 높기 때문이다.
아래의 함수는 게임이 끝나면 호출되는 함수이다.
게임이 끝났을 때, 그 때의 회수를 매개변수로 전달하면 된다.
이 로직은 크게 두 가지 경로 나뉜다.
파일에서 읽은 플레이어의 정보의 수가 5개 미만이면 생각할 필요도 없이 현재의 플레이어의 정보를 저장하면 된다.
만약 플레이어의 수가 5명이라면, 기존의 플레이어들 중에서 가장 낮은 점수를 가진 플레이어와
현재의 플레이어의 점수를 비교해서 정보를 갱신하면 된다.
WriteScore함수의 호출 시점은 게임이 끝나는 시점이다.
Play_Game 함수의 맨 미자막 위치에서 호출되면 된다.
2. 플레이어의 기록을 파일에 저장하기
LoadScore함수는 main함수의 switch ~ case문에서 호출한다.
실행결과를 보자.
아래의 출력결과는 5개의 플레이어 정보가 들어있다.
만약, 6번째 시도로 데이터를 맞춘다면, goo7이라는 이름을 갖는 플레이어의 정보는 없어져야 한다.
아래와 같이 6번째 시도로 데이터를 맞춘 후에, 정보를 보면 아래와 같이
goo7이라는 플레이어의 정보는 사라졌다.
그리고 프로그램을 종료하고, 다시 실행해서, 순위를 보자.
다음과 같이 파일이 존재해서, 데이터의 로드가 가능함을 볼 수 있다.
소스 파일
'C,C++로 만드는 간단한 프로젝트 > 숫자 야구' 카테고리의 다른 글
게임 진행 하기 (0) 2021.01.02 1. 게임 기본 구성 만들기 (0) 2021.01.02