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
评论列表
文章目录