首页 > 编程语言 >Python从入门到实践project飞船射击外星人2

Python从入门到实践project飞船射击外星人2

时间:2023-12-13 18:31:55浏览次数:50  
标签:Python self 外星人 project score button msg screen rect

project飞船射击外星人

1加入play按钮

创建button文件

import pygame.font  # 能在游戏里添加文本


class Button:
    def __init__(self,ai_game,msg):
        """初始化按钮的属性"""
        self.screen = ai_game.screen
        self.screen_rect = self.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)


    def _prep_msg(self,msg):
        """将msg渲染为图像,并使其在按键上居中"""
        # render渲染文字(文本,是否开始反锯齿功能:True文本边缘更加平滑,文本文字颜色,背景颜色)
        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)  # 将文本绘制在矩形上

主文件导入按钮

from button import Button

Python从入门到实践project飞船射击外星人2_背景颜色

初始化资源导入按钮

# 创建 play 按钮
self.play_button = Button(self,"Play")

Python从入门到实践project飞船射击外星人2_project_02

导入绘制按钮行为

# 如果游戏处于非活动状态就绘制Play按钮
if not self.stats.game_active:
    self.play_button.draw_button()

Python从入门到实践project飞船射击外星人2_重置_03

运行游戏

Python从入门到实践project飞船射击外星人2_飞船射击外星人_04

屏幕获取鼠标位置并检测方法

elif event.type == pygame.MOUSEBUTTONDOWN:  # 如果用户按下鼠标
    mouse_pos = pygame.mouse.get_pos()   # 获得鼠标位置
    self._check_play_button(mouse_pos)  # 位置传入_check_play_button方法

Python从入门到实践project飞船射击外星人2_初始化_05

检查按键方法

def _check_play_button(self,mouse_pos):
        """玩家单机Play按钮时开始新游戏"""
        button_clicked = self.play_button.rect.collidepoint(mouse_pos)  # 鼠标按下的位置是在play_button里面
        if button_clicked and not self.stats.game_active:  # 鼠标被按下并且游戏不在运行
            self.stats.reset_stats()   # 重置游戏统计信息
            self.stats.game_active = True  # 启动游戏

            self.aliens.empty()  # 清空余下的外星人
            self.bullet.empty()  # 情况子弹

            self._create_fleet()  # 创建新的一群外星人
            self.ship.center_ship()  # 并使其居中

            pygame.mouse.set_visible(False)  # 隐藏鼠标光标

游戏结束光标回来

pygame.mouse.set_visible(True)

Python从入门到实践project飞船射击外星人2_背景颜色_06

2游戏难度升级

设置初试速度与加速之后速度

class Settings:
    def __init__(self):
        """初始化游戏的设置"""
        # 屏幕设置
        self.screen_width = 1200
        self.screen_height = 700
        self.bg_color = (255,255,255)   # 设置背景颜色RGB(红,绿,蓝)
        self.ship_speed = 0.7  # 设置飞船运行速度


        # 子弹设置
        self.bullet_speed = 0.8
        self.bullet_width = 3
        self.bullet_height = 6
        self.bullet_color = (60,60,60)
        self.bullet_allowed = 3   # 设置子弹每组数量

        # 外星人设置
        self.alien_speed = 1.0   # 设置外星人向右移动速度
        self.fleet_drop_speed = 10   # 设置外星人向下移动速度
        # fleet_direcrion为1表示向右移,为-1表示向左移
        self.fleet_direction = 1

        # 设置飞船数量
        self.ship_limit = 3

        # 加快游戏节奏速度
        self.speedup_scale = 1.1  # 游戏当前速度
        self.initialize_dynamic_settings()

    def initialize_dynamic_settings(self):
        """初始化随游戏进行而变化的设置"""
        self.ship_speed = 1.5
        self.bullet_speed = 3.0
        self.alien_speed = 1.0
        # fleet_direction为1表示向右,为-1表示向左
        self.fleet_direction = 1

    def increase_speed(self):
        """提高速度设置"""
        self.ship_speed *= self.speedup_scale
        self.bullet_speed *= self.speedup_scale
        self.alien_speed *= self.speedup_scale

主程序加入速度升级模块

self.setting.increase_speed()

Python从入门到实践project飞船射击外星人2_重置_07

当游戏开始时速度重置

self.setting.initialize_dynamic_settings()

Python从入门到实践project飞船射击外星人2_重置_08

3设置计分系统

设置重置分数信息

self.score = 0

Python从入门到实践project飞船射击外星人2_初始化_09

创建分数代码文件

创建文件Scoredboard显示游戏得分

import pygame.font


class Scoreboard:
    """显示得分信息的类"""
    
    
    def __init__(self,ai_game):
        """初始化显示得分涉及的属性"""
        self.screen = ai_game.screen
        self.screen_rect = self.screen.get_rect()
        self.settings = ai_game.setting
        self.stats = ai_game.stats
        # 显示得分信息时使用的字体设置
        self.text_color = (30,30,30)
        self.font = pygame.font.SysFont(None,48)
        # 准备初始得分图像
        self.prep_score()
        
    def prep_score(self):
        """将得分转换为一副渲染的图像"""
        score_str = str(self.stats.score)
        self.score_image = self.font.render(score_str,True,self.settings.bg_color)
        
        # 在屏幕右上角显示得分
        self.screen_rect = self.score_image.get_rect()
        self.screen_rect.right = self.screen_rect.right - 20
        self.screen_rect.top = 20
        
    def show_score(self):
        """在屏幕上显示得分"""
        self.screen.blit(self.score_image,self.screen_rect)

