第一部分主要是实现游戏背景实现和第一游戏窗口。
Pygame有很多的模块,下面是一张一览表:
代码示例:
#-*- coding:utf-8 -*- #指向背景图和光标图片 background_image_filename = './images/sushiplate.jpg' mouse_image_filename = './images/fugu.png' #导入相关模块 import pygame #导入一些常用函数 from pygame.locals import * #退出函数 from sys import exit #初始化pygame pygame.init() #创建了一个长为640宽480的窗口来显示游戏界面 screen = pygame.display.set_mode((640, 480), 0, 32) #设置窗口标题 pygame.display.set_caption("Hello, World!") #image.load用来加载图片 background = pygame.image.load(background_image_filename).convert() mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha() #游戏主循环 while True: #点×退出程序 for event in pygame.event.get(): if event.type == QUIT: exit() #blit将背景图画到窗口上 screen.blit(background, (0,0)) #获得鼠标位置 x, y = pygame.mouse.get_pos() #定位光标左上角,开始时光标在窗口中间 x -= mouse_cursor.get_width() / 2 y -= mouse_cursor.get_height() / 2 #把光标画上去 screen.blit(mouse_cursor, (x, y)) #刷新画面 pygame.display.update()
程序用到的背景图和光标图片:
实现:
set_mode会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个是一个标志位,具体意思见下表,如果不用什么特性,就指定0;第三个为色深。
convert函数是将图像数据都转化为Surface对象,每次加载完图像以后就应该做这件事件(事实上因为 它太常用了,如果你不写pygame也会帮你做);convert_alpha相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状。一般只有背景图会使用convert,其他图片如果只使用convert会是一个长方形,在图片不规则形状外全为黑色。可以选择不加convert或者convert_alpha,解决黑框。
游戏的主循环是一个无限循环,直到用户跳出。在这个主循环里做的事情就是不停地画背景和更新光标位置,虽然背景是不动的,我们还是需要每次都画它, 否则鼠标覆盖过的位置就不能恢复正常了。可以理解为一个一直循环播放的图片,就像放动画片一样,一直重复刷新画面。
扫描二维码关注公众号,回复:
1563425 查看本文章
blit是个重要函数,第一个参数为一个Surface对象,第二个为左上角位置。画完以后一定记得用update更新一下,否则画面一片漆黑。
以上内容学习至http://eyehere.net/2011/python-pygame-novice-professional-1/