<script>
class Missile(pygame.sprite.Sprite):
def __init__(self, xpos, ypos, speed):
super(Missile, self).__init__()
self.image = pygame.image.load('missile.png')
self.rect = self.image.get_rect()
self.rect.x = xpos
self.rect.y = ypos
self.speed = speed
self.sound = pygame.mixer.Sound('missile.wav')
def launch(self):
self.sound.play()
def update(self):
self.rect.y -= self.speed
if self.rect.y + self.rect.height < 0:
self.kill()
def collide(self, sprite):
for sprite in sprites:
if pygame.sprite.collide_rect(self, sprite):
return sprite
</script>
우주선게임 코드분석[1]에서 Missile클래스와 차이점은 생성자에 매개변수가 있다.
마찬가지로 상위클래스를 상속받아서 변수를 초기화시켜준다.
미사일은 위치 값을 받아와야하기 때문에 xpos, ypos을 받는다.
self.rect.x = xpos를 매개변수로 넣어주는 이유는 우주선에서 미사일이 발사되는것 처럼 보이게 하려고
우주선의 현재 위치에 대한 값을 넣는 용도로 사용
self.sound는 미사일 발사 때 소리를 위해 사용
def launch(self):에서 미사일 발사 때 self.sound.play() 실행
def update(self): 화면에 미사일이 있을 때 rect.y좌표를 - self.speed만큼 빼줘서 위치를 이동시킨다. if문으로 y좌표와 미사일위치를 알려주는 사각형self.rect.height을 더한 값이 < 0보다 작을 때 없애도록 만든다.
def collide를 통해서 미사일도 충돌여부를 판단해준다.