先上代码:
import pygame
import sys
import random
from pygame.locals import *
pygame.init()
width = 2048
height = 1152
DISPLAYSURF = pygame.display.set_mode((width, height), 0, 32)
pygame.display.set_caption("Drawing")
DISPLAYSURF.fill((255, 255, 255))
pixels = pygame.PixelArray(DISPLAYSURF)
def random_color():
return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)
def random_points():
for _ in range(1000000):
pixels[random.randint(0, width-1)][random.randint(0, height-1)] = random_color()
random_points()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
首先,我们导入pygame和pygame.locals模块,用于稍后调用pygame相关函数。随后,我们导入random模块用于生成随机坐标,并且导入sys模块用于退出程序。
首先,我们先使用pygame.init()对pygame模块进行初始化。这一步可以说是相当重要,如果不对该模块进行初始化,则稍后对pygame进行的所有调用都会报错。
随后,我们定义一些值。首先我们定义width和height为我们的窗口大小。随后,我们把DISPLAYSURF设置为一个pygame.display.set_mode()对象。这就是我们的窗口对象。最后,我们使用pygame.display.set_caption()函数设置窗口的标题为”Drawing”。
随后,我们使用DISPLAYSURF.fill()函数把画布使用纯白色进行填充。
之后,我们创建一个画布上所有像素的列表,并且把这个列表赋值给pixels。
随后,我们定义了两个用于绘画的函数random_color和random_points()。random_color()函数将会返回一个随机的RGB颜色元组,而random_points()函数则会把整个画布范围内的随机像素染上随机颜色。pixels是一个二维列表,因此我们使用了两个中括号,第一个中括号代表x值,而第二个中括号则代表y值。后面的=表示把这个像素设为某某颜色,我们在这里调用了random_color函数,因此这个像素就得到了一个随机函数。
定义完这两个函数后,我们使用random_pixels()调用绘制函数。
到这里,你可以试试看运行一下程序,但是你并不会在屏幕上看到随机的散点图,而是一片空白。这是因为我们还没有进入窗口主循环。后面,我们自己创建了一个窗口主循环。首先我们使用while True:来表示这是一个无限循环。随后,我们使用for event in pygame.event.get()来持续不断的从pygame.event.get()函数获取窗口接收到的事件。如果发现接收到的事件类型为QUIT,那么就调用pygame.quit()和sys.exit()两个函数退出程序。最后,我们还使用了pygame.display.update()函数,通过这个函数,我们可以持续的刷新屏幕,这在那些使用pygame创建的动画游戏当中尤为重要。