Pygame简介与RGB三元色

Pygame,我们把它读做“pai game”。安装这个模块的方法很简单,只要在命令提示符里输入pip install pygame –user即可。它是一个用来开发制作电子游戏的模块,基于SDL开发制作的。SDL是Simple DirectMedia Layer前三个字母,意思是“简单直接媒体层”。它是一个跨平台的用来直接访问键盘、鼠标、游戏操作棒和图形(通过OpenGL和Direct3D)的优秀的C语言库。SDL支持Windows, Mac OS X, Linux, iOS, and Android。所以Pygame模块天然支持上述操作系统。

使用Pygame模块,可以用少量的代码快速地开发游戏。然而,你却不一定要用Pygame制作游戏。比如,你可以用它来处理图像,用它来制作一个多媒体视频播放器,或者用它来制作一个演示勾股定律的小程序,甚至制作一个明信片贺卡之类的程序,送给其它人。在这个过程中,首先我们要了解颜色的一些知识。

电脑上的图片都有分辨率,比如一张图片的分辨率为800×600。它的意思是说这张图片的宽度是800,高度是600。即一行有800个点,一列有600个点。那么总共就包括480000个点。这些点叫像素点。我们把最左上角的点的坐标叫原点,即它的坐标为(0,0)。离原点正右言10个像素距离的点的坐标就是(10,0)。离原点正下方10个像素点距离的坐标点就是(0,10)。最右下角的点的坐标为(800,600)。如果我们拿放大镜一看电视机,尤其是以前那种分辨率很低的电视机,我们能很明显地看到“大大”的像素点。一个像素点表示一个单一的颜色。一个单一的颜色由三种颜色合成的,这叫做三元色。它们分别是红,绿,蓝。它们的英文为red,green,blue,简称为RGB。我们把红色分256个等份,把它叫做r值。r值是从0到255的数值。如果r值为0,即红色等份为0,相当于红色份量没有。如果r值为1那么红色份量就有了,不过很少。如果r值为127,那么就有一“半”红了。其它颜色也是一样的。如果一种颜色的r值为255,g值也是255,b值为0,那么这种颜色就是黄色。可以用三元组把黄色写为(255,255,0)。下面我们用海龟画图模块来举个例子。

"""
   显示黄色的背景示例.py
"""

import turtle

color = (255,255,0)         # 黄色三元组

screen = turtle.getscreen()  # 获取屏幕对象
screen.colormode(255)        # 设定屏幕颜色模式
screen.bgcolor(color)        # 设定屏幕背景颜色
screen.mainloop()            # 进入主循环刷新组件

在海龟画图中是有颜色模式的,默认的模式是1.0。在第10行中我们用屏幕的colormode命令把颜色模式改为255。这样海龟像块就能把第7行的元组识别为黄色。我们可以重新设定第7行的代码,如把第7行设计为color = (0,0,255),那么背景将会是蓝色的。在第12行中,海龟画图的整个屏幕进入了一个不断刷新过程,这个过程会对屏幕上的像素不断地重新显示。如果是用Pygame制作游戏,那么我们通常也会新建一个屏幕对象。并且最后显示画面的时候也通常会进入一个主循环中不断地进行刷新。不过这个循环需要我们自己编写代码。但是无论是用turtle模块和Pygame模块,用来制作动画或游戏的原理都是一样的。假设要显示一张gif图形,我们都要把gif图形中的每一张图给拆分出来,然后让程序一张一张地去显示。这样我们就能看到gif图片在播放了。下面让我们来编写第一个Pygame程序。

"""
   第一个Pygame程序.py
"""

import pygame         # 导入Pygame模块

pygame.init()         # 初始化Pygame

screen = pygame.display.set_mode((480,360)) #  新建屏幕

pygame.display.set_caption("我的第一个Pygame程序")

要使用Pygame模块,当然首先要导入这个模块,然后对它进行初始化。上面的程序第9行能新建一个窗口,并且通过参数来设置分辨率。注意参数是一个二元组。当上面的程序运行后,就会有一个黑乎乎的窗口显示出来了。最后第11句就会给窗口加上标题。set_mode是设置模式的意思。set_caption就是设置标题的意思。而pygame.display是Pygame模块中的一个子模块。它用来处理显示相关的事情。screen对象是一个图层对象。它的英文名为surface。你可以把它当成一个在内存里的图像。它也能通过pygame.Surface这个类来新建一个图像。现在这个图像是黑色的,这是因为set_mode命令默认就会把它设为黑色。如果要改这个图像的颜色,可以用screen.fill((255,0,0)),这样图像就填充为红色了。当然,也可以取或设置screen上的像素点的颜色,用get_at或set_at命令即可。接下来为了更好的学习Pygame,我们来学习矩形对象。