9.5 객체지향으로 개발하기 2
from abc import ABC, abstractmethod
class CheckOutOfScreen(ABC):
def __init__(self, screen):
self.s_width, self.s_height = screen
@abstractmethod
def is_out_of_screen(self):
passclass Bullet(Actor, CheckOutOfScreen):
def __init__(self, img_name, pos, angle, screen):
Actor.__init__(self, img_name, pos)
CheckOutOfScreen.__init__(self, screen)
self.angle = angle
def is_out_of_screen(self):
if self.x > self.s_width or self.x < 0 or \
self.y > self.s_height or self.y < 0:
return True
else:
return False
class Tank(Actor, CheckOutOfScreen):
def __init__(self, img_name, pos, angle, screen):
Actor.__init__(self, img_name, pos)
CheckOutOfScreen.__init__(self, screen)
self._original_pos = 0
self.angle = angle
def is_out_of_screen(self):
if self.right > self.s_width or self.left < 0 or \
self.bottom > self.s_height or self.top < 0:
return True
else:
return False
def move(self):
self._original_pos = self.pos
if self.angle == 180:
self.x -= 2
elif self.angle == 0:
self.x += 2
elif self.angle == 90:
self.y -= 2
elif self.angle == 270:
self.y += 2
# 화면경계 확인
if self.is_out_of_screen():
self.pos = self._original_posLast updated