def __init__(self, name, waiter): Customer.__init__(self, waiter) self.name = name self.appear_index = 0 self.die_index = 0 self.disappear_index = 0 self.stand_index = 0 self.appear_timer = None self.die_timer = None self.disappear_timer = None self.stand_timer = None self.main_timer = None self.alive = True self.showing = False self.size = (60, 60) self.rect_bound = pygame.Rect(0, 0, self.size[0], self.size[1]) appear_avatars = Factory.get_avatars('head_appear_avatars') if appear_avatars is None: raise BaseException('Can not load avatar for Head') self.appear_drawable_avatars = [] for avatar in appear_avatars: pos = (0, 0) drawable_item = Drawable(avatar, pos, DRAWABLE_INDEX.HEAD) self.appear_drawable_avatars.append(drawable_item) die_avatars = Factory.get_avatars('head_die_avatars') if die_avatars is None: raise BaseException('Can not load avatar for Head') self.die_drawable_avatars = [] for avatar in die_avatars: pos = (0, 0) drawable_item = Drawable(avatar, pos, DRAWABLE_INDEX.HEAD) self.die_drawable_avatars.append(drawable_item) disappear_avatars = Factory.get_avatars('head_disappear_avatars') if disappear_avatars is None: raise BaseException('Can not load avatar for Head') self.disappear_drawable_avatars = [] for avatar in disappear_avatars: pos = (0, 0) drawable_item = Drawable(avatar, pos, DRAWABLE_INDEX.HEAD) self.disappear_drawable_avatars.append(drawable_item) stand_avatars = Factory.get_avatars('head_stand_avatars') if disappear_avatars is None: raise BaseException('Can not load avatar for Head') self.stand_drawable_avatars = [] for avatar in stand_avatars: pos = (0, 0) drawable_item = Drawable(avatar, pos, DRAWABLE_INDEX.HEAD) self.stand_drawable_avatars.append(drawable_item) return
def __init__(self, waiter, subject): """ Constructor :param waiter: waiter for implement hammer action :return: None """ # Constructor of base class Customer.__init__(self, waiter) Observer.__init__(self) self.register(subject, 'player_motion') avatars = Factory.get_avatars('hammer_avatars') if avatars is None: raise BaseException('Can not load avatar for hammer') self.drawable_avatars = [] for avatar in avatars: drawable_item = Drawable(avatar, (0, 0), DRAWABLE_INDEX.PLAYER) self.drawable_avatars.append(drawable_item) # Default is the first one self.drawable_avatar = self.drawable_avatars[0] self.sound_hit = Factory.get_sound('hammer_hit') if self.sound_hit is None: raise BaseException('Can not load "hit" sound effect of hammer') # Used to step counter, change image when hammer self.index = 0 # Used to prevent hammer when hammering self.hammering = False self.timer = None self.pos = (0, 0) self.size = (10, 15) # Height, Width self.distance = (150, 150)
def init_game(self): """ Init logically game :return: None """ start_time = time.time() self.screen.fill((255, 255, 255)) background = Factory.get_background() if background is not None: drawable_object = Drawable(background, (0, 20), DRAWABLE_INDEX.BACKGROUND) key = str(drawable_object.index) + CUSTOMER_KEY.BACKGROUND # Insert index as prefix keyword to sort self.register_waiter(key, drawable_object) else: raise 'Can not load background image' self.player = Player(self.event_controller, self) self.register(self.player, 'player_hammer')
def init_game(self): """ Init logically game :return: None """ self.screen.fill((255, 255, 255)) background = Factory.get_background() if background is not None: drawable_object = Drawable(background, (0, 0), DRAWABLE_INDEX.BACKGROUND) key = str(drawable_object.index) + CUSTOMER_KEY.BACKGROUND # Insert index as prefix keyword to sort self.register_waiter(key, drawable_object) else: raise 'Can not load background image' self.player = Player(self.event_controller, self, self.screen) self.register(self.player, 'player_hammer') # Init list of heads head = Head('1', self) self.heads.append(head) head = Head('2', self) self.heads.append(head) head = Head('3', self) self.heads.append(head) #Draft self.original_head_pos = (20, 200) self.pos_index = 0 self.id = 0 # Define work of timer: choose random a head and show it def work(): if self.pos_index > 7: self.pos_index = 0 i = 0 self.id += 1 self.pos_index += 1 self.original_head_pos = HolePosition.POS[self.pos_index] head = Head(str(self.id), self) head.show(self.original_head_pos,3) self.head_timer = Timer(3, work) self.head_timer.start()
def __init__(self, event_controller, env): # Init pygame pygame.init() pygame.mixer.init() # Save event_controller to use later self.event_controller = event_controller self.env = env # Set some value for head self.number_of_enemy = NUM_SPRITES.NUMBER_OF_ENEMY self.time_to_create_new = DURATION.TIME_CREATE_NEW self.max_of_current_enemy = NUM_SPRITES.MAX_OF_CURRENT_ENEMY self.totalCreatedEnemy = 0 # Constructor of base class Observer.__init__(self) # Register to receive some special events self.register(event_controller, 'special') Waiter.__init__(self) # Attribute declare self.quit_game = False self.player = None self.heads = [] self.head_timer = None self.interval_section = 3 self.appear_delay = 3 self.stick_time = 0.12 self.is_first_blood = True self.sound_prepare4battle = Factory.get_sound('prepare4battle') if self.sound_prepare4battle is None: raise NotImplementedError self.sound_prepare4battle_playing = False self.sound_first_blood = Factory.get_sound('first_blood') if self.sound_first_blood is None: raise NotImplementedError self.sound_double_kill = Factory.get_sound('double_kill') if self.sound_double_kill is None: raise NotImplementedError self.sound_triple_kill = Factory.get_sound('triple_kill') if self.sound_triple_kill is None: raise NotImplementedError self.sound_ultra_kill = Factory.get_sound('ultra_kill') if self.sound_ultra_kill is None: raise NotImplementedError self.sound_rampage_kill = Factory.get_sound('rampage') if self.sound_rampage_kill is None: raise NotImplementedError self.screen = pygame.display.set_mode(self.env.screen_size) pygame.mouse.set_visible(False) # Hide default mouse cursor self.timer_counter = None self.stage = None self.id = 0 self.finish = False self.num_head_kill_in_section = 0