Example #1
0
def fold(server: TexasServer, conn):
    player = server.players[conn]
    room_index = server.rooms.index(player.room)
    player.fold()
    conn.send(Message(text=f"已弃牌").encode())
    server.room_notice(room_index,
                       text=f"玩家<{player.name}>弃牌",
                       ignore_players=[player])
    player.room.receive_chips(player, 0)
    if not player.room.is_bet_success() and player.room.is_ready():
        current_player_conn = server.get_conn(player.room.current_player)
        server.room_notice(room_index,
                           text=f"等待玩家<{player.room.current_player.name}>下注",
                           ignore_players=[player.room.current_player])
        current_player_conn.send(Message(text="请下注", status=200).encode())
Example #2
0
def bet(server: TexasServer, conn, chips):
    player = server.players[conn]
    room_index = server.rooms.index(player.room)
    player.bet(int(chips))
    conn.send(Message(text=f"下注{chips}成功").encode())
    server.room_notice(
        room_index,
        text=f"玩家<{player.name}>下注{chips},当前注码{player.bet_round_chips},"
        f"底池{player.room.pot + player.bet_round_chips}",
        ignore_players=[player])
    player.room.receive_chips(player, int(chips))
    if not player.room.is_bet_success() and player.room.is_ready():
        current_player_conn = server.get_conn(player.room.current_player)
        server.room_notice(room_index,
                           text=f"等待玩家<{player.room.current_player.name}>下注",
                           ignore_players=[player.room.current_player])
        current_player_conn.send(Message(text="请下注", status=200).encode())
Example #3
0
def allin(server: TexasServer, conn):
    player = server.players[conn]
    room_index = server.rooms.index(player.room)
    player.allin()
    conn.send(Message(text=f"All in {player.allin_chips}").encode())
    server.room_notice(
        room_index,
        text=
        f"玩家<{player.name}> 全推,当前注码{max(player.room.public_bet, player.bet_round_chips)},"
        f"底池{player.room.pot + player.allin_chips}",
        ignore_players=[player])
    player.room.receive_chips(player, player.allin_chips)
    if not player.room.is_bet_success() and player.room.is_ready():
        current_player_conn = server.get_conn(player.room.current_player)
        server.room_notice(room_index,
                           text=f"等待玩家<{player.room.current_player.name}>下注",
                           ignore_players=[player.room.current_player])
        current_player_conn.send(Message(text="请下注", status=200).encode())
Example #4
0
def raise_(server: TexasServer, conn, chips):
    player = server.players[conn]
    room_index = server.rooms.index(player.room)
    public_bet = player.room.public_bet
    bet_chips = player.bet_round_chips
    player.raise_(public_bet, int(chips))
    new_bet_chips = player.bet_round_chips - bet_chips
    conn.send(Message(text=f"加注到{public_bet + int(chips)}").encode())
    server.room_notice(
        room_index,
        text=f"玩家<{player.name}>加注,当前注码{player.bet_round_chips},"
        f"底池{player.room.pot + new_bet_chips}",
        ignore_players=[player])
    player.room.receive_chips(player, new_bet_chips)
    # 加注需要校准注码
    player.room.public_bet = player.bet_round_chips
    if not player.room.is_bet_success() and player.room.is_ready():
        current_player_conn = server.get_conn(player.room.current_player)
        server.room_notice(room_index,
                           text=f"等待玩家<{player.room.current_player.name}>下注",
                           ignore_players=[player.room.current_player])
        current_player_conn.send(Message(text="请下注", status=200).encode())
Example #5
0
def ready(server: TexasServer, conn):
    player = server.players[conn]
    player.ready()
    conn.send(Message(text=f"已准备,等待其他玩家准备", status=200).encode())
    room = player.room
    if room.is_ready():
        room_index = server.rooms.index(room)
        server.room_notice(room_index, text="牌局开始")
        room.trigger()
        room.card_set.deal(room)
        server.room_notice(room_index, text="发牌完成")
        for p in room.players:
            p.menu = GameMenu
            cards = ''.join([str(card) for card in p.hole_cards])
            server.logger.info(f"玩家<{p.name}>,底牌{cards}")
            player_conn = server.get_conn(p)
            player_conn.send(Message(text=p.show_cards(), status=200).encode())
            if p == room.current_player:
                player_conn.send(Message(text="请下注", status=200).encode())
        server.room_notice(room_index,
                           text=f"等待玩家<{room.current_player.name}>下注",
                           ignore_players=[room.current_player])