博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Make Game with Python & Pygame (3)
阅读量:6237 次
发布时间:2019-06-22

本文共 2537 字,大约阅读时间需要 8 分钟。

hot3.png

接着来介绍Pygame一些基础的东西。

Drawing Images with pygame.image.load() and blit()

很多游戏都不只是用简单的画图函数就可以完成的,还需要各种各样的图片(也被称作精灵)pygame可以加载到surface对象上的图片格式有PNG, JPG, GIF和BMP。关于格式的不同地方可以上网搜索。

接着对上篇最后的一段代码里面的东西做些介绍。

pygame.image.load()函数返回一个surface对象用于显示图片。这个surface对象和显示窗口对象是分离的,所以我们必须把图片显示对象复制到显示窗口对象通过blit()方法。

方法使用如下:

DISPLAYSURF.blit(catImg, (catx, caty))

第一个参数是要加载的图片对象,第二个参数是有两个整数的元组分别表示图片将要显示的左上角X和Y的坐标值。

字体

游戏都需要显示文字,pygame为字体和创建文本提供了一些简单的函数。下面就是一个使用pygame字体的程序。

import pygame, sysfrom pygame.locals import *pygame.init()DISPLAYSURF = pygame.display.set_mode((400,300))pygame.display.set_caption("Hello World")WHITE = (255, 255, 255)GREEN = (0, 255, 0)BLUE = (0, 0 ,128)fontObj = pygame.font.Font('freesansbold.ttf', 32)textSurfaceObj = fontObj.render('Hello World!', True, GREEN, BLUE)textRectObj = textSurfaceObj.get_rect()textRectObj.center = (200, 150)while True:    DISPLAYSURF.fill(WHITE)    DISPLAYSURF.blit(textSurfaceObj, textRectObj)    for event in pygame.event.get():        if event.type == QUIT:            pygame.quit()            sys.exit()    pygame.display.update()
执行后的效果如图:

将字体显示在屏幕上有六个步骤:

  1. 创建一个pygame.font.Font对象
  2. 创建一个surface对象用于存放字体显示,这需要通过调用字体对象的render()方法
  3. 创建一个矩形对象通过调用surface对象的get_rect()方法。这个矩形对象将拥有字体的宽度与高度。但是top和left属性值为0
  4. 设置矩形对象的位置通过改变它的一个属性值。在这里我们设置了矩形对象的中心在200,150
  5. 将存放字体的显示对象复制到显示窗口对象(来自pygame.display.set_mode()方法返回的对象)
  6. 调用pygame.display.update()让显示窗口对象显示在屏幕上
pygame.font.Font()的构造函数的参数是一个字体文件和一个表示字体大小的整数。我们传递了"freesansbold.ttf"(这个字体来自pygame)和整数32.
render()方法的参数是一个要显示的字符串,一个BOOL类型的值决定是否需要抗锯齿,文字的颜色,文字的背景颜色。如果想要个透明的背景颜色,那么只需要在调用该方法是不传递最后一个背景颜色参数。
抗锯齿,这个是概念的东西。(略)
播放声音
播放声音甚至比显示图片更简单。首先,需要创建一个pygame.mixer.Sound对象通过调用pygame.mixer.Sound()构造函数。它需要一个字符串参数,也就是声音文件名。pygame可以加载wav, mp3,或者oog的声音格式文件。
播放声音需要调用声音对象的play()方法。如果想立即停止声音则调用stop()方法。stop()方法没有参数。下面一段加载声音的简单代码:
soundObj = pygame.mixer.Sound('beeps.wav')soundObj.play()import timetime.sleep(1)soundObj.stop()
声音对象可以造成很好的声音效果当游戏者具体做了某件事时,比如受到伤害,拾起一个硬币等。游戏最好也能有背景音乐无论游戏进行到何时。Pygame只能加载一个音乐文件用作背景音乐在一个时刻。为了加载一个背景音乐文件,调用pygame.mixer.music.load()函数传递一个关于音乐文件名的字符串。音乐文件格式可以是WAV,MPS,MIDI.
开始播放背景音乐,需要调用pygame.mixer.music.play(-1,0.0)函数,-1这个参数使背景音乐永远播放直到音乐文件末尾。如果设置为0或者比0大的整数,那么音乐就只循环传递的整数代表的那么多次,而不是永远循环。0.0表示从音乐文件开始处播放音乐。传递多少值就从多少值开始播放音乐。为了停止背景音乐,需要调用pygame.mixer.music.stop()函数,此函数没有参数。
下面的代码是关于音乐文件处理的一些方法:
pygame.mixer.music.load('backgroundmusic.mp3')pygame.mixer.music.play(-1,0.0)#....some more of your code goes here..pygame.mixer.music.stop()
上面差不多就是pygame的一些基础的东西了,然后作者就以每章一个游戏来继续pygame的介绍,而且注释解释说明写的都很详细,实在是本好书啊。

转载于:https://my.oschina.net/u/1587304/blog/399876

你可能感兴趣的文章
maven实战 读书笔记三#高级程序员进阶之路#
查看>>
硬盘安装windows 7
查看>>
编译器编译原理--详解
查看>>
第五章 择偶
查看>>
用Fiddler模拟低速网络环境
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
Python练习2
查看>>
新安装的python2.7无法加载error while loading shared libraries: libpython2.7.so.1.0
查看>>
js反混淆解密
查看>>
Exchange Server 2010 DAG搭建及灾难恢复部署方案(准备环境)
查看>>
Android使用本地页面调用android代码
查看>>
MyBatise配置使用
查看>>
nodeJS
查看>>
编写易于理解代码的六种方式
查看>>
linux http虚拟主机的实现(3种方法)
查看>>
记ie8 挂起问题
查看>>
heartbeat高可用集群搭建
查看>>
HashMap实现原理
查看>>
第四章广域网基本原理
查看>>
Boost库学习(2)thread 1
查看>>