그냥 흔한 컴공과 1학년 학생인데요
이번 텀프로젝트로 2인1조 주제 자유여서 저희 팀은 오목을 하기로했는데
교수님이 네트워크대전방식과 DB로 로그인+전적 저장기능을 넣으라고하셔서
도서관에서 책 빌려서 배우지도않은 2,3학년껄 공부하다 결국 멘붕하고
네트워크는 TCP/IP 입문까지 했는데 발표일까지 얼마 안남아서 결국 포기하고
DB도 노력했는데 SQL 멘붕.. 모르겠어서ㅠㅠ 결국 배웠던것중 파일입출력을 이용해서
전적을 저장하자! 라고 결정!
해서... 우선 전역변수를 a,b를 두고
오목 메인함수를
void main()
{
init_board();
while(1)
{
show_board();
if( input_user() )
{
if( check_win() )
{
printf("%s가 승리했습니다.\n", (user==1)?"●":"○");
if(user==1)
{
a++;
}
else
{
b++;
}
printf("● %d승 ○ %d승\n", a,b);
record();
break;
}
// 흑과백 교대하기.
user = (user==1)?2:1;
}
system("cls");
}
}
이렇게 두고 이기면 txt파일로
int record()
{
FILE * fp = fopen("winrecord.txt", "wt");
fprintf(fp, "● %d승 ○ %d승\n", a,b);
fclose(fp);
return main();
}
이렇게 저장하게끔 했는데 이기면 txt파일로 잘 저장됩니다.
계속하면 계속 올라가는데 문제는!
스위치로 케이스해서 x 누르면 쇼 꺼지게 하거나 아니면 그냥 닫기하고
다시 실행하면 아직까진 txt파일에 기존 전적이 저장되있는데 이제
다시 새로킨 쇼에서 흑돌이나 검은돌이 이기면 여태 있던 전적이 사라지고 다시 1:0 이렇게
전적이 초기화됩니다 ㅠ 아마 저 record함수에서
쇼를 새로 시작하면 기존에 txt파일이 있던 없던 다시 파일 스트림을 같은 이름으로 열어버리니깐
원래 있던건 사라지고 새로 저장되는것같은데
원래 있던 데이터에 계속 누적해서 승률이 + 되게끔 어떻게 할수없을까요..?ㅠ
발표일까지 3일 남았는데 답이 안나와서 이렇게 글을 올려봅니다ㅠ