Python - 기초(6-1)

제갈창민·2021년 10월 22일
1

learningbook

목록 보기
8/32

클래스(어려움 하지만 중요함) : 하나의 틀, 서로 연관이 있는 변수와 함수의 집합

#마린 : 공격 유닛, 군인. 총을 사용
#name = "마린"
#hp = 40
#damage = 5

#print("{} 유닛이 생성되었습니다.".format(name))
#print("체력 {0}, 공격력 {1}\n".format(hp, damage))

#시즈탱크
#tank_name = "탱크"
#tank_hp = 150
#tank_damage = 35

#print("{} 유닛이 생성되었습니다.".format(tank_name))
#print("체력 {0}, 공격력 {1}\n".format(tank_hp, tank_damage))

#tank2_name = "탱크"
#tank2_hp = 150
#tank2_damage = 35

#print("{} 유닛이 생성되었습니다.".format(tank2_name))
#print("체력 {0}, 공격력 {1}\n".format(tank2_hp, tank2_damage))

#def attack(name, location, damage):
#print("{} : {} 방향으로 적군을 공격 합니다. [공격력 {}]".format(name, location, damage))

#attack(name, "1시", damage)
#attack(tank_name, "1시", tank_damage)
#attack(tank2_name, "1시", tank2_damage)

class Unit:
def init(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
print("{} 유닛이 생성 되었습니다.".format(self.name))
print("체력 {}, 공격력 {}".format(self.hp, self.damage))

marine1 = Unit("마린", 40, 5)
marine2 = Unit("마린", 40, 5)
tank = Unit("탱크", 150, 35)

init

class Unit:
def init(self, name, hp, damage):

# __init__ : 생성자. 마린이나 탱크같은 객체가 만들어질때 자동으로 호출되는 부분.
#  클래스로 부터 만들어지는 것을 '객체'
# 이때 마린과 탱크는 유닛 클래스의 인스턴스 라고 표현함
# init 함수에 정의된 것과 동일한 갯수만큼 value(ex>"마린", 40, 5)를 생성해 줘야 한다. 
    self.name = name
    self.hp = hp
    self.damage = damage
    print("{} 유닛이 생성 되었습니다.".format(self.name))
    print("체력 {}, 공격력 {}".format(self.hp, self.damage))

marine1 = Unit("마린", 40, 5)
marine2 = Unit("마린", 40, 5)
tank = Unit("탱크", 150, 35)

멤버변수 : 클래스내에서 정의된 변수고, 해당변수로 수정, 변환 할 수 있다.

class Unit:
def init(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
print("{} 유닛이 생성 되었습니다.".format(self.name))
print("체력 {}, 공격력 {}".format(self.hp, self.damage))

#레이스
wraith1 = Unit("레이스", 80, 5)
print("유닛 이름 : {}, 공격력 : {}".format(wraith1.name, wraith1.damage))

#마인드 컨트롤
wraith2 = Unit("빼앗은 레이스", 80, 5)
wraith2.clocking = True
#클로킹이라는 변수는 처음에 없었다. 외부에서 클로킹을 추가로 할당한 변수
#레이스1에는 클로킹이 없기때문에 아래 if문에 레이스1을 넣으면 오류가 발생한다.
if wraith2.clocking == True:
print("{} 는 현재 클로킹 상태입니다.".format(wraith2.name))

메소드

class Unit:
def init(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
print("{} 유닛이 생성 되었습니다.".format(self.name))
print("체력 {}, 공격력 {}".format(self.hp, self.damage))

#공격유닛
class AttackUnit:
def init(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage

def attack(self, location):
    print("{} : {} 방향으로 적군을 공격합니다. [공격력 {}]"\
    .format(self.name, location, self.damage))

#셀프는 자기자신을 의미, 클래스 내에서 메소드 앞에는 항상 셀프를 입력해야한다.
def damaged(self, damage):
print("{} : {} 데미지를 입었습니다.".format(self.name, damage))
self.hp -= damage
print("{} : 현재 체력은 {} 입니다.".format(self.name, self.hp))
if self.hp <= 0:
print("{} : 파괴되었습니다.".format(self.name))

#파이어뱃
firebat1 = AttackUnit("파이어뱃", 50, 16)
firebat1.attack("5시")

#공격을 2번 받는 것으로 가정
firebat1.damaged(25)
firebat1.damaged(25)

profile
자기계발 중인 신입 개발자

0개의 댓글