class ReadySequence(Scene, Singleton): def __init__(self, frame, background): super(ReadySequence, self).__init__() self.frame = frame self.background = background self.string = Animation(u'../resources/image/main/strings.png',AnimationInfo(-1,0,0,360,210,0),x=220, y=195) self.string.animation_enable = False self.timer = Timer(240) def ready(self, *args, **kwargs): BGM.set_volume(0.4) self.timer.play() def update(self): self.timer.tick() if self.timer.now == 30: self.string.ainfo.index = 0 elif self.timer.now == 60: BGM.set_volume(1) self.string.ainfo.index = 1 elif 60 < self.timer.now < 70: self.string.y -= 30 elif self.timer.now == 70: self.background.draw() self.frame.draw() return 'main' def draw(self): self.string.draw() return []
class ResultSequence(Sequence): def ready(self): self.win = Animation(u"../resources/image/main/text/win.png", AnimationInfo(-1, 0, 1, 360, 225, 1)) finish_sound = Sound("../resources/sound/finish.wav") finish_sound.play() self.win.animation_enable = False self.win.x = settings.SCREENWIDTH/2-180 self.win.y = settings.SCREENHEIGHT/2-180 self.text.ainfo.index = 3 self.winner = self.scene.world.get_winner() self.result_timer = Timer(settings.FPS*2.5) self.result_timer.play() def update(self): self.result_timer.tick() if self.result_timer.is_active() and self.result_timer.is_over(): self.text.ainfo.index = -1 self.scene.bgm.change(u"../resources/music/fanfare_intro.wav", -1, u"../resources/music/fanfare_loop.wav", 100) self.win.ainfo.index = self.winner.number self.result_timer.stop() for player in self.scene.world.players: p = player.poll() u"""p=3のとき、リプレイ""" if not self.result_timer.is_active() and p == 3: self.scene.bgm.change(u"../resources/music/main_intro.wav", -1, u"../resources/music/main_loop.wav") self.scene.sequence_manager.change_scene('ready') #ToDo Retry or Title def draw(self): rect = self.scene.world.draw() map(lambda n: n.draw(), self.scene.navigations) self.scene.timer.draw() self.text.draw() self.win.draw() return rect
def ready(self): self.win = Animation(u"../resources/image/main/text/win.png", AnimationInfo(-1, 0, 1, 360, 225, 1)) finish_sound = Sound("../resources/sound/finish.wav") finish_sound.play() self.win.animation_enable = False self.win.x = settings.SCREENWIDTH/2-180 self.win.y = settings.SCREENHEIGHT/2-180 self.text.ainfo.index = 3 self.winner = self.scene.world.get_winner() self.result_timer = Timer(settings.FPS*2.5) self.result_timer.play()
def __init__(self, scene, *args, **kwargs): self.scene = scene super(Sequence, self).__init__() self.text = Animation(u"../resources/image/main/text/game.png", AnimationInfo(-1, 0, 1, 360, 225, 1)) self.text.animation_enable = False self.text.x = settings.SCREENWIDTH/2-180 self.text.y = settings.SCREENHEIGHT/2-180
def __init__(self, frame, background): super(ReadySequence, self).__init__() self.frame = frame self.background = background self.string = Animation(u'../resources/image/main/strings.png',AnimationInfo(-1,0,0,360,210,0),x=220, y=195) self.string.animation_enable = False self.timer = Timer(240)
def ready(self): self.win = Animation(u"../resources/image/main/text/win.png", AnimationInfo(-1, 0, 1, 360, 225, 1)) self.win.animation_enable = False self.win.x = settings.SCREENWIDTH/2-180 self.win.y = settings.SCREENHEIGHT/2-180 self.text.ainfo.index = 3 self.winner = self.scene.world.get_winner() self.result_timer = Timer(settings.FPS*2) self.result_timer.play()
class ResultSequence(Sequence): def ready(self): self.win = Animation(u"../resources/image/main/text/win.png", AnimationInfo(-1, 0, 1, 360, 225, 1)) self.win.animation_enable = False self.win.x = settings.SCREENWIDTH/2-180 self.win.y = settings.SCREENHEIGHT/2-180 self.text.ainfo.index = 3 self.winner = self.scene.world.get_winner() self.result_timer = Timer(settings.FPS*2) self.result_timer.play() def update(self): self.result_timer.tick() if self.result_timer.now == settings.FPS*2: self.text.ainfo.index = -1 self.win.ainfo.index = self.winner.number #ToDo Retry or Title def draw(self): rect = self.scene.world.draw() map(lambda n: n.draw(), self.scene.navigations) self.scene.timer.draw() self.text.draw() self.win.draw() return rect
def __init__(self, panels, stage): self.panels = panels self.stage = stage self.owner = panels[0].owner self.color = panels[0].color self.degree = LocalPoint(0, -1+self.owner*2) self.image = Animation(self.parameter['image'], AnimationInfo(self.owner,0,0,self.parameter['width'],self.parameter['height'],0)) self.hp = self.parameter['hp'] self.attack = self.parameter['attack'] self.limit = self.parameter['limit'] self.count = 0 self.timer = Timer(self.parameter['frequency']) appear_sound = Sound(u'../resources/sound/appear.wav') appear_sound.play() self.image.x, self.image.y = (self.panels[0].point + LocalPoint(self.offset)).to_global().to_pos() self.delay = Timer() if self.parameter['effect']['enable'] and settings.EFFECTENABLE: ef = self.parameter['effect'] Effect(ef['appear'], AnimationInfo(0,0,ef['frame'],ef['width'],ef['height'],1), x=self.image.x-ef['offset'][0], y=self.image.y-ef['offset'][1]) self.delay.set(self.parameter['delay']) self.delay.play()
class Unit(object): animation_enable = False offset = (0,0) parameter = ATTACK name = 'unit' degree = LocalPoint(0,0) def __init__(self, panels, stage): self.panels = panels self.stage = stage self.owner = panels[0].owner self.color = panels[0].color self.degree = LocalPoint(0, -1+self.owner*2) self.image = Animation(self.parameter['image'], AnimationInfo(self.owner,0,0,self.parameter['width'],self.parameter['height'],0)) self.hp = self.parameter['hp'] self.attack = self.parameter['attack'] self.limit = self.parameter['limit'] self.count = 0 self.timer = Timer(self.parameter['frequency']) appear_sound = Sound(u'../resources/sound/appear.wav') appear_sound.play() self.image.x, self.image.y = (self.panels[0].point + LocalPoint(self.offset)).to_global().to_pos() self.delay = Timer() if self.parameter['effect']['enable'] and settings.EFFECTENABLE: ef = self.parameter['effect'] Effect(ef['appear'], AnimationInfo(0,0,ef['frame'],ef['width'],ef['height'],1), x=self.image.x-ef['offset'][0], y=self.image.y-ef['offset'][1]) self.delay.set(self.parameter['delay']) self.delay.play() @classmethod def generate(cls, panels, map): raise NotImplementedError @staticmethod def check(panels): color = panels[0].color owner = panels[0].owner for panel in panels: if not panel.can_unit() or not color == panel.color or not owner == panel.owner: return False else: return True def update(self): u"""1のとき進める、-1のとき消す""" for panel in self.panels: if panel.disable or not panel.owner == self.owner: return -1 self.image.x, self.image.y = (self.panels[0].point + LocalPoint(self.offset)).to_global().to_pos() self.delay.tick() if self.delay.is_over(): self.timer.play() self.timer.tick() if self.timer.is_over(): if self.count < self.limit: self.timer.reset() self.count+=1 return 1 else: return -1 return def move(self, panels): pass def draw(self): if self.delay.is_over(): self.image.draw() def get_front(self, vector): x, y = vector.to_pos() if x is 0 and y is -1: return self.panels.sort(cmp=lambda x, y: cmp(x.y,y.y))[0] elif x is 1 and y is 0: return self.panels.sort(cmp=lambda x, y: cmp(x.x,y.x), reverse=True)[0] elif x is 0 and y is 1: return self.panels.sort(cmp=lambda x, y: cmp(x.y,y.y), reverse=True)[0] elif x is -1 and y is 0: return self.panels.sort(cmp=lambda x, y: cmp(x.x,y.x))[0] def has(self, panel): return panel in self.panels def disappear(self): if not self.name == 'bomb': disappear_sound = Sound(u'../resources/sound/disappear.wav') disappear_sound.play() for panel in self.panels: panel.change_color() panel.unit = False