欢迎来到Pygame学习笔记专栏,这是专栏的第一篇文章,从这篇文章开始,我们将深入地学习Pygame!
今天,我们来学习如何搭建Pygame框架,我们使用类和对象的方式,这样代码更有条理,更容易规划!
首先导入模块,我们需要pygame,还要pygame中的一些常量,也就是pygame.locals,sys用于退出程序
import pygame
from pygame.locals import *
import sys
定义一个类Game,用W和H存储宽高数据,为什么要用变量呢?因为我们设计一款游戏的时候难免要更改一些参数,比如窗口大小等等,如果我们使用绝对坐标的话,改变窗口大小后,很多东西都要重新去调整,这样调试的时候,就更麻烦,代码也会更繁琐,我们用变量存储,可以使用相对的坐标,通过这些存储于变量的数据进行计算,即使改变这些参数,也能自动地调整好,不管写什么代码,都要养成这样的好习惯!
class Game:
def __init__(self):
pygame.init()
self.W,self.H=800,800
self.screen=pygame.display.set_mode((self.W,self.H))
顺着条理,我们还需要一个用于监听事件的函数,这样在按下鼠标、键盘、退出窗口等等操作就可以通过这个函数进行捕捉哦!通过pygame.event.get函数捕捉到事件,然后遍历,如果它的类型QUIT,也就是退出窗口,那就结束程序
def listen(self):
for event in pygame.event.get():
if event.type==QUIT:
sys.exit()
定义一个draw函数,用于绘制物体,在我们第一个学习笔记中,我们不需要绘制任何内容,只需要搭建框架,就用pass代替
def draw(self):
pass
最后,我们需要一个主循环,也就是不断调用listen事件监听和绘制函数,并刷新屏幕,刷新屏幕用pygame.display.update函数
def run(self):
while True:
self.listen()
self.draw()
pygame.display.update()
实例化Game,运行程序
if __name__ == '__main__':
game=Game()
game.run()
最终代码
import pygame
from pygame.locals import *
import sys
class Game:
def __init__(self):
pygame.init()
self.W,self.H=800,800
self.screen=pygame.display.set_mode((self.W,self.H))
def listen(self):
for event in pygame.event.get():
if event.type==QUIT:
sys.exit()
def draw(self):
pass
def run(self):
while True:
self.listen()
self.draw()
pygame.display.update()
if __name__ == '__main__':
game=Game()
game.run()
这样就有一个窗口啦!