본문 바로가기
  • Coding & Book
학습단/Python 학습단

9장 클래스(게임 만들기)

by 루이3 2023. 7. 20.

클래스와 객체 생성하기

  • 클래스는 붕어빵 틀에 비유하곤 합니다.
  • 클래스의 기본형식으로 class 키워드 뒤에 클래스명을 적고 콜론을 붙입니다.
  • 클래스 안에는 필요한 함수를 정의 하는데 클래스 안에 정의한는 함수를 메서드라고 합니다.
  • 메서드 안에 정의한 변수를 인스턴스 변수라고 합니다.
class 클래스명:
    def 메서드명(self,전달값1, 전달값2):
        실행할 명령 1
        실행할 명령 2

 

 

게임 소개

  • 세 종족 사이에 전쟁을 그린 게임입니다.
  • 유닛을 최대한 빠르게 많이 만들어 적을 궤멸시키는 게임입니다.
  • 종족은 보병, 탱크, 전투기 와 같은 유닛을 생성합니다.

유닛)

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))

soldier1 = Unit("보병", 40, 5)
soldier2 = Unit("보병", 40, 5)
tank = Unit("탱크", 150, 35)

공격유닛)

class AttackUnit:
    def __init__(self, name, hp, damage):
        self.name = name
        self.hp = hp
        self.damage = damage

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

    def damaged(self, damage):
        print("{0} : {1}만큼 피해를 입었습니다.".format(self.name, damage))
        self.hp -= damage
        
        print("{0} : 현재 체력은 {1}입니다.".format(self.name, self.hp))
        if self.hp <= 0:
            print("{0} : 파괴됐습니다.".format(self.name))

코드 설명

& 객체와 인스턴스

  • 클래스 하나로 서로 다른 유닛 3개를 만들었는데, 이렇게 만들어진 유닛들을 객체라고 합니다.
  • 위와 같은 객체들을 클래스의 인스턴스라고 합니다.

(soldier1, soldier2, tank 객체는 Unit 클래스의 인스턴스 입니다.)

 

 

& 생성자

  • Unit 클래스에 __init__() 메서드를 정의 했는데 파이썬에 이를 생성자라고 합니다.
  • 생성자는 사용자가 따로 호출하지 않아도 객체를 생성할 떄 자동으로 호출되는 메서드 입니다.

 

& 인스턴스 변수

  • 메서드에 정의한 변수를 인스턴스 변수라고 하며 self와 함께 사용합니다.
  • Unit클래스에서는 name, hp, damage가 인스턴스 변수 입니다.
  • self.name과 같은 형식으로 전달값을 받아 정의 합니다.

 

& 메서드

  • 메서드는 클래스 내부에 정의한 함수로 클래스 안에 여러개를 만들 수 있습니다.
  • 전달값 부분에 첫 번째로 self를 넣습니다.
  • 메서드 안에서 self. 으로 인스턴스 변수에 접근 할수 있습니다.

 

'학습단 > Python 학습단' 카테고리의 다른 글

3주차 완료입니다.  (0) 2023.07.21
9-2장 클래스(게임 만들기2)  (0) 2023.07.21
8-2장 파일 입출력  (0) 2023.07.19
8장 입출력  (0) 2023.07.18
7-2장 함수 호출하기+실습문제  (0) 2023.07.17