导入文件

from scoreboard import Scoreboard
# 创建存储游戏统计信息的实例,并创建记分牌
self.stats = GameStats(self)
self.sb = Scoreboard(self)

Python从入门到实践project飞船射击外星人2_重置_10

显示记分

self.sb.show_score()

Python从入门到实践project飞船射击外星人2_重置_11

设置初始射杀分值

self.alien_points = 50

Python从入门到实践project飞船射击外星人2_初始化_12


更新主文件射杀分值

if collisions:  # 一旦射杀成功
            for aliens in collisions.values():  # 碰撞发生个数,确保每次碰撞都会加分
                self.stats.score += self.setting.alien_points * len(aliens)  # 分值增加
                self.sb.prep_score()   # 渲染更新后分值

Python从入门到实践project飞船射击外星人2_重置_13


游戏重开重设分值

self.sb.prep_score()

Python从入门到实践project飞船射击外星人2_飞船射击外星人_14

设置分数随等级提升而改变

# 外星人分数的提升速度
self.score_scale = 1.5
self.initialize_dynamic_settings()

Python从入门到实践project飞船射击外星人2_project_15

self.alien_points = int(self.alien_points * self.score_scale)

Python从入门到实践project飞船射击外星人2_背景颜色_16

标签:Python,self,外星人,project,score,button,msg,screen,rect
From: https://blog.51cto.com/u_16352455/8805205

相关文章

  • 人工智能 | Python:易学、强大、多用途的编程语言
    Python发展历史Python是一门高级编程语言,由GuidovanRossum(龟叔)在1989年发明,设计Python语言的初衷是为了创造一种介于C和shell之间,简洁方便,易学易用,功能全面,可拓展的语言。龟叔在1989年圣诞节期间,以由荷兰的数学和计算机研究所开发的ABC语言为蓝本,开始开发一门新......
  • python3源码方式安装
    系统默认的python3版本过低,得自己安装高版本python3。步骤主要为:1、删除旧版本。2、安装依赖。3、下载源码。4、配置。5、编译。参考链接:CentOS7安装python3超详细教程1、删除旧版pyhton3,执行:rpm-qa|greppython3|xargsrpm-ev--allmatches--nodeps2、安装依赖,执行:yum-......
  • Python:递归函数
    一、函数的递归什么是函数的递归:函数的递归就是函数的递归调用:是函数嵌套调用的一种形式。具体是指:在调用一个函数的过程中又直接或者间接的调用到本身。#1、直接调用本身(简单理解为死循环)deff1():print('直接调用本身实例:')f1()#调用f1()#由于没有......
  • Python——第五章:处理异常try、except、else、finally
    在Python中,try和except语句用于处理异常(错误)。通过使用这两个关键字,你可以编写代码来捕获和处理可能发生的异常,以保持程序的稳定性。try:try代码except错误1as变量1:except1代码except错误2as变量2:except2代码except错误3as变量3:except3......
  • ArgoCD AppProject CRD
    Project概述Projects负责为Application提供逻辑分组,它主要实现如下功能:1.限制可以部署的内容(指定受信任的GitSource仓库)2.限制Application可以部署到的目标位置(指定目标Cluster和Namespace)3.限制能够及不能够部署的对象类型,例如RBAC、CRD、DeamonSets、NetworkPolicy等4......
  • 如何在D盘上安装Python
    Python是一种功能强大且广泛使用的编程语言,非常适合开发各种类型的应用程序。在Windows操作系统中,默认情况下,Python会被安装在C盘上,但是用户也可以选择将其安装在其他驱动器,比如D盘。下面是在D盘上安装Python的步骤:1.下载Python安装程序:首先,你需要从官方Python网站下载Python的安装......
  • 【Python爬虫】Scrapy框架图片下载_桌面壁纸ZOL(纯案例)
    Spider代码classBizhizolSpider(scrapy.Spider):name="bizhizol"allowed_domains=["zol.com.cn"]start_urls=["https://desk.zol.com.cn/youxi/"]defparse(self,response,**kwargs):#print(response.te......
  • Python高级之装饰器
    装饰器【一】装饰器介绍装饰器的由来软件的设计应该遵循开放封闭原则,即对扩展是开放的,而对修改是封闭的。对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。对修改封闭,意味着对象一旦设计完成,就可以独立完成其工作,而不要对其进行修改。软件包......
  • 【Python爬虫】Scrapy框架文件写入方式CSV,MYSQL,MongoDB_爬取新浪彩票双色球
    Spider代码爬取新浪彩票双色球页面数据,只爬取期号、红球、篮球classShuangseqiu11Spider(scrapy.Spider):name="shuangseqiu11"allowed_domains=["sina.com.cn"]start_urls=["https://view.lottery.sina.com.cn/lotto/pc_zst/index?lottoType=ssq&......
  • C++堆——heap与二叉树和python
    数据结构栈-->stack队列-->queue树-->tree堆-->heap散列-->hash图-->graph图结构一般包括顶点和边邻接矩阵DAG,DirectedAcyclicGraph即「有向无环图」树树(Tree)是一种非线性的数据结构,由n个节点组成,其中每个节点都有零个或多个子节点。......