紧接第一部分。
上一部分已经做到把最开始的2048的游戏界面绘制出来了,然后再开始2048游戏控制部分算法编写之前,先增加一点界面显示以及重启按钮。
首先编写一个显示文字的函数,可以通过这个函数控制文本显示的位置,内容,以及文字底部背景颜色。
#显示文本文字在屏幕上
def make_text(text, color, bg_color, top, left):
text_surf = basic_font.render(text, True, color, bg_color)
text_rect = text_surf.get_rect()
text_rect.topleft = (top, left)
return text_surf, text_rect
在主程序,获取棋盘board二维列表代码之上,加入这段代码,因为重启按钮涉及到鼠标点击和按钮重合的问题,所以按钮的框架,以及按钮本身需要单独创建。
reset_surf, reset_rect = make_text('Reset', text_color, tile_color, screen_width - 120, screen_height - 90)
修改绘制函数内容,增加显示游戏名称以及显示重启按钮操作。
#绘制游戏背景面板,此处开始根据board中的内容绘制游戏主界面了,一开始绘制的是已经完成好的界面
def draw_board(board, message):
display.fill(bg_color)
if message:
text_surf, text_rect = make_text(message, message_color, bg_color, 0, 0)
display.blit(text_surf, text_rect)
for x in range(board_width):
for y in range(board_height):
if board[x][y]:
draw_tile(x, y, board[x][y])
else:
draw_tile(x, y, '')
# 绘制游戏边框
left, top = get_left_top_of_tile(0, 0)
width = board_width * tile_size
height = board_height * tile_size
# 边框不要和滑片重合,所以稍微往四周挪动一点距离
pygame.draw.rect(display, border_color, (left-11, top-11, width+16, height+16), 4)
# 绘制三个按钮,其实是三个文字显示而已
display.blit(reset_surf, reset_rect)
然后修改一下draw_board(main_b