外星人入侵之武装飞船(2)

目录

目录

前言

思维导图

项目文章列表

1,设置背景色

1.1,背景颜色指定

RGB 

1.2,用背景色填充整个屏幕

2,创建设置类

2.1,创建settings.py 文件

2.2,修改alien_invasion.py文件

2.2.1,导入模块 

 2.2.2,进行alien_invasion.py文件参数修改

3,填加飞船图像

3.1,创建Ship类

3.1.1,初始化飞船并获取其初始位置

3.1.2,在指定位置绘制飞船

3.2,在屏幕上绘制飞船 

3.2.1,导入模块

 3.2.2,创建飞船

3.2.3, 将飞船绘制到屏幕

2.2.4,展示成果 

4,总结


前言

  经过几个月的学习,自己也有了一些学习python的经验,想通过几个稍微大一点的项目的来对自己的开发能力进行训练和评估,从今天继续进行学习和练习Python编程从入门到实践这本书里面的项目。

  本项目中,自己会对项目中使用的一些方法和构造进行解读,自己学会就是自己的东西。

思维导图

项目文章列表

外星人入侵之武装飞船(1)

1,设置背景色

1.1,背景颜色指定

          为了避免现在的游戏屏幕黑乎乎一片,为屏幕设置一种常见的颜色颜色吧

   因为颜色只需要指定一次,所以我们只需要在,while循环前指定颜色即可,这里接着上次的代码,如果不清楚的可以看上一篇文章。

                  这里为bg_color,也就是背景颜色,后面是RGB的参数 

 pygame.display.set_caption("外星人入侵")

    # 设置背景色(RGB)
    bg_color = (220, 226, 241)

    # 开始游戏的主循环
    while True:  # 永真使得游戏一直执行

RGB 

这里补充一个知识点,RGB

Pygame 中,颜色是以 RGB 值指定的,这种颜色由 红色、绿色和蓝色值 组成,其中每个值
的可能取值范围都为 0~255 。颜色值 (255, 0, 0) 表示红色, (0, 255, 0) 表示绿色,而 (0, 0, 255) 表示蓝色。通过组合不同的RGB 值, 可创建1600万种颜色 。在颜色值(220, 226, 241 )中,它将背景设置为一种海天蓝。

这里推荐一下

11种能减少眼睛疲劳的护眼色_附颜色代码及RGB值 

1.2,用背景色填充整个屏幕

  在pygame中调用方法 screen.fill() ,然后传入bg_color的颜色参数,用背景色填充屏幕;
注意: 这个方法只接受一个实参一种颜色。
 # 监听键盘和鼠标事件
        for event in pygame.event.get():  # 使用方法pygame.event.get()。所有键盘和鼠标事件都将促使for循环运行
            if event.type == pygame.QUIT:  # 如果玩家单机游戏窗口关闭按钮,则将检测到pygame.QUIT事件
                sys.exit()  # 坚持到事件后,退出游戏

        # 每次循环时都重绘屏幕
        screen.fill(bg_color)
        # 让最近绘制的屏幕可见
        pygame.display.flip()

2,创建设置类

2.1,创建settings.py 文件

  在每次为游戏增加新功能时,我们需要引入一些新的设置,为了我们能够更方便维护和使用,并使的游戏更加容易修改,我们创建一个settings.py 文件,方便将游戏中的所有类都存储在这个文件中。

class Settings():
    """存储《外星人入侵》的所有设置的类"""

    def __init__(self):
        """初始化游戏的设置"""
        # 屏幕设置
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (220, 226, 241)

     这里我们增加一个Settings类,然后对类中的屏幕宽度,高度和颜色参数进行初始化

2.2,修改alien_invasion.py文件

为了能够使的settings.py与本文件相互使用,为们需要对本文件进行改动。

2.2.1,导入模块 

 首先我们需要将setting.py文件中导入Settings类,这行代码就在最上面,导入库的位置

