Python 13 - pickle, Class(Feat_Starcraft)
2021. 5. 5. 16:14ㆍpython
반응형
#pickle
#study.txt파일이 생기고 그안에 파이썬을 열심히 공부하고 있어요가 출력되어 저장된다.
import pickle
with open("study.txt", "w", encoding="utf8") as study_file:
study_file.write("파이썬을 열심히 공부하고 있어요.")
#study.txt 파일에 내용을 terminal에 출력한다.
#간단하게 두문장으로 출력이 가능하고 close또한 해줄 필요가 없어서 코드가 간단해진다.
import pickle
with open("study.txt", "r", encoding="utf8") as study_file:
print(study_file.read())
#클래스 class (Feat_Starcraft)
# 마린 : 공격 유닛, 군인. 총을 쓸 수 있음
name = "마린"
hp = 40
damage = 5
print("{0} 유닛이 생성되었습니다." .format(name))
print("체력{0}, 공격력 {1}\n" .format(hp, damage))
# 탱크 : 공격유닛, 탱크. 포를 쏠 수 있는데, 일반모드 / 시즈모드.
tank_name = "탱크"
tank_hp = 150
tank_damage = 35
print("{0} 유닛이 생성되었습니다." .format(tank_name))
print("체력{0}, 공격력 {1}\n" .format(tank_hp, tank_damage))
tank2_name = "탱크"
tank2_hp = 150
tank2_damage = 35
print("{0} 유닛이 생성되었습니다." .format(tank2_name))
print("체력{0}, 공격력 {1}\n" .format(tank2_hp, tank2_damage))
def attack(name, location, damage):
print("{0} : {1} 방향으로 적군을 공격 합니다. [공격력 {2}]" .format( name, location, damage))
attack(name, "1시", damage)
attack(tank_name, "1시", tank_damage)
attack(tank2_name, "1시", tank2_damage)
# 자 이런식으로 탱크를 계속해서 뽑으려면 계속 복붙 탱크3 4 5 계속 입력해야하는데 이럴 때 필요한게
# 클래스 라는 것인데, 비유를 하면 붕어빵을 만드는 틀 과 같다고 생각하며 좋다.
# 아래는 클래스로 변경한 코드이다.
class Unit:
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
print("{0} 유닛이 생성 되었습니다." .format(self.name))
print("체력 {0}, 공격력{1}" .format(self.hp, self.damage))
marine1 = Unit("마린", 40, 5)
marine2 = Unit("마린", 40, 5)
tank = Unit("탱크", 150, 35) # class를 활용함으로써 훨씬 간편해졌다.
#__init__ 은 python에서 쓰이는 생성자 이다.
# __init__
class Unit:
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
print("{0} 유닛이 생성 되었습니다." .format(self.name))
print("체력 {0}, 공격력{1}" .format(self.hp, self.damage))
# 레이스 : 공중 유닛, 비행기. 클로킹 (상대방에게 보이지 않음)
wraith1 = Unit("레이스", 80, 5)
print("유닛 이름 : {0}, 공격력 : {1}" .format(wraith1.name, wraith1.damage))
# 마인드 컨트롤 : 상대방 유닛을 내 것으로 만드는 것 (빼았음)
wraith2 = Unit("래이스", 80, 5)
wraith2.clocking = True
#clocking이라는 변수를 추가로 할당을 해서 True라는 값을 넣은것 #이런식으로 추가로 변수를 만들어서 쓸 수 있다.
if wraith2.clocking == True:
print("{0} 는 현재 클로킹 상태입니다." .format(wraith2.name))
#이런 식으로 class 외부에서 내가 원하는 변수를 확장 할 수 있다.
#그 확장된 변수는 내가 확장한 변수에만 적용이되고 기존에 있던 다른객체에는 적용이 되지 않는다.
-------------------------출 력 결 과---------------------------
마린 유닛이 생성되었습니다.
체력40, 공격력 5
탱크 유닛이 생성되었습니다.
체력150, 공격력 35
탱크 유닛이 생성되었습니다.
체력150, 공격력 35
마린 : 1시 방향으로 적군을 공격 합니다. [공격력 5]
탱크 : 1시 방향으로 적군을 공격 합니다. [공격력 35]
탱크 : 1시 방향으로 적군을 공격 합니다. [공격력 35]
마린 유닛이 생성 되었습니다.
체력 40, 공격력5
마린 유닛이 생성 되었습니다.
체력 40, 공격력5
탱크 유닛이 생성 되었습니다.
체력 150, 공격력35
레이스 유닛이 생성 되었습니다.
체력 80, 공격력5
유닛 이름 : 레이스, 공격력 : 5
래이스 유닛이 생성 되었습니다.
체력 80, 공격력5
래이스 는 현재 클로킹 상태입니다.
반응형
'python' 카테고리의 다른 글
Python 15 - 메소드 오버라이딩 (0) | 2021.05.07 |
---|---|
Python 14 - 메소드(method), 상속, 다중상속 (0) | 2021.05.06 |
Python 12 - 포맷팅, 파일입출력 (0) | 2021.05.04 |
Python 11 - 표준입출력, sys, ljust, rjust, zfill, input (0) | 2021.05.03 |
Python 10 - 함수 활용 방법 (0) | 2021.05.02 |