티스토리 뷰

Python으로 놀아보자 - 01 Python의 Class와 Method


요즘 개발 추세가 OOP이기 때문에 파이썬이 비록 인터프린터 언어이지만 Class와 Method 형태를 아는 것은 기본이라 할 수 있을 것이다.


이해를 돕기 위해 요즘 잘나가는 게임인 LoL(이하 롤)의 캐릭터를 Class를 이용해 만들어 보도록 하겠다.

우리가 만들어볼 클래스는 '캐릭터'클래스이다. 롤에서는 '챔피언'이라고 부른다. 이하 '챔프'라고 부르겠다.


게임 '롤'을 하는 유저들은 '소환사의 협곡'이라는 맵에서 각자가 선택한 1개의 챔프를 가지고 신나게 싸운다. 이 게임은 5:5로 팀을 이루어 각 진영에 있는 '넥서스'라는 건물을 먼저 부시는 팀이 이기는 게임이다.


아래 코드를 보자.

'''
Created on 2013. 3. 18.

@author: KyoungRock
'''

class Champion:
    lv = 1
    movSpd = 0
    basicMovSpd = 325
    atkSpd = 0.658
    movDep = 1
        
    def __init__(self, chmpNam, hp, defen, slow, shoes):
        self.hp = hp
        self.defen = defen
        self.sloPer = slow
        self.chmpNam = chmpNam
        self.setShoes(shoes)
        self.raiseAtkSpd()
        self.setMovSpd()
        
    def raiseAtkSpd(self):
        self.atkSpd = 0.658*((1.0334)**(Champion.lv - 1) )
    
    def beAtk(self, dem):
        print "be attack", dem, 1-100.0/(100.0+self.defen)
        self.dem = dem*(100.0/(100.0+self.defen))
        print self.dem
        self.hp = self.hp-self.dem
        
    def setShoes(self, shoes):
        if (shoes == 1):
            self.shoes = 50
        else:
            self.shoes = 0
            
    def setMovSpd(self):
        print "set Mov Spd"
        self.movSpd = (self.basicMovSpd + self.shoes)*(1.00)*(self.movDep-self.sloPer)
        
    def printStatus(self):
        print "chmpNam:%s, hp:%f, lv%d, mvSpd:%f, atkSpd:%f" % ( self.chmpNam, self.hp, self.lv, self.movSpd, self.atkSpd )


ashe= Champion("ashe", 474.0, 14.9, 0, 0 )
mipo = Champion("mipo", 520.0, 18.0, 0.15, 1 )

ashe.printStatus()
mipo.printStatus()

mipo.beAtk(63.0)
mipo.printStatus()



일단 Champion: 이라고 클래스를 선언하고 __init__() Method를 이용해 각 속성을 정의해 주었다.

아래에

mipo = Champion("mipo", 520.0, 18.0, 0.15, 1 )
ashe= Champion("ashe", 474.0, 14.9, 0, 0 )

라는 코드는

ashe(애쉬)라는 챔프와 mipo(미스 포츈)라는 챔프를 '소환'한 부분이다.


파이썬은 이렇게 클래스를 만들고 생성하고 재사용 한다.



728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함