Ejemplo n.º 1
0
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 []
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
 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()
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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()
Ejemplo n.º 7
0
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
Ejemplo n.º 8
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()
Ejemplo n.º 9
0
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