Python游戏编程之旅(4):pygame中加载位图与常用的数学函数
admin
2023-07-31 00:46:42
0

本系列博客介绍以python+pygame库进行小游戏的开发。有写的不对之处还望各位海涵。

在上一篇博客中,我们学习了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变量里面包含了很多信息,如果我们直接将其打印出来:

12 print today20151124 17:00:23.162000

这样很不方便我们使用,所以需要对其进行进一步的拆分:

12345 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))

第一个参数是加载完成的位图,第二个参数是绘制的起始坐标。我们来看一下完整的程序和效果:

123456789101112131415161718192021 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:

1 from datetime import datetime, date, time

使用datetime.today()函数可以获取当前的日期和事件:

1 today = datetime.today()

today变量里面包含了很多信息,如果我们直接将其打印出来:

12 print today20151124 17:00:23.162000

这样很不方便我们使用,所以需要对其进行进一步的拆分:

12345 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))

第一个参数是加载完成的位图,第二个参数是绘制的起始坐标。我们来看一下完整的程序和效果:

123456789101112131415161718192021 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

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...