Exemple #1
0
 def test_illegal_moves(self):
     """
     Pawns can only move into EMPTY tiles.  Can't move into
     bombs, HARD, SOFT or off the board.
     """
     board, clock = bnc()
     board.generate(3,3)
     pawn = Pawn()
     board.insertPawn((0,0), pawn)
     
     # off the board
     self.assertRaises(IllegalMove, pawn.move, 'l')
     self.assertRaises(IllegalMove, pawn.move, 'u')
     
     pawn.move('d')
     self.assertEqual(pawn.loc, (0,1))
     
     # HARD
     self.assertRaises(IllegalMove, pawn.move, 'r')
     # SOFT
     self.assertRaises(IllegalMove, pawn.move, 'd')
     
     pawn.dropBomb()
     pawn.move('u')
     
     # on bomb
     self.assertRaises(IllegalMove, pawn.move, 'd')
Exemple #2
0
    def test_move(self):
        """
        You can move it up,down,left or right, and pawnMoved will
        be called after each move.
        """
        board, clock = bnc()
        board.generate(5,5)
        board.fg_tiles[(1,1)] = EMPTY

        pawn = Pawn()
        board.insertPawn((0,0), pawn)
        
        # fake out pawnMoved
        called = []
        real_pawnMoved = board.pawnMoved
        def fake_pawnMoved(*args):
            called.append(args)
            return real_pawnMoved(*args)
        board.pawnMoved = fake_pawnMoved
        
        pawn.move('r')
        self.assertEqual(called[0], (pawn, (1,0)), "Should have "
                         "called pawnMoved")

        called.pop()
        pawn.move('d')
        self.assertEqual(called[0], (pawn, (1,1)))
        
        called.pop()
        pawn.move('l')
        self.assertEqual(called[0], (pawn, (0,1)))
        
        called.pop()
        pawn.move('u')
        self.assertEqual(called[0], (pawn, (0,0)))
Exemple #3
0
class TelnetProtocol(Telnet):

    num = 0

    move_mapping = {
        'w': 'u',
        'a': 'l',
        'd': 'r',
        's': 'd',
    }

    def connectionMade(self):
        self.factory.protocols.append(self)
        self.will(ECHO).addErrback(log.msg)
        self.will(SGA).addErrback(log.msg)
        self.wont(LINEMODE).addErrback(log.msg)

        name = string.uppercase[self.num % len(string.uppercase)]
        TelnetProtocol.num += 1
        self.pawn = Pawn(name)
        self.factory.board.insertPawn((0,0), self.pawn)


    def enableLocal(self, option):
        return option in (ECHO, SGA)


    def connectionLost(self, reason):
        self.factory.protocols.remove(self)
        self.factory.board.pawns.remove(self.pawn)


    def applicationDataReceived(self, data):
        for k in data:
            if k in self.move_mapping:
                try:
                    self.pawn.move(self.move_mapping[k])
                except YoureDead, e:
                    pass
                except IllegalMove, e:
                    pass
            elif k == 'e':
                try:
                    self.pawn.dropBomb()
                except YoureDead, e:
                    pass