뭔가 게임을 만들면서 개인적으로 세이브 로드를 구현하고 싶어져서 어떻게 하면 좋을까? 생각을 해보다가
가장 먼저 생각난게 txt파일로 저장해서 그거를 불러오면 스테이터스 값이 그대로 유지가 되지 않을까 라는 생각으로
with open(f"{self.name}.txt", "w") as f:
f.write(f"{self.name}\n")
f.write(f"{self.level}\n")
f.write(f"{self.max_experience}\n")
f.write(f"{self.experience}\n")
f.write(f"{self.max_hit_point}\n")
f.write(f"{self.hit_point}\n")
f.write(f"{self.max_magic_point}\n")
f.write(f"{self.magic_point}\n")
f.write(f"{self.attack_power}\n")
f.write(f"{self.magic_power}\n")
이런 방식으로 한줄 한줄에 저장에 필요한값을 전부다 집어넣고
with open(f"{name}.txt", "r") as f:
name= f.readline().rstrip()
level=int(f.readline().rstrip())
max_experience=int(f.readline().rstrip())
experience=int(f.readline().rstrip())
max_hit_point=int(f.readline().rstrip())
hit_point=int(f.readline().rstrip())
max_magic_point=int(f.readline().rstrip())
magic_point=int(f.readline().rstrip())
attack_power=int(f.readline().rstrip())
magic_power=int(f.readline().rstrip())
그다음에 불러올때는 불러오는 값을 전부다 불러와서 변수에 넣어둔다음에
self.name= name
#레벨 관련
self.level=level
self.max_experience = max_experience
self.experience= experience
#hp및 mp
self.max_hit_point= max_hit_point
self.hit_point = hit_point
self.max_magic_point= max_magic_point
self.magic_point= magic_point
#공격관련
self.attack_power= attack_power
self.magic_power= magic_power
self의 값안에 넣는 식으로 save load를 구현하였는데 다 짜고 난 이후 json으로 하게되면 이거보다 훨씬 간단한 방법으로 할 수있다는 소리를 듣고 다음번에 만들일이 있으면 json을 이용한 세이브 로드를 한번 해보고 싶습니다..
'내일배움 캠프 > TIL' 카테고리의 다른 글
2023 03 30 json을 이용한 세이브 & load (0) | 2023.03.31 |
---|---|
2023 03 29 코딩테스트 최빈값 구하기 (0) | 2023.03.31 |
2023 03 27 파이썬 터미널 RPG 만들기 (0) | 2023.03.29 |
2023 03 24 재귀 함수를 이용해서 복리 구하기 (0) | 2023.03.24 |
2023 03 23 코딩 테스트 소수 찾기 (0) | 2023.03.23 |