pygame render怎么显示中文_PyGame开发游戏(2D)02.基础图元

这节将介绍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()

2dd4a974a0066c3a86f108668a0feef6.png

程序运行效果


cee6bfea017281605babb43d0e6f3d1e.png

关注我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值