Ejemplo n.º 1
0
def do_cards(player):
    """Turn in all of a player's cards"""
    for a, b, c in itertools.combinations(player.cards, 3):
        if riskengine.CardSet([a, b, c]).value() is not None:
            riskengine.logai("turning in cards")
            riskengine.turnincards(player, [a, b, c])
            return False
    
    return True
Ejemplo n.º 2
0
def do_cards(player):
    card_function = getattr(player.ai, "TurnInCards", None)
    print 'Trying to do cards. The card function is: ', card_function
    if callable(card_function):
        c1, c2, c3 = card_function(player)
        if c1 is not None:
            riskengine.logai("turning in cards")
            riskengine.turnincards(player, [c1, c2, c3])
    if len(player.cards) >= 5:
        do_auto_cards(player)
Ejemplo n.º 3
0
def do_auto_cards(player):
    """Turn in all of a player's cards"""
    if len(player.cards) >= 5:
        for a in range(len(player.cards) - 2):
            for b in range(a + 1, len(player.cards) - 1):
                for c in range(b + 1, len(player.cards)):
                    if riskengine.cardset(
                        [player.cards[a], player.cards[b], player.cards[c]]):
                        riskengine.logai("turning in cards")
                        riskengine.turnincards(player, [
                            player.cards[a], player.cards[b], player.cards[c]
                        ])
                        return
Ejemplo n.º 4
0
def showcards():
    """Show a player's cards"""
    if riskengine.phase == "Pregame":
        return

    if riskengine.currentplayer and \
       hasattr(riskengine.currentplayer, "connection"):
        return #even server shouldn't be able to see another client's cards

    cdialog = CardsDialog(root, "Cards:")
    if hasattr(cdialog, "selectcards"):
        cards = cdialog.selectcards
        if len(cards) != 3:
            return
        givecards = []
        for card in cards:
            givecards.append(riskengine.currentplayer.cards[int(card)])
        riskengine.turnincards(riskengine.currentplayer, givecards)
Ejemplo n.º 5
0
def showcards():
    """Show a player's cards"""
    if riskengine.phase == "Pregame":
        return
    
    if riskengine.currentplayer and \
       hasattr(riskengine.currentplayer, "connection"):
        return #even server shouldn't be able to see another client's cards
        
    cdialog = CardsDialog(root, "Cards:")
    if hasattr(cdialog, "selectcards"):
        cards = cdialog.selectcards
        if len(cards) != 3:
            return
        givecards = []
        for card in cards:
            givecards.append(riskengine.currentplayer.cards[int(card)])
        riskengine.turnincards(riskengine.currentplayer, givecards)
Ejemplo n.º 6
0
def server_receive_message(mess, sock):
    """Run when the server receives a message"""
    print >>riskengine.verbosefile, mess, "server received"
    parts = splitparms(mess)
    if parts[0] == "newplayer":
        riskgui.net_newplayer(parts[1])
        riskengine.players[parts[1]].connection = sock
        for sck in sockets:
            if sck != sock:
                sendparts(sck, "newplayer", parts[1])
    if parts[0] == "handle_selection":
        if hasattr(riskengine.currentplayer, "connection") and riskengine.currentplayer.connection == sock:
            riskengine.handleselection(riskengine.territories[parts[1]], int(parts[2]))
    if parts[0] == "start_fortifying":
        riskengine.startfortifying()
    if parts[0] == "next_turn":
        riskengine.nextturn()
    if parts[0] == "turnincards":
        if hasattr(riskengine.currentplayer, "connection") and riskengine.currentplayer.connection == sock:
            cd = []
            for c in riskengine.currentplayer.cards:
                if c.territory in parts[1:]:
                    cd.append(c)
            riskengine.turnincards(riskengine.currentplayer, cd)
    if parts[0] == "message":
        pla = sockettoplayer(sock)
        if pla:
           plname = pla.name
        else:
           plname = "Someone"
        riskgui.set_status(plname + " sent message: " + parts[1])
    if parts[0] == "leaving":
        sockets.remove(sock)
        sock.close()
        pla = sockettoplayer(sock)
        if pla:
           plname = pla.name
        else:
           plname = "Someone"
        riskgui.set_status(plname + " has left")
            
Ejemplo n.º 7
0
def server_receive_message(mess, sock):
    """Run when the server receives a message"""
    print >>riskengine.verbosefile, mess, "server received"
    parts = splitparms(mess)
    if parts[0] == "newplayer":
        riskgui.net_newplayer(parts[1])
        riskengine.players[parts[1]].connection = sock
        for sck in sockets:
            if sck != sock:
                sendparts(sck, "newplayer", parts[1])
    if parts[0] == "handle_selection":
        if hasattr(riskengine.currentplayer, "connection") and riskengine.currentplayer.connection == sock:
            riskengine.handleselection(riskengine.territories[parts[1]], int(parts[2]))
    if parts[0] == "start_fortifying":
        riskengine.startfortifying()
    if parts[0] == "next_turn":
        riskengine.nextturn()
    if parts[0] == "turnincards":
        if hasattr(riskengine.currentplayer, "connection") and riskengine.currentplayer.connection == sock:
            cd = []
            for c in riskengine.currentplayer.cards:
                if c.territory in parts[1:]:
                    cd.append(c)
            riskengine.turnincards(riskengine.currentplayer, cd)
    if parts[0] == "message":
        pla = sockettoplayer(sock)
        if pla:
            plname = pla.name
        else:
            plname = "Someone"
        riskgui.set_status(plname + " sent message: " + parts[1])
    if parts[0] == "leaving":
        sockets.remove(sock)
        sock.close()
        pla = sockettoplayer(sock)
        if pla:
            plname = pla.name
        else:
            plname = "Someone"
        riskgui.set_status(plname + " has left")