본문 바로가기

내일배움 캠프/TIL

2023 03 28 파이썬 rpg 저장 구현,,,

뭔가 게임을 만들면서 개인적으로 세이브 로드를 구현하고 싶어져서 어떻게 하면 좋을까? 생각을 해보다가

가장 먼저 생각난게 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을 이용한 세이브 로드를 한번 해보고 싶습니다..