一、pygame简介
Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发。允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,Pygame 是一个高可移植性的模块可以支持多个操作系统。用它来开发小游戏非常适合。
pip install pygame 下载并安装使用pygame。
二、pygame使用
使用pygame的第一步是将pygame库导入到python程序中,以便来使用它
import pygame
然后需要引入pygame中的所有常量。
from pygame.locals import *
再经过初始化以后我们就可以尽情地使用pygame了。初始化pygame:
pygame.init()
通常来说我们需要先创建一个窗口,方便我们与程序的交互。下面创建了一个600 x 500的窗口
screen = pygame.display.set_mode((600,500))
1.打印字体
pygame支持使用pygame.font将文打印到窗口。要打印文本的话首先需要创建一个文字对象
myfont = pygame.font.Font(None,60)
这个文本绘制进程是一个重量级的进程,比较耗费时间,常用的做法是先在内存中创建文本图像,然后将文本当作一个图像来渲染。
white = 255,255,255
black= 0,0,0
textImage = myfont.render("Hello Pygame", True, white)
textImage 对象可以使用screen.blit()来绘制。上面代码中的render函数第一个参数是文本,第二个参数是抗锯齿字体,第三个参数是一个颜色值(RGB值)。
要绘制本文,通常的过程是清屏,绘制,然后刷新。
screen.fill(black)
screen.blit(textImage, (100,100))
pygame.display.update()
如果此时运行程序的话,会出现一个窗口一闪而过。为了让它长时间的显示,我们需要将它放在一个循环中。
import pygame
from pygame.locals import *
white = 255,255,255
black = 0,0,0
pygame.init()
screen = pygame.display.set_mode((600,500))
myfont = pygame.font.Font(None,60)
textImage = myfont.render("Hello Pygame", True, white)
while True:
for event in pygame.event.get():
if event.type in (QUIT, KEYDOWN):
sys.exit()
screen.fill(black)
screen.blit(textImage, (100,100))
pygame.display.update()
pygame除了打印字体,还有绘制各种常见图形的常见功能。(使用pygame.draw())
2.绘制一个圆形。
使用pygame.draw.circle()方法,该方法需要传递圆的大小,颜色和位置参数。
color = 255,255,0
position = 300,250
radius = 100
width = 10
pygame.draw.circle(screen, color, position, radius, width)
3.绘制一个矩形。
为了增添一些乐趣,咱们这次绘制一个可以移动的矩形,而不只是单单的在屏幕中间绘制。
首先,需要设置pos_x, pos_y 两个变量来记录矩形的位置信息,然后在创建一对速度变量(vel_x,vel_y),在while循环内不断的更新矩形的位置。当矩形到达屏幕边缘的时候,将速度变量取反,这样就可以产生碰撞的效果了。
import pygame
from pygame.locals import *
import sys
#初始化pygame
pygame.init()
# 设置屏幕宽高
screen = pygame.display.set_mode((600, 400))
# 设置屏幕标题
pygame.display.set_caption("my first game")
# 设置字体类型及大小
myfont = pygame.font.SysFont('arial', 100)
white = 255, 255, 255
black = 0, 0, 0
# 创建要显示的文字
txtImage = myfont.render("hello world", True, white)
color = 255, 255, 0
speedX = 0.1
xPos = 50
while True:
# 启动消息队列,获取消息并处理
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
screen.fill(black) # 填充背景
# screen.blit(txtImage, (100, 100)) #贴上文字
# pygame.draw.line(screen, color, (0, 0), (100, 100), 3)
# pygame.draw.circle(screen, color, (100, 100), 30, 1)
if xPos >= (600 - 50):
speedX = -speedX
if xPos <= 0:
speedX = -speedX
pygame.draw.rect(screen, color, (xPos, 50, 50, 50), 0)
pygame.display.update()
xPos += speedX
4.绘制线条
使用pygame.draw.line()方法,该方法,需要传递起始点和终点,还有线条的颜色和宽度
#绘制线条
color = 255,255,0
width = 8
pygame.draw.line(screen, color, (100,100), (500,400), width)