예제 #1
0
 def send_seed_corrupt(self, signal):
     if not self.frozen:
         if self.tweener.is_tweening:
             self.tweener.when_done(lambda: self.send_seed_corrupt(signal))
         else:
             x = randint(-2, 2)
             y = randint(-2, 2)
             seeds = self.scene.get(tag='seed')
             corrupt = [seed for seed in seeds if seed.is_corrupt]
             if corrupt:
                 candidates = []
                 for seed in corrupt:
                     for ox, oy in [(1, 0), (-1, 0), (0, 1), (0, -1)]:
                         try:
                             neighbor = self.get(seed.x + ox, seed.y + oy)
                         except GridCellError:
                             continue
                         else:
                             if not neighbor.is_corrupt:
                                 candidates.append(neighbor)
                 if candidates:
                     seed = choice(candidates)
                     x = seed.x
                     y = seed.y
             signal(SeedCorruption(x, y))
             delay(3, lambda: self.send_seed_corrupt(signal))
     else:
         delay(0.25, lambda: self.send_seed_corrupt(signal))
예제 #2
0
    def burst(self, duration, color, source=None, target=None):
        if target is None:
            tleft, ttop = -2, 2
            tright, tbottom = 2, -2
        elif isinstance(target, ppb.Vector):
            tleft, ttop = target
            tright, tbottom = target
        else:
            tleft, ttop = target[0]
            tright, tbottom = target[1]

        if source is None:
            sleft, stop = 0, 0
            sright, sbottom = 0, 0
        elif isinstance(source, ppb.Vector):
            sleft, stop = source
            sright, sbottom = source
        else:
            sleft, stop = source[0]
            sright, sbottom = source[1]

        step = duration / 100
        for i in range(int(100 * duration)):
            tx = tleft + random() * (tright - tleft)
            ty = tbottom + random() * (ttop - tbottom)
            sx = sleft + random() * (sright - sleft)
            sy = sbottom + random() * (stop - sbottom)
            spos = self.position + V(sx, sy)
            tpos = self.position + V(tx, ty)
            delay(i * step,
                  lambda spos=spos, tpos=tpos: ParticleSystem.spawn(
                      spos, color, tpos))
예제 #3
0
 def on_seed_corruption(self, ev, signal):
     if self.x == ev.x and self.y == ev.y:
         if not self.is_corrupt:
             self.is_corrupt = True
             tween(self, 'color', COLOR_NEARBLACK, 1.0, easing='out_quad')
             tween(self, 'size', 0.8, 1.0, easing='out_quad')
             self.sparkle(1.0, rate=0.1)
             delay(1.0, lambda: signal(SeedCorruptionComplete()))
예제 #4
0
 def attack(self, dmg, signal):
     tween(self, 'position', self.position - V(1, 0), 0.1, easing='in_quad')
     tween(self,
           'position',
           self.position,
           0.1,
           delay=0.1,
           easing='out_quad')
     delay(0.1, lambda: signal(DamageDealt('player', dmg)))
     self.plan_attack()
예제 #5
0
    def tick():
        nonlocal hp
        hp -= d
        if target.hp >= d:
            target.shield += d

        if perf_counter() > end:
            if hp > 0:
                target.shield += hp
        else:
            delay(1.0, tick)
예제 #6
0
def chime(t, signal):
    global _chime_playing
    if not _chime_playing:
        signal(PlaySound(SOUND_CHIME))
        SOUND_CHIME.volume = 6.0
        tween(SOUND_CHIME, 'volume', 0.0, t, easing='out_quad')
        _chime_playing = True

        def done():
            global _chime_playing
            _chime_playing = False

        delay(t, done)
예제 #7
0
파일: com.py 프로젝트: AmitNiz/BookMe_Bot
 def login(self,email,password,addr):
     self.driver.get(addr)
     email_id =self.driver.find_element_by_id('i0116')
     email_id.send_keys(email)
     btn= self.driver.find_element_by_id('idSIButton9') # Email Button
     btn.click()
     passport_id = self.driver.find_element_by_id('i0118')
     passport_id.send_keys(password)
     timer.delay()
     btn_2 = self.driver.find_element_by_id('idSIButton9')
     btn_2.click()
     btn_3 = self.driver.find_element_by_id('idSIButton9')
     btn_3.click()
     reservation_btn = self.driver.find_element_by_xpath("//*[@class='btn btn-success save create btnCreate']")
     timer.delay()
     reservation_btn.click()
