IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 学习Pygame---Day2 -> 正文阅读

[Python知识库]学习Pygame---Day2

今天学习的是改变窗口的颜色,保存设置以及让飞船出现在窗口中

设置背景颜色

? ? ? ? pygame默认的颜色是黑色,对于要在窗口中显示的图片很不友好,所以我们需要修改背景颜色:

    def __init__(self):
        '''初始化游戏并创建游戏资源'''
        pygame.init()#初始化背景设置 init->initialize

        -----------snip------------ 

        pygame.display.set_caption("Alien Invasion")

        # 设置背景颜色
        self.bg_color = (230, 230, 230)

????????在初始化中添加一个名为bg_color的属性,元组中的三个参数为RGB的组合,元组(230,230,230)为一种灰色,我们尽量选择浅色来做背景。

? ? ? ? 然后在更新下一张图片前,把颜色加上:

    def run_game(self):
        '''开始游戏的主循环'''
        while True:
        --------snip---------

            # 每次循环时都会重绘屏幕
            self.screen.fill(self.bg_color)
            pygame.display.flip()

????????这样,窗口就成为了灰色。

保存设置

? ? ? ? 我们发现,随着游戏元素的增多,参数是越来越多。所以为什么不专门拿一个模块来放置参数呢?为此,我们创建一个名为settings.py的文件,并且把之前的参数全部放进去:

class Settings:
    '''储存游戏中的所有设置'''

    def __init__(self):
        '''初始化游戏的设置'''

        # 屏幕设置
        self.screen_width = 1200
        self.screen_height = 700
        self.bg_color = (230, 230, 230)

? ? ? ? 这样,要创建或改变参数时,只需要在这个文件里改就行了,访问他也只需要导入并创建实例即可,我们来改变一下我们的alien_invasion,py:

from settings import Settings# 导入模块
class AlienInvasion:
        ----------snip------------
        #创建一个“设置”实例,之前的值就可以修改了
        self.settings = Settings()

        self.screen = pygame.display.set_mode(
            (self.settings.screen_width, self.settings.screen_height))
        ----------snip------------
    def run_game(self):
        while True:
            ------snip-------
            self.screen.fill(self.settings.bg_color)

添加飞船

? ? ? ? 首先我们得有一个飞船图片,最好是bmp格式的,因为pygame默认加载就是这种格式,当然常见的png,jpg是可以用photoshop等工具修改的,这里我们用的是bmp格式的图片:

? ? ? ? 新建一个名为images的文件,把这张图(命名为ship.bmp)放进去,以后的图也都会放在这个文件夹里。

? ? ? ? 为了设置飞船的一些参数,我们把创建一个名为ship.py的文件,整体代码如下:

import pygame
class Ship:
    '''管理飞船的类'''

    def __init__(self, ai_game):# ai_game为AlienInvasion的一个实例
        '''初始化飞船并设置其初始位置'''
        self.screen = ai_game.screen# 将窗口赋值给了Ship,让其可以访问屏幕
        self.screen_rect = ai_game.screen.get_rect()# 把窗口的rect属性赋值,为了能正确放置飞船的位置

        #加载飞船的图像并获取其外界矩形
        self.image = pygame.image.load("images/ship.bmp")# 加载图片,参数是图片的相对路径
        self.rect = self.image.get_rect()# 把图像的位置赋值,以便调整位置

        # 对于每艘新的飞船,我们把他放在屏幕底部中间
        self.rect.midbottom = self.screen_rect.midbottom# 把窗口的底部中间赋值给飞船的底部中间,也就默认了飞船在底部中间

    def blitme(self):
        '''在指定的位置绘制飞船'''
        self.screen.blit(self.image, self.rect)

? ? ? ? ?首先要说明一下什么是rect,他是一种对象(rectangle:矩形)。他能让你用处理矩形的方式来处理非矩形的元素,这使得处理一些事务(如碰撞)很简单,因为他是简单的几何图形。当然后果就是判断不精确,如两个圆形相碰撞时,只要他们的外界矩形触碰,我们就判断他们相碰了。

? ? ? ? 知道定义后,就能理解get_rect()函数了,即获取图片或窗口(surface变量)的rect信息?。

? ? ? ? 其中比较难理解的就是下面这段了:

self.rect.midbottom = self.screen_rect.midbottom

????????看右边,self.screen_rect是窗口的rect信息,而midbottom函数是获取他的底部中间位置,然后把这个位置赋值给飞船的底部中中间位置,这样飞船就能在窗口的底部中间了。

? ? ? ? 最后在修改一下alien_invasion.py函数就行了:

from ship import Ship# 导入ship模块
class AlienInvasion:

    def __init__(self):
    -------snip--------
        self.ship = Ship(self) #创建一个飞船的实例

    
    def run_game(self):
        while True:
        ---------snip----------
            # 在重绘图片后,把飞船画上去
            self.ship.blitme()
            pygame.display.flip()

? ? ? ? 这样,飞船就能出现啦:

?

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:29:40  更:2021-08-15 15:30:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:13:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码