Python项目实践之三:添加 Play 按钮和提高游戏等级

本文介绍了如何在Python游戏项目中添加Play按钮,并在游戏进程中提高游戏等级。通过创建Button类实现按钮功能,包括按钮的创建、在屏幕上绘制、响应玩家操作以开始或重置游戏。同时,通过修改速度设置和重置速度,当玩家清除所有外星人后,游戏会加速,提升挑战性。
摘要由CSDN通过智能技术生成

Python项目实践之三:添加 Play 按钮和提高游戏等级

现在外星人入侵游戏项目已经实现了武装飞船和外星人群的功能,本章主要添加一些辅助功能,如添加一个开始按钮,计分板信息和随着游戏的进行加快游戏节奏。

一、添加 Play 按钮

需求:添加 Play 按钮,它在游戏开始前出现,并在游戏结束后再次出现,让玩家能够开始新游戏。

需要实现此项功能,我们需要先把game_stats.py中的game_active参数设置成False,在玩家没有按下Play按钮时,游戏处于非活性状态:

		# 游戏刚启动时处于活动状态
        self.game_active = False
1、创建 Button 类

由于Pygame没有内置创建按钮的方法,我们创建一个 Button 类,用于创建带标签的实心矩形。

在项目文件下添加一个 button.py 文件:

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, 255, 0)
        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)

解释:
1、导入模块 pygame.font ,它让Pygame能够将文本渲染到屏幕上。
2、__init__接收参数:self(绑定到对象), ai_settings(获取游戏元素的相关设置),screen(获取游戏界面相关属性), msg(在按钮中显示的文本)。
3、 self.width 和 self.height:设置按钮的尺寸,self.button_color:设置按钮的颜色,self.text_color:设置按钮中文本的颜色,self.font:设置字体的类型(None为默认字体)及大小。
4、通过按钮的rect属性把创建好的按钮定位到游戏界面中。
5、prep_msg():自定义的一个函数,注意用于将要显示的字符串渲染为图像来处理文本。

在Button类中定义prep_msg():

    def prep_msg(self, msg):
        """将msg渲染为图像,并使其在按钮上居中"""
        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

解释:
1、 font.render() :将存储在msg 中的文本转换为图像,然后将该图像存储在 msg_image 中。
2、通过文本的rect属性把创建好的文本定位到按钮界面中。

最后,我们在Button类中定义 draw_button() ,通过调用它可将这个按钮显示到屏幕上:

    def 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值