termclient.py 文件源码

python
阅读 34 收藏 0 点赞 0 评论 0

项目:defuse_division 作者: lelandbatey 项目源码 文件源码
def draw_state(stdscr, state, me):
    """
    draw_state draws the state of a MineField onto a curses window.
    """
    startx, starty = 1, 1
    stdscr.erase()

    xoffset = 0
    players = state['players']
    for idx, pname in enumerate(sorted(players.keys())):
        player = players[pname]
        field = player['minefield']

        width, height = board_termsize(field['width'], field['height'])
        namey = starty + height
        middlefmt = "{{: ^{}}}"
        disp_name = middlefmt.format(width).format(pname)[:width]
        if pname == me:
            attr = curses_colors.get_colorpair('green-black')
        else:
            attr = curses.A_NORMAL

        for cell in field['cells']:
            glyphs = display.assemble_glyphs(cell, player)
            for g in glyphs:
                stdscr.addstr(g.y + starty, g.x + startx + xoffset, g.strng,
                              g.attr)
        # If a user has died, draw a big 'you're dead' message in the middle of
        # their board
        if not state['players'][pname]['living']:
            dead = middlefmt.format(width).format('WASTED')
            h = height // 2
            stdscr.addstr(h, startx+xoffset, dead, curses_colors.get_colorpair('yellow-red'))
        stdscr.addstr(namey, startx + xoffset, disp_name, attr)
        xoffset += width
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号