本系列博客介绍以python+pygame库进行小游戏的开发。有写的不对之处还望各位海涵。
这次我们来一起了解一下如何在pygame中加载位图,以及pygame中一些常用的数学函数。
一、pygame中常用的数学函数
首先介绍两个角度和弧度转换的函数:
math.degress()和math.radians(),用法很简单,只要将数值传进去然后接收返回值就可以了。
math.cos(angle),math.sin(angle),这里的angle使用的是弧度表示的,因此需要先使用math.radians(),将角度转换为弧度然后再传参。
如果要获取当前时间,我们需要使用datetime模块。
首先从datetime导入date和time:
1 |
from datetime import datetime, date, time |
使用datetime.today()函数可以获取当前的日期和事件:
1 |
today = datetime.today() |
today变量里面包含了很多信息,如果我们直接将其打印出来:
1 2 |
print today 2015-11-24 17:00:23.162000 |
这样很不方便我们使用,所以需要对其进行进一步的拆分:
1 2 3 4 5 |
today.date() datetime.date(2015, 11, 24) today.time() datetime.time(17, 0, 23, 162000) |
如果只需要当前时间而不需要当前日期的话,可以直接使用datetime.today().time()函数:
1 |
Time = datetime.today().time() |
Time有很多属性,Time.hour Time.minute Time.second Time.microsecond,看名字就知道是什么了。
二、pygame中加载位图、绘制位图
通常,游戏中需要加载大量的位图,pygame中自带了一些类和函数可以帮助我们轻松的搞定位图加载和绘制。
1 |
screen = pygame.display.set_mode |
上面的代码,我们在前几期的博客中已经使用过很多次了,实际上pygame.display.set_mode()这个函数会返回一个Surface对象,他是位图的一种。
实例中需要的一些素材可以到这里下载:http://yunpan.cn/cLI5cDKQU8sYG 访问密码 c83a
1.加载位图
在pygame中可以使用pygame.image.load()函数来加载位图。(支持jpg,png,gif,bmp,pcx,tif,tga等多种图片格式)。
现在让我们来加载一个位图试试:
1 |
space = pygame.image.load("space.png").convert_alpha() |
convert_alpha()方法会使用透明的方法绘制前景对象,因此在加载一个有alpha通道的素材时(比如PNG TGA),需要使用convert_alpha()方法,当然普通的图片也是可以使用这个方法的,用了也不会有什么副作用。
2.绘制位图
Surface对象有一个名为blit()的方法,它可以绘制位图
1 |
screen.blit(space, (0,0)) |
第一个参数是加载完成的位图,第二个参数是绘制的起始坐标。我们来看一下完整的程序和效果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
1 import sys, random, math, pygame 2 from pygame.locals import * 3 4 pygame.init() 5 screen = pygame.display.set_mode((800,600)) 6 pygame.display.set_caption("星空") 7 font = pygame.font.Font(None, 18) ayon-sy">.font.Font(None, 18) հ。
一、pygame中常用的数学函数 首先介绍两个角度和弧度转换的函数: math.degress()和math.radians(),用法很简单,只要将数值传进去然后接收返回值就可以了。 math.cos(angle),math.sin(angle),这里的angle使用的是弧度表示的,因此需要先使用math.radians(),将角度转换为弧度然后再传参。 如果要获取当前时间,我们需要使用datetime模块。 首先从datetime导入date和time:
使用datetime.today()函数可以获取当前的日期和事件:
today变量里面包含了很多信息,如果我们直接将其打印出来:
这样很不方便我们使用,所以需要对其进行进一步的拆分:
如果只需要当前时间而不需要当前日期的话,可以直接使用datetime.today().time()函数:
Time有很多属性,Time.hour Time.minute Time.second Time.microsecond,看名字就知道是什么了。 二、pygame中加载位图、绘制位图 通常,游戏中需要加载大量的位图,pygame中自带了一些类和函数可以帮助我们轻松的搞定位图加载和绘制。
上面的代码,我们在前几期的博客中已经使用过很多次了,实际上pygame.display.set_mode()这个函数会返回一个Surface对象,他是位图的一种。 实例中需要的一些素材可以到这里下载:http://yunpan.cn/cLI5cDKQU8sYG 访问密码 c83a 1.加载位图 在pygame中可以使用pygame.image.load()函数来加载位图。(支持jpg,png,gif,bmp,pcx,tif,tga等多种图片格式)。 现在让我们来加载一个位图试试:
convert_alpha()方法会使用透明的方法绘制前景对象,因此在加载一个有alpha通道的素材时(比如PNG TGA),需要使用convert_alpha()方法,当然普通的图片也是可以使用这个方法的,用了也不会有什么副作用。 2.绘制位图 Surface对象有一个名为blit()的方法,它可以绘制位图
第一个参数是加载完成的位图,第二个参数是绘制的起始坐标。我们来看一下完整的程序和效果:
|