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

简介: 文章介绍了如何使用Python进行游戏开发,特别是通过创建外星人入侵游戏来学习Python编程。并提供了项目的思维导图。文章分为几个部分,首先介绍了如何设置游戏屏幕的背景色,通过调用pygame.display.set_caption()和screen.fill(bg_color)方法实现。接着,作者创建了一个名为`Settings`的类,存储游戏设置,如屏幕尺寸和背景颜色,以便于管理和修改。通过这种方式,初学者不仅可以学习Python编程基础,还能了解到类和对象的概念,以及如何组织代码以实现更复杂的功能。文章还鼓励读者自己寻找合适的图片资源,以避免侵权,并提供了一个简单的飞船图片作为参考。

前言

                     

版权声明:本文为本博主在CSDN的原创文章搬运而来,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_72543266/article/details/132549005


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


思维导图

image.gif


1,设置背景色

1.1,背景颜色指定

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

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

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

pygame.display.set_caption("外星人入侵")
    # 设置背景色(RGB)
    bg_color = (220, 226, 241)
    # 开始游戏的主循环
    while True:  # 永真使得游戏一直执行

image.gif

RGB

这里补充一个知识点,RGB

Pygame中,颜色是以RGB值指定的,这种颜色由红色、绿色和蓝色值组成,其中每个值

的可能取值范围都为0~255。颜色值(255, 0, 0)表示红色,(0, 255, 0)表示绿色,而(0, 0, 255)表示蓝色。通过组合不同的RGB值,可创建1600万种颜色。在颜色值(220, 226, 241)中,它将背景设置为一种海天蓝。

image.gif


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()

image.gif

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)

image.gif

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

2.2,修改alien_invasion.py文件

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

2.2.1,导入模块

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

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

image.gif

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))

image.gif

           在这里,我们创建一个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类

image.gif

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()将飞船绘制到屏幕上

image.gif

2.2.4,展示成果

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

image.gif

4,总结

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

每日一言

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


相关文章
|
3天前
|
存储 Python
外星人入侵之武装飞船(3)
经过几个月的学习,自己也有了一些学习python的经验,想通过几个稍微大一点的项目的来对自己的开发能力进行训练和评估,从今天继续进行学习和练习Python编程从入门到实践这本书里面的项目。本项目中,自己会对项目中使用的一些方法和构造进行解读,自己学会就是自己的东西。本文章主要是对前面写的一些代码的重构,方便对后续越来越多功能,与代码的简化,为后续代码的进一步管理提供了便利.也增加了飞船向右移动的功能,并增加了按着按键不动,飞船会一直向右移动,使得游戏更加合理,总的来说都是对我在项目制作过程中的一种思路的培养,使我对于项目开发的流程有了更加清晰的了解.
|
3天前
|
Python
外星人入侵之武装飞船(1)
本文是关于使用Python编程语言开发游戏《外星人入侵》的项目介绍。分享了自己学习Python的心得,并决定通过该项目来提升自己的编程技能,文章详细讲解了如何安装Pygame库,并逐步展示了创建游戏窗口、设置游戏标题、监听用户输入(包括键盘和鼠标事件)、处理关闭窗口的请求以及不断更新屏幕以实现平滑动画效果的代码。通过这些步骤,构建了一个基础的游戏框架。最后,文章总结了已完成的工作,并预告了接下来的开发计划。 注意:以上内容是摘要,原始文章包含更多详细解释和代码示例。
|
5月前
|
Python
外星人入侵游戏-(创新版)
外星人入侵游戏-(创新版)
37 1
|
12月前
|
SQL 安全 前端开发
|
安全 机器人 网络安全
盘点3款高端大气上档次的黑客游戏
盘点3款高端大气上档次的黑客游戏
120 0
盘点3款高端大气上档次的黑客游戏
|
C#
C#黎明前的黑暗
  学习编程已经很久了,然而技术还停留在远古时代,丝毫没有什么进步的痕迹,平常也就写一些小软件来处理工作上面遇到的一些很繁杂的问题,天生愚笨或许就是说的我。   黎明前的黑暗期,真的太长了,烂烂的文章就像烂烂的代码一样,没有逻辑感,没有篇幅,简简短短的几行就草草的解决着一个又一个的小问题,却没有一套完整或者大一点的程序。
835 0
|
安全
恶意软件“玻璃老鼠”隐藏数年之久专门攻击中国
本文讲的是恶意软件“玻璃老鼠”隐藏数年之久专门攻击中国,RSA本周公布了一个隐藏了数年之久的远程访问木马(RAT),目标是与跨国公司有联系的中国公民。
1257 0