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)
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
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)
def __init__(self, name): self.name = name + "(random)" self.availableMoves = list(Grid.IterAllPoints())
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()))
def __init__(self): self.name = "Alphabetical player" self.allPoints = sorted(list(Grid.IterAllPoints()), reverse=True)