예제 #8
0
 def spawn(cls, pos, color, heading=None, tsize=2.5):
     s = cls.sparkles[cls.index]
     cls.index = (cls.index + 1) % cls.size
     if color == COLOR_BLACK:
         s.opacity_mode = 'blend'
         s.opacity = 255
     else:
         s.opacity_mode = 'add'
         s.opacity = 128
     s.color = color
     s.position = pos
     s.rotation = randint(0, 260)
     s.size = 1.5
     s.layer = 100
     cls.t.tween(s, 'opacity', 0, 0.5, easing='linear')
     cls.t.tween(s, 'size', tsize, 0.5, easing='linear')
     delay(0.5, lambda: setattr(s, 'size', 0))
     if heading:
         cls.t.tween(s, 'position', heading, 0.5, easing='linear')
예제 #9
0
    def on_monster_death(self, ev, signal):
        t = ENEMIES[self.monster_index].get('deathtime', 2.0)

        delay(0.5, lambda: setattr(ev.monster, 'smoke_enabled', False))
        delay(
            1.0, lambda: tween(ev.monster,
                               'position',
                               POS_ENEMY + V(4, 0),
                               2.0,
                               easing='out_quad'))
        delay(3.0, lambda: setattr(ev.monster, 'smoke_enabled', True))
        delay(3.0, lambda: signal(MonsterSpawn(ev.monster)))
예제 #10
0
def main():
  stabilizeSwitch.initialize()
  gyroSensor.initialize()
  homePositionSwitch.initialize()
  motor.initialize()

  timer.delay(500);

  stabilizeState = stabilizeSwitch.position()
  
  while 1:
    while stabilizeSwitch.position() == stabilizeState:
      pass
    
    stabilizeState = stabilizeSwitch.position()
    goHome()

    if stabilizeState == stabilizeSwitch.on:
      goToStartStabilizePosition()
      stabilize()
예제 #11
0
def shield(duration, target, hp):
    """Reduce incoming damage by a certain amount over a number of seconds."""

    start = perf_counter()
    end = start + duration
    d = floor(hp / duration)

    def tick():
        nonlocal hp
        hp -= d
        if target.hp >= d:
            target.shield += d

        if perf_counter() > end:
            if hp > 0:
                target.shield += hp
        else:
            delay(1.0, tick)

    delay(1.0, tick)
예제 #12
0
def heal(duration, target, hp):
    """Heal the target an amount of HP over a number of seconds."""

    start = perf_counter()
    end = start + duration
    d = floor(hp / duration)

    def tick():
        nonlocal hp
        hp -= d
        if target.hp >= d:
            target.hp += d

        if perf_counter() > end:
            if hp > 0:
                target.hp += hp
        else:
            delay(1.0, tick)

    delay(1.0, tick)
예제 #13
0
            def _():
                enemy = first(self.scene.get(tag='enemy'))

                if corruption:
                    enemy.sparkler.burst(
                        1,
                        COLOR_BLACK,
                        source=(V(-2, -2), V(2, 2)),
                        target=V(0, 0),
                    )
                    delay(1, lambda: signal(EnemyAttack(enemy, corruption)))

                if dmg:
                    # signal(DamageDealt('monster', dmg))
                    i = choice([c for c in colors if c >= 0])
                    enemy.sparkler.burst(0.25, SEED_COLORS[i])

                if heal:
                    player = first(self.scene.get(tag='player'))
                    player.sparkler.burst(
                        2.0,
                        COLOR_GREEN,
                        source=V(0, -1.25),
                        target=(V(-1, 1.5), V(1, 1)),
                    )
                    spells.heal(2.0, player, 4)

                if shield:
                    player = first(self.scene.get(tag='player'))
                    player.sparkler.burst(
                        3.0,
                        COLOR_YELLOW,
                        source=V(2, 0),
                        target=(V(2, 2.5), V(2, -2.5)),
                    )
                    spells.shield(3.0, player, 6)
예제 #14
0
def turnCW():
    #output PWM
    print('turn motor clockwise.')
    timer.delay(50)
    return 1
예제 #15
0
def goToStartStabilizePosition():
  print('go to stabilize position.')
  motor.turnCW()
  timer.delay(motor.timeToStartPosition)
예제 #16
0
    def find_matches(self, signal):
        if self.frozen:
            return
        if self.tweener.is_tweening:
            self.tweener.when_done(lambda: self.find_matches(signal))
            return

        seeds = set()
        colors = defaultdict(int)
        points = 0

        # [-2, -1, =0, +1, +2]
        # Only need to loop to 0's because we look at at least the next two to make 3-matches
        for x in range(-2, 3):
            for y in range(-2, 3):

                try:
                    match_seeds, match_points = self.find_one_match(x, y)
                except GridCellOutOfBounds:
                    continue
                except GridCellMissing:
                    # A cell was missing, so something is in motion, stop looking for matches...
                    return
                else:
                    if match_seeds:
                        points += match_points
                        seeds.update(match_seeds)

        # END grid loop
        signal(ScorePoints(points))

        if seeds:
            # Add up the matched seeds for each color and animate them accordingly
            d = 0.5
            # Calculate damage and spell effects
            dmg = 0
            shield = 0
            heal = 0
            corruption = 0
            for seed in seeds:
                attack = False
                colors[seed.seed_type] += 1
                if seed.seed_type == SEED_GREEN:
                    dest = POS_PLAYER
                    heal += 1
                elif seed.seed_type == SEED_YELLOW:
                    dest = POS_PLAYER
                    shield += 1
                elif seed.seed_type == SEED_CORRUPTED:
                    dest = POS_ENEMY
                    corruption += 1
                else:
                    dest = POS_ENEMY
                    dmg += 1
                    attack = True

                t = 0.1 * dist(seed.position, dest)

                seed.free()
                seed.layer = 10

                delay((1.0 - d), lambda seed=seed: seed.sparkle(t))
                self.tweener.tween(seed,
                                   'size',
                                   1.1,
                                   0.1,
                                   easing='out_quad',
                                   delay=1.0 - d - 0.1)
                self.tweener.tween(seed,
                                   'position',
                                   dest,
                                   t,
                                   easing='out_quad',
                                   delay=1.0 - d)
                self.tweener.tween(seed,
                                   'size',
                                   0.0,
                                   t,
                                   easing='in_quad',
                                   delay=1.0 - d)

                if attack:
                    delay(t + (1.0 - d),
                          lambda: signal(DamageDealt('monster', 1)))

                d *= 0.5

            signal(MovementStart(colors))

            def _():
                chime(t + 1.0 - d, signal)

            delay(d, _)

            def _():
                enemy = first(self.scene.get(tag='enemy'))

                if corruption:
                    enemy.sparkler.burst(
                        1,
                        COLOR_BLACK,
                        source=(V(-2, -2), V(2, 2)),
                        target=V(0, 0),
                    )
                    delay(1, lambda: signal(EnemyAttack(enemy, corruption)))

                if dmg:
                    # signal(DamageDealt('monster', dmg))
                    i = choice([c for c in colors if c >= 0])
                    enemy.sparkler.burst(0.25, SEED_COLORS[i])

                if heal:
                    player = first(self.scene.get(tag='player'))
                    player.sparkler.burst(
                        2.0,
                        COLOR_GREEN,
                        source=V(0, -1.25),
                        target=(V(-1, 1.5), V(1, 1)),
                    )
                    spells.heal(2.0, player, 4)

                if shield:
                    player = first(self.scene.get(tag='player'))
                    player.sparkler.burst(
                        3.0,
                        COLOR_YELLOW,
                        source=V(2, 0),
                        target=(V(2, 2.5), V(2, -2.5)),
                    )
                    spells.shield(3.0, player, 6)

            delay(1.0 - d + t, _)

            @self.tweener.when_done
            def on_tweening_done():
                for seed in seeds:
                    seed.layer = 1

                # Drop new seeds at the top of each column with gaps
                for x in range(-2, 3):

                    # Collect all the seeds in a column and drop them
                    column = []
                    for y in range(-2, 3):
                        seed = GRID.get(x, y)
                        if seed:
                            column.append(seed)
                    if len(column) < 5:
                        gap = 0
                        for y in range(-2, 3):
                            if (x, y) not in GRID:
                                gap += 1
                            else:
                                if gap > 0:
                                    seed = GRID[x, y]
                                    del GRID[x, y]
                                    seed.y -= gap
                                    GRID[seed.x, seed.y] = seed
                                    self.tweener.tween(seed,
                                                       'position',
                                                       ppb.Vector(
                                                           seed.x, seed.y),
                                                       1 + random() * 0.25,
                                                       delay=0.5,
                                                       easing='out_bounce')

                    # Add new seeds at the top
                    for i in range(gap):
                        if seeds:
                            seed = seeds.pop()
                            seed.drop(self.tweener, x, 2 - i)

                self.tweener.when_done(lambda: signal(MovementDone()))

        return seeds
예제 #17
0
 def on_scene_started(self, ev, signal):
     self.scene = ev.scene
     delay(3, lambda: self.send_seed_corrupt(signal))
     self.tweener = Tweener()
     self.scene.add(self.tweener)
예제 #18
0
 def sparkle(self, seconds, rate=0.01):
     self.stop_sparkle()
     self.sparkle_timer = repeat(rate, self.spark)
     delay(seconds, self.stop_sparkle)
예제 #19
0
def turnCCW():
    #output PWM
    print('turning motor counter clockwise.')
    timer.delay(50)
    return 1
예제 #20
0
 def sparkle(self, seconds, color):
     self.start_sparkle(color)
     delay(seconds, self.stop_sparkle)