예제 #1
0
 def __init__(self, width, height, ship_sizes, player1, player2):
     self.width = width
     self.height = height
     self.player1 = player1
     self.player2 = player2
     self.players = [self.player1, self.player2]
     self.ship_sizes = ship_sizes
     self.observer = SimpleObserver()
     self.observer.set_players(player1.name, player2.name)
     logger.info("*" * 80)
     logger.info("board size:%d x %d" % (self.width, self.height))
     logger.info("ship sizes: %s" % (str(self.ship_sizes)))
예제 #2
0
 def __init__(self, width, height, ship_sizes, player1, player2):
     self.width = width
     self.height = height
     self.player1 = player1
     self.player2 = player2
     self.players = [self.player1, self.player2]
     self.ship_sizes = ship_sizes
     self.observer = SimpleObserver()
     self.observer.set_players(player1.name, player2.name)
     logger.info("*" * 80)
     logger.info("board size:%d x %d" % (self.width, self.height))
     logger.info("ship sizes: %s" % (str(self.ship_sizes)))
예제 #3
0
class BattleshipServer(object):
    def __init__(self, width, height, ship_sizes, player1, player2):
        self.width = width
        self.height = height
        self.player1 = player1
        self.player2 = player2
        self.players = [self.player1, self.player2]
        self.ship_sizes = ship_sizes
        self.observer = SimpleObserver()
        self.observer.set_players(player1.name, player2.name)
        logger.info("*" * 80)
        logger.info("board size:%d x %d" % (self.width, self.height))
        logger.info("ship sizes: %s" % (str(self.ship_sizes)))

    ####################################################################
    def run(self):
        game_over = False
        try:
            ### get ship placement
            self.send_all_clients("|INFO|grid size|%d %d|END|" %
                                  (self.width, self.height))
            self.observer.send("|grid size|%d %d|END|" %
                               (self.width, self.height))
            self.send_all_clients("|INFO|num ships|%d|END|" %
                                  len(self.ship_sizes))
            self.observer.send("|num ships|%d|END|" % len(self.ship_sizes))
            str_ship_sizes = "|".join([str(x) for x in self.ship_sizes])
            self.send_all_clients("|INFO|ship sizes|%s|END|" % str_ship_sizes)
            self.observer.send("|ship sizes|%s|END|" % str_ship_sizes)

            self.get_ships(self.player1)
            self.get_ships(self.player2)

            ### start game loop
            while not game_over:
                game_over = self.play_round()
        except ClientErrorException, e:
            if e.winner:
                game_over = e.winner
            elif e.loser:
                game_over = self.other_player_name(e.loser)
            self.report_winner(game_over == self.player1.name,
                               game_over == self.player2.name)
        if game_over == True:
            game_over = None
        self.end_game()
        return game_over
예제 #4
0
class BattleshipServer(object):
    def __init__(self, width, height, ship_sizes, player1, player2):
        self.width = width
        self.height = height
        self.player1 = player1
        self.player2 = player2
        self.players = [self.player1, self.player2]
        self.ship_sizes = ship_sizes
        self.observer = SimpleObserver()
        self.observer.set_players(player1.name, player2.name)
        logger.info("*" * 80)
        logger.info("board size:%d x %d" % (self.width, self.height))
        logger.info("ship sizes: %s" % (str(self.ship_sizes)))

    ####################################################################
    def run(self):
        game_over = False
        try:
            ### get ship placement
            self.send_all_clients("|INFO|grid size|%d %d|END|" % (self.width, self.height))
            self.observer.send("|grid size|%d %d|END|" % (self.width, self.height))
            self.send_all_clients("|INFO|num ships|%d|END|" % len(self.ship_sizes))
            self.observer.send("|num ships|%d|END|" % len(self.ship_sizes))
            str_ship_sizes = "|".join([str(x) for x in self.ship_sizes])
            self.send_all_clients("|INFO|ship sizes|%s|END|" % str_ship_sizes)
            self.observer.send("|ship sizes|%s|END|" % str_ship_sizes)

            self.get_ships(self.player1)
            self.get_ships(self.player2)

            ### start game loop
            while not game_over:
                game_over = self.play_round()
        except ClientErrorException, e:
            if e.winner:
                game_over = e.winner
            elif e.loser:
                game_over = self.other_player_name(e.loser)
            self.report_winner(game_over == self.player1.name, game_over == self.player2.name)
        if game_over == True:
            game_over = None
        self.end_game()
        return game_over