Ejemplo n.º 1
0
    def StartingFleet(self):
        out = []
        availablePoints = list(Grid.IterAllPoints())
        for i in range(1, 5):
            validShip = self.findValidShip(availablePoints, i)
            for pt in validShip:
                availablePoints.remove(pt)
            out.append(Ship(validShip))

        return Fleet(out)
Ejemplo n.º 2
0
    def __repr__(self):
        out = "   A  B  C  D  E  F  G  H  I  J \n"
        for i, point in enumerate(Grid.IterAllPoints()):
            if (i) % 10 == 0:
                out += str((i/10)+1)
                if (i/10 + 1) != 10:
                    out += " "
            itemType = self.getPositionType(point)
            if itemType == STRUCK_SHIP:
                out += " H "
            elif itemType == STRIKE:
                out += " X "
            elif itemType == SHIP:
                out += " O "
            else:
                out += " . "

            if (i+1) % 10 == 0:
                out += "\n"

        return out
Ejemplo n.º 3
0
    def Play(self, delay):
        for i in range(2 * len(list(Grid.IterAllPoints()))):
            if delay:
                sleep(delay)
            current = self.player1Context if i % 2 == 0 else self.player2Context
            other = self.player1Context if i % 2 == 1 else self.player2Context

            def arrangeBoards():
                out = "Player1: " + self.player1Context.player.PlayerName(
                ) + 40 * " " + "Player2: " + self.player2Context.player.PlayerName(
                ) + "\n"
                p1strikes = self.player1Context.strikeBoard.__repr__().split(
                    "\n")
                p1ships = self.player1Context.shipBoard.__repr__().split("\n")
                p2strikes = self.player2Context.strikeBoard.__repr__().split(
                    "\n")
                p2ships = self.player2Context.shipBoard.__repr__().split("\n")
                for i in range(len(p1strikes)):
                    out += p1strikes[i] + " " * 20 + p2strikes[i] + "\n"
                for i in range(len(p1ships)):
                    out += p1ships[i] + " " * 20 + p2ships[i] + "\n"
                return out

            try:
                print arrangeBoards()
                print "Make your move: ", current.player.PlayerName()
                nextStrike = current.player.NextStrike(
                    current.strikeBoard.GetPositions())
                isHit = other.shipBoard.RecordStrike(nextStrike.x,
                                                     nextStrike.y)
                current.strikeBoard.RecordStrike(nextStrike.x, nextStrike.y,
                                                 isHit)
                print arrangeBoards()
                if other.shipBoard.IsFleetSunk():
                    return current.player
            except Exception as e:
                raise Exception("Error playing turn for",
                                str(current.player.PlayerName()), e)
Ejemplo n.º 4
0
 def __init__(self, name):
     self.name = name + "(random)"
     self.availableMoves = list(Grid.IterAllPoints())
Ejemplo n.º 5
0
 def test_all_valid_points(self):
     self.assertEqual(
         set(Point(x, y)
             for x in range(1,11)
             for y in "ABCDEFGHIJ"),
         set(Grid.IterAllPoints()))
Ejemplo n.º 6
0
 def __init__(self):
     self.name = "Alphabetical player"
     self.allPoints = sorted(list(Grid.IterAllPoints()), reverse=True)