from settings import Settings  # 从settings.py文件导入Settings类

 2.2.2,进行alien_invasion.py文件参数修改

 pygame.init()  # 初始化背景设置,让Pygame能够正确地工作
    S_settings = Settings()  # 创建Setting实例赋值给S_Setting
    # 创建一个名为screen的显示窗口,实参(1200, 800)是一个元组,指定了游戏窗口的尺寸,宽1200像素,高800像素
    screen = pygame.display.set_mode((S_settings.screen_width, S_settings.screen_height))

            在这里,我们创建一个Settings()实例赋值给,S_Setting。

然后我们需要对将括号内的参数改为使用实例去访问。

   如果对类的知识不是很熟悉或是遗忘了,可以看我写的一篇文章复习一下。

Python基础语法:类笔记 

3,填加飞船图像

  下面将飞船加入到游戏中。为了在屏幕上绘制玩家的飞船,我们将加载一幅图像,再使用
Pygame方法blit()绘制它。 当然选择游戏素材时,注意不要侵权,选择合适图片进行,这里我给出游戏配套的飞船图片,就是这个样子的飞船作为游戏的素材。
 

3.1,创建Ship类

  我们选择好飞船图片后,考虑到需要对飞船进行很多操作,这里我们首先创建一个ship.py的文件,然后进行创建一个ship的模块,其中包含Ship类用于管理飞船的大部分行为。

下面我们主要进行以下几个操作:

import pygame


class Ship():
    def __init__(self, screen):
        """初始化飞船并设置其初始位置"""
        self.screen = screen

        # 加载飞船图像并获取其外接矩形
        self.image = pygame.image.load('ship.bmp')  # 加载飞船图像
        self.rect = self.image.get_rect()  # 获取图像的矩形
        self.screen_rect = screen.get_rect()  # 获取屏幕的矩形

        # 将每艘新飞船放在屏幕底部中央
        self.rect.centerx = self.screen_rect.centerx  # 设置飞船的横坐标为屏幕中心点的横坐标
        self.rect.bottom = self.screen_rect.bottom  # 设置飞船的纵坐标为屏幕底部的纵坐标

    def blitme(self):
        """在指定位置绘制飞船"""
        self.screen.blit(self.image, self.rect)  # 绘制飞船图像到指定的矩形位置上

3.1.1,初始化飞船并获取其初始位置

  先初始化screen,然后加载飞船图像,我们需要获取图像以及屏幕的矩形。

然后进行飞船位置的定位,都是使用的是pygame中的模块。

代码如上: 

3.1.2,在指定位置绘制飞船

 这里使用blit方法进行绘制

代码如上: 

3.2,在屏幕上绘制飞船 

3.2.1,导入模块

首先,我们继续在alien_invasion.py文件中导入ship模块

from ship import Ship          # 从ship.py文件导入Ship类

 3.2.2,创建飞船

然后我们在底代码中, 示例化ship飞船,为避免每次都创建一艘飞船,所以在while前创建。

 pygame.display.set_caption("外星人入侵")
    
    # 创建一艘飞船
    ship = Ship(screen)

    # 开始游戏的主循环
    while True:  # 永真使得游戏一直执行

3.2.3, 将飞船绘制到屏幕

      在上次代码的基础上,调用blitme方法进行绘制制飞船。这也是类相关的知识点,示例化后使用对象调用方法。

 # 每次循环时都重绘屏幕
        screen.fill(S_settings.bg_color)
        ship.blitme()  # 调用ship.blitme()将飞船绘制到屏幕上

2.2.4,展示成果 

到这里,我们就能看到在正中央最下面的小飞船了,当然这里,我没有将图片背景显示为透明色,只需自行处理一下就ok了。

4,总结

本篇文章主要是对上一篇文章的继续制作,增加了对游戏背景的改观,然后就是对后续游戏项目中的类管理做了两个框架,作用是方便对于游戏中的一些设置的管理,以及游戏飞船相关的管理。

每日一言

不管全世界所有人怎么说,我都认为自己的感受才是最正确的,无论别人怎么看,我绝不打乱自己的节奏,喜欢的事自然可以坚持,不喜欢的怎么也长久不了。

  如果我的学习笔记对你有用,不妨点赞收藏一下,感谢你的支持,当然也欢迎大佬给我一下建议或是对笔记中的不足进行补充,对我学习大有帮助,谢谢。  

猜你喜欢

转载自blog.csdn.net/weixin_72543266/article/details/132549005