본문 바로가기
C,C++/코드정리

[C/C++] TextRPG 파일 입출력 변환

by 마두식 2022. 9. 28.
반응형

-  전체 코드 : CppStudy/TextRPGWithFileIO at main · Modisc/CppStudy (github.com)

-  전체 코드가 길고 여러 파일로 나누어져 있어서 전체 코드는 깃허브 링크로 대신하겠습니다.

 

 

Player

 

플레이어의 정보를 파일 입출력을 이용해서 관리함으로써, 사용자가 이전에 하던 게임을 이어갈 수 있도록 설정하였습니다.

SetPlayer 함수는 처음부터 플레이어를 설정해주는 코드여서 별다른 변화는 없습니다.

새롭게 추가한 사용자 정보를 불러오기 위한 LoadPlayer 함수와, 사용자 정보를 저장하는데 사용하는 SavePlayer 함수를 살펴보겠습니다

 

파일에 저장되어 있는 플레이어의 정보를 읽어들이는 코드입니다. 플레이어의 정보는 바이너리 파일로 저장되어 있습니다

fread() 함수에 관한 내용은 이전에 정리했던 블로그 포스팅을 참고하시면 이해하실 수 있을 것입니다.

-  참고 : [C/C++] 파일 입출력 함수 정리 (tistory.com)

 

현재까지 진행된 플레이어의 정보를 저장하는 함수입니다. SavePlayer 함수와 LoadPlayer 함수의 코드는 거의 비슷합니다.

fwrite() 함수에 관한 내용은 이전에 정리했던 블로그 포스팅을 참고하시면 이해하실 수 있을 것입니다.

-  참고 : [C/C++] 파일 입출력 함수 정리 (tistory.com)

 

SavePlayer 함수를 호출하는 부분입니다. 플레이어의 수동 저장은 지원하지 않습니다.

252 라인의 while문 내부에서 계속 반복하며 게임이 돌아가고, while문을 벗어나게 되면 게임이 종료됩니다.

게임이 종료되기 전 SavePlayer 함수를 호출해 플레이어의 정보를 저장하고 종료하는 방식입니다.

 

 

Monster

 

게임 내에서 등장하는 몬스터를 관리하는 코드입니다. MonsterTool.cpp 라는 새로운 파일에 코드를 작성하였습니다.

해당 프로그램에서 맵 난이도 별 몬스터를 추가하고 해당 정보를 파일에 저장합니다. TextRPG 프로그램에서 해당 파일을 읽어와서 몬스터를 설정하는 방식입니다.

몬스터를 저장하는 SaveMonster 함수와 저장한 파일을 읽어오는 LoadMonster 함수를 확인해보겠습니다.

 

monster 는 구조체 배열입니다. 즉, monster 배열 원소 하나하나는 모두 구조체입니다.

위와 같이 monster에 대한 정보를 파일에 저장하면, TextRPG 코드에서 기존에 사용하던 몬스터 설정 코드는 필요가 없습니다.

 

위와 같이 SetMonster 함수 내에서 Monster 정보를 저장한 파일을 읽어오기만 하면 몬스터 설정이 끝이납니다.

 

 

StoreItem

 

MonsterTool.cpp 파일을 별도로 만들어서 몬스터를 관리했던 것처럼, 게임 내 상점에서 판매하는 아이템들도 마찬가지로 ItemTool.cpp 라는 별도의 파일을 만들어서 관리를 하도록 했습니다.

main의 내용은 Monster.cpp 코드와 거의 유사합니다.

 

아이템을 추가하는 AddItem 함수입니다. 각 상점 별로 아이템이 3개씩 들어가게 되므로 먼저 어떤 무기 탑을 추가할 지 선택하게 하고, 그 다음으로 추가할 무기의 수준을 선택하도록 했습니다.

선택이 끝나면 해당 아이템 상점의 해당 수준의 무기를 사용자가 추가할 수 있습니다.

 

추가한 무기들을 파일에 저장하고, 저장한 파일을 읽어오는 코드입니다.

무기와 방어구 각각에 대한 배열을 생성하게 됐을 뿐, Monster.cpp 에서 사용했던 코드와 거의 일치합니다.

 

TextRPG 코드에 위에서 사용한 LoadStore 함수를 그대로 추가하고, main 함수에 있던 242~248 라인 대신에 LoadStore 함수를 호출하기만 하면 파일에 저장되어 있던 아이템을 읽어와서 게임에 추가할 수 있습니다.

 

 

 


 

 

틀린 부분이나 이상한 부분이 있으면 댓글로 편하게 지적해주세요!

감사합니다!

 

 

 

출처

(14) C언어/C++ 강의 54화 플레이어 저장 및 불러오기 [어소트락 게임아카데미] - YouTube

반응형

댓글