这节将介绍PyGame的基础架构。并学习如何在PyGame里绘制各种几何图形和显示加载图片。
01.应用框架
上一节的示例程序里,我们用到一个PyGame的应用程序框架。这是一个基础框架,利用它我们可以很轻松的添加各类图型绘制,键盘鼠标输入处理和各类逻辑管理。一句话,它是一切游戏设计的基础框架。我们必须把它读懂,再往下学习。
02.图元绘制
PyGame可以绘制各种几何图型、文字和图片。下面我们分别介绍它们是如何使用的。
几何图元
#绘制线pygame.draw.line(画布,颜色,起始点,终止点,线粗细)#绘制矩阵pygame.draw.rect(画布,颜色,(矩阵左上角坐标,矩阵长宽),线粗细)#绘制圆形pygame.draw.circle(画布,颜色,中心点坐标,半径,线粗细)#绘制椭圆pygame.draw.ellipse(画布,颜色,(矩阵坐标),线粗细)#绘制多边形pygame.draw.polygon(画布,颜色,[顶点列表],线粗细)#绘制连续线段pygame.draw.lines(画布,颜色,是否封闭,[顶点列表],线粗细)
文字显示
在PyGame显示文字比划图形复杂点。他分为四个步骤:
1、创建字体对像。创建字体对象有两种方法,一种是直接指定使用系统自带字体(字体文件名),另一种是加载外部字体文件。这两种方法差不多。做成软件的话,建议第二种方法。
#方法1:指定系统自带黑体字库#字体大小为32个像素font = pygame.font.SysFont("SimHei",32) #方法2:指定外部黑体字库#字体大小为32个像素#必须指定字体文件SimHei.ttf字体文件所在的路径。font = pygame.font.Font("SimHei.ttf",32)
2、调置字体格式。
#是否要文字加粗font.set_bold(True) #是否要文字斜体font.set_italic(True) #是否要下划线font.set_underline(True)
3、设置文字显示位置
#获取文字对象尺寸大小text_pos = text_obj.get_rect() #设置文本显示屏幕坐标,文本的中心点。text_pos.center = (300,100)
4、绘制文字
#在设定区域绘制文字canvas2d.blit(text_obj,text_pos);
图片显示
pygame支持两种类型图片显示。一种是不透明的位图(JPG和BMP),一种有透明的位图(PNG和GIF)。这两种图片使用方法是一样的。
#加载图片文件img01 = pygame.image.load("boy.jpg") #获得图片长和宽像素值,取其一半img01_w = img01.get_width()/2img01_h = img01.get_height()/2 #缩放图片img01 = pygame.transform.smoothscale(img01,(int(img01_w),int(img01_h)))#屏幕(10,10)位置显示图片canvas2d.blit(img01,(10,10))
03.综合示例
下面,我们写一个完整的程序,演示如何用PyGame绘制几何图型、文字和图片。
#包含pygame模块import pygame#包含pygame.locals模块,包含了 Pygame 定义的各种常量import pygame.locals#包含pygame.locals模块import pygame.locals #包含sys系统操作模块import sys #初始化pygamepygame.init() #设置应用程序窗口大小,返回画布canvas2d = pygame.display.set_mode((800,600)) #设置应用程序窗口标签名称pygame.display.set_caption('02.绘制图元')#========================================#设置使用黑体字font = pygame.font.SysFont("SimHei",30) #是否要文字加粗font.set_bold(True) #是否要文字斜体font.set_italic(True) #是否要下划线font.set_underline(True)#========================================#加载不透明图片文件img01 = pygame.image.load("zs.jpg") #获得图片长和宽像素值,取其四分之一img01_w = img01.get_width()/4img01_h = img01.get_height()/4 #缩放图片img01 = pygame.transform.smoothscale(img01,(int(img01_w),int(img01_h)))#========================================= #开启游戏循环while True: #轮询窗口事件 for event in pygame.event.get(): #如果获得关闭程序事件 if event.type== pygame.locals.QUIT: pygame.quit() #退出pygame sys.exit() #销毁程序 #绘制几何图型 #绘制线 pygame.draw.line(canvas2d,(255,0,0),(10,100),(100,100),4) #绘制矩阵 pygame.draw.rect(canvas2d,(0,255,0),(120,50,200,100),2) #绘制圆形 pygame.draw.circle(canvas2d,(0,0,255),(400,100),50,2) #绘制椭圆 pygame.draw.ellipse(canvas2d,(255,255,0),(500,75,200,50),1) #绘制多边形 plist1 = [(30,200),(30,300),(100,300)] pygame.draw.polygon(canvas2d,(0,255,255),plist1,2) #绘制连续线段 plist2 = [(230,200),(230,300),(320,300)] pygame.draw.lines(canvas2d,(255,0,255),False,plist2,2) #绘制文字 #把文字渲染到文本对象 #设置文字前景色和背景色 text_obj = font.render('PyGame显示字体!',True,(255,128,0),(128,128,128)) #获取文字对象尺寸大小 text_pos = text_obj.get_rect() #设置文本显示屏幕坐标,文本的中心点。 text_pos.center = (200,400) #绘制文字 canvas2d.blit(text_obj,text_pos); #屏幕(400,300)位置显示不透明图片 canvas2d.blit(img01,(400,300)) #窗口显示内容更新 pygame.display.update()
程序运行效果
关注我们