开始游戏项目:设置背景色和创建设置类


系列文章目录

一、Pygame的安装与项目规划

二、开始游戏项目:创建pygame窗口及响应用户输入

文章目录

前言

一、设置背景色

1.1 RGB值

1.2 surface模块fill( )方法

二、创建设置类

总结



前言

考完研了,基本是炸了- -。怎么说呢,人生没有一帆风顺的时候的,我也能明白的。

本章我们来继续引入一些新的设置用来更好给游戏添加新的功能


一、设置背景色

        通过上一章的学习,我们可以发现当我们运行alien_invasion.py时,出现的窗口是一个黑色屏幕,对于我们来说,这过于乏味了。下面我们来将背景设置为另外一种颜色,这是在方法__init__( )末尾进行的:

import sys

import pygame
class AlienInvasion:
    """管理游戏资源和行为的类"""
    def __init__(self):
        --snip--
        pygame.display.set_caption("ALien Invasion")
        #设置背景色
        self.bg_color = (230,230,230)
    def run_game(self):
        --snip--
            #监视键盘和鼠标的动作
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
            #每次循环时都重新绘制屏幕
            self.screen.fill(self.bg_color)
            #让最近绘制的屏幕可见
            pygame.display.flip()

1.1 RGB值

         在Pygame中,颜色是以TGB值指定的,即三原色(红绿蓝),其中每个值得取值范围都是0~255

        颜色(255,0,0)表示红色,一次类推,通过组合不同的RGB值,可以创建1600万种颜色,在颜色值(230,230,230)中,红色、绿色、蓝色的量相同,他生成一种浅灰色。我们将这种颜色作为背景色,赋值给self.bg_color变量

1.2 surface模块fill( )方法

        pygame.Surface.fill( )-----使用纯色填充Surface对象

        本系列的surface窗口都为screen,我们调用fill( )方法用灰色作为背景色填充屏幕。方法fill( )只接受一个实参:一种颜色。


二、创建设置类

        每次给游戏添加新功能时,通常也将引入一些新设置。下面来编写一个名为settings的模块,在其中包含一个名为Settings的类,用于将所有设置都存储在一个地方,以免在代码中到处添加设置。这样每当需要访问设置时,只需要使用一个设置对象。另外,在项目增大时,这使得修改游戏的外观和行为更加容易:要修改游戏,只需要修改(接下里将创建的)settings.py中的一些值,而无需查找散布在项目中的各种设置。

这运用到了类的继承与类的属性修改,有兴趣的童鞋可以去链接里复习一下。

        在文件夹alien_invasion中,新建一个名为settings.py的文件,并在其中添加如下Settings类:

class Settings:
    """存储游戏《外星人入侵》中所有设置的类"""
    def __init__(self):
        """初始化游戏的设置"""
        #屏幕设置
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (230,230,230)

为在项目中创建Settings实例并用它来访问设置,需要将alien_invasion.py修改成下面这种:

--snip--
import pygame
from settings import Settings
class AlienInvasion:
    def __init__(self):
        """初始化游戏并创建游戏资源"""
        pygame.init()
        self.settings = Settings()
        self.screen = pygame.display.set_mode((self.settings.screen_width,self.settings.screen_height))
        pygame.display.set_caption("ALien Invasion")

    def run_game(self):
        --snip--
        #每次循环时都重绘屏幕
        self.screen.fill((self.settings.bg_color))

        #让最近绘制的屏幕可见
        pygame.display.dlip()
    --snip--

         在主程序文件中,导入Settings类,调用pygame.init( ),再创建一个Settings实例并将其赋给self.settings( 即self.settings=Settings( )处 )。

        创建屏幕时(即self.seceen=pygame.display.set_mode(--snip--)处),使用了self.settings的属性screen_width和screen_height。接下来填充屏幕时,也是用了self.settings的属性来访问背景色。



总结

如果此时运行alien_invasion.py,结果不会有任何的不同,因为我们只是将设置移动到了不同的地方。现在!下一章我们可以开始在屏幕上添加新的元素了。

猜你喜欢

转载自blog.csdn.net/m0_64660514/article/details/122174069