Python外星人入侵完整代码和注释(七)

七、添加Play按钮,创建一个button.py文件

1、添加play按钮

game_stats.py: 设置game_active为False让游戏一开始处于非活动状态

2、创建button类:button.py : 导入pygame.font模块

init()方法:初始化按钮的属性 ,设置按钮的尺寸和其他属性 ,创建按钮的rect对象,并使其居中 ,按钮的标签纸创建一次(调用方法prep_msg(msg))

prep_msg()方法 :接受实参self和要渲染为图像的文本msg ,将msg渲染为图像,并使其在按钮上居中: font.render()将存储在msg中的文本转换为图像,然后将图像存储在msg_image中,还有一个布尔实参,和两个文本颜色和背景色实参。

方法draw_button.py: 绘制一个用颜色填充的按钮(screen.fill()) ,绘制文本(screen.blit())。

3、在屏幕上绘制按钮

alien_invasion.py: 导入button,创建一个名为play_button的实例 将其传递给update_screen()方法。

game_fuctions.py: 修改update_screen(): 如果游戏处于非活动状态,就绘制play按钮,此时运行,就会在屏幕中央看到一个play按钮。

代码如下

import pygame.font
class Button():
    def __init__(self,ai_settings,screen,msg):
        #初始化按钮的属性
        self.screen = screen
        self.screen_rect = screen.get_rect()

        #设置按钮的尺寸和其他属性
        self.width , self.height = 200,50
        self.button_color = (0,0,255)
        self.text_color = (255,255,255)
        self.font = pygame.font.SysFont(None,48)

        #创建按钮的rect对象,并使其居中
        self.rect = pygame.Rect(0,0,self.width,self.height)
        self.rect.center = self.screen_rect.center

        #按钮的标签只需创建一次
        self.prep_msg(msg)

    def prep_msg(self,msg):
        #将msg渲染为图像,并使其在按钮上居中
        #调用font.render()将存储在msg中的文本转为图像,存储在msg_image中
        self.msg_image = self.font.render(msg,True,self.text_color,self.button_color)
        #让文本图像在按钮上居中
        self.msg_image_rect = self.msg_image.get_rect()
        self.msg_image_rect.center = self.rect.center

    def draw_button(self):
        #绘制一个用颜色填充的按钮,再绘制文本
        self.screen.fill(self.button_color,self.rect)
        self.screen.blit(self.msg_image,self.msg_image_rect)

 点击链接 https://blog.csdn.net/Ljt101222/article/details/81253786 进入 Python外星人入侵完整代码和注释(八)

猜你喜欢

转载自blog.csdn.net/Ljt101222/article/details/81253636