主要内容 #
-
- 定义方格类
- 定义画方格的函数
1.定义方格类 #
首先我们来定义一个方格类来存储方格的各种属性,也是整个游戏里唯一的一个类。
class Box: def __init__(self, topleft, text, color): self.topleft = topleft self.text = text self.color = color def render(self, surface): x, y = self.topleft pygame.draw.rect(surface, self.color, (x, y, box_size, box_size), 0) # 画方格 text_height = 35 font_obj = pygame.font.SysFont("arial", text_height) text_surface = font_obj.render(self.text, True, (0, 0, 0)) # 写数字 text_rect = text_surface.get_rect() text_rect.center = (x + 50, y + 50) surface.blit(text_surface, text_rect)
将以上所有代码加入到上一课创建的项目文件中(该代码请置放在main()函数上面),运行,发现无任何变化,因为该部分只是定义了方格类,还未将方格画出。
2.定义画方格的函数 #
然后我们利用方格类来定义一个画方格的函数,这里我们简单用4*4的方格来演示,其实大家可以自定义方格个数:
def draw_box(): # 画游戏的方格 colors = {0: (192, 192, 192), 2: (255, 255, 240), 4: (255, 250, 205), 8: (255, 165, 79),16: (250, 128, 114), 32: (255, 69, 0), 64: (238, 0, 0), 128: (238, 230, 133), 256: (255, 245, 0), 512: (238, 238, 0), 1024: (255, 255, 0), 2048: (255, 106, 106)} #定义不同数字对应不同的颜色 x, y = left_of_screen, top_of_screen size = 425 pygame.draw.rect(screen, (0, 0, 0), (x, y, size, size)) x, y = x + box_gap, y + box_gap for i in range(4): # 这里的i,j就是4*4的方格,其实大家可以修改为其他大小的,前提是board也要增加对应的行列 for j in range(4): idx = board[i][j] if idx == 0:# 如果是0则不显示数字 text = "" else: text = str(idx) if idx > 2048: idx = 2048 color = colors[idx] # 颜色随数字变化,如果是其他数字则根据数字判断底色。 box = Box((x, y), text, color) # 创建方格实体 box.render(screen) # 显示到屏幕上 x += box_size + box_gap x = left_of_screen + box_gap y += top_of_screen + box_gap
将以上所有代码加入到上一课创建的项目文件中(该代码请置放在main()函数和box类中间),运行,发现无任何变化,因为该部分只是定义了画方格的方法,并未调用该方法。
接下来需要在main()函数中添加如下代码,再次运行,即可在界面中查看画出方格的效果。
# 在main()中找到如下这部分代码 screen.blit(background, (0, 0)) # 背景展示 # 并且在下一行增加如下这段代码 draw_box() # 初始化方格
小结 #
- 本节主要介绍了2048游戏所需的方格以及如何画方格的方法。