Esempio n. 1
0
 def __init__ (self, cards = None):
     simu.model.table.Table.__init__ (self)
     # Draw cards.
     cards = [ ]
     while len (cards) != 3:
         card = randrange (20)
         if card not in cards:
             cards.append (card)
     self.cards = cards
     def pos (card):
         king_pos = card // 4
         queen_pos = card % 4
         if queen_pos >= king_pos:
             queen_pos += 1
         return (king_pos, queen_pos)
     # Well, this is a boring write only code which create every elements.
     self.pawns = [ ]
     # Put pawns in green zones.
     green_pos = pos (cards[0])
     for i in xrange (5):
         if i == green_pos[0]:
             kind = 'king'
         elif i == green_pos[1]:
             kind = 'queen'
         else:
             kind = 'pawn'
         pawn = RoundObstacle (100, 1)
         pawn.pos = (200, 10 + 280 * (5 - i))
         pawn.kind = kind
         self.pawns.append (pawn)
         pawn = RoundObstacle (100, 1)
         pawn.pos = (3000 - 200, 10 + 280 * (5 - i))
         pawn.kind = kind
         self.pawns.append (pawn)
     # Put pawns in playing zone.
     kind = 'pawn'
     for j in xrange (2):
         play_pos = pos (cards[2 - j])
         for i in xrange (5):
             if i in play_pos:
                 pawn = RoundObstacle (100, 1)
                 pawn.pos = (1500 - 350 * (1 + j), 350 * (5 - i))
                 pawn.kind = kind
                 self.pawns.append (pawn)
                 pawn = RoundObstacle (100, 1)
                 pawn.pos = (1500 + 350 * (1 + j), 350 * (5 - i))
                 pawn.kind = kind
                 self.pawns.append (pawn)
     # Put center pawn.
     kind = 'pawn'
     pawn = RoundObstacle (100, 1)
     pawn.pos = (1500, 350 * 3)
     pawn.kind = kind
     self.pawns.append (pawn)
     # Add everything to obstacles.
     self.obstacles += self.pawns
Esempio n. 2
0
 def check_tower (self):
     """Check whether several elements can make a tower."""
     for slots in (self.front_slots, self.back_slots):
         if slots[0].pawn is not None and slots[1].pawn is not None:
             assert slots[0].pawn.kind != 'tower'
             tower = RoundObstacle (100, 1)
             tower.kind = 'tower'
             tower.tower = [ slots[0].pawn, slots[1].pawn ]
             slots[0].pawn, slots[1].pawn = tower, None
             self.table.add_pawn (tower)
         if slots[0].pawn is not None and slots[0].pawn.kind == 'tower' \
                 and slots[2].pawn and slots[2].door_motor.angle:
             slots[0].pawn.tower.append (slots[2].pawn)
             slots[2].pawn = None
         if slots[0].pawn is None and slots[1].pawn is None \
                 and slots[2].pawn and slots[2].door_motor.angle:
             slots[0].pawn, slots[2].pawn = slots[2].pawn, None