系列文章目录
一、Pygame的安装与项目规划
二、开始游戏项目:创建pygame窗口及响应用户输入
前言
考完研了,基本是炸了- -。怎么说呢,人生没有一帆风顺的时候的,我也能明白的。
本章我们来继续引入一些新的设置用来更好给游戏添加新的功能
一、设置背景色
通过上一章的学习,我们可以发现当我们运行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,结果不会有任何的不同,因为我们只是将设置移动到了不同的地方。现在!下一章我们可以开始在屏幕上添加新的元素了。