原作者:xishui
学程序一开始我们总会写一个Hello world程序,但那只是在屏幕上写了两个字,现在我们来点更帅的!写好以后会是这样的效果:
源码:
#!/usr/bin/env python #指定图像文件名称 background_image_filename = './img/Spaceship.png' mouse_image_filename = './img/star.png' #导入pygame库 import pygame #导入一些常用的函数和常量 from pygame.locals import * #向sys模块借一个exit函数用来退出程序 from sys import exit #初始化pygame,为使用硬件做准备 pygame.init() #创建了一个窗口 screen = pygame.display.set_mode((960, 720), 0, 32) #设置窗口标题 pygame.display.set_caption("Hello, World!") #加载并转换图像 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() #将背景图画上去 screen.blit(background, (0,0)) #获得鼠标位置 x, y = pygame.mouse.get_pos() #计算光标的左上角位置,坐标需要整数 x-= int(mouse_cursor.get_width() / 2) y-= int(mouse_cursor.get_height() / 2) #把光标画上去 screen.blit(mouse_cursor, (x, y)) #刷新一下画面 pygame.display.update()
这个程序需要两张图片,一张图作为界面的背景,另一张作为跟随鼠标的小图标。为了达到最佳效果,背景图片的分辨率要跟创建窗口的大小一致:
screen = pygame.display.set_mode((960, 720), 0, 32)#960x720是背景图的分辨率。
set_mode方法等下会详细介绍;而且图片需要要有Alpha通道,否则可能会报如下错误,那么你需要换张图。
set_mode会返回一个 Surface 对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分辨率(必须);第二个是一个标志位,具体意思见下表,如果不用什么特性,就指定0;第三个为色深。
convert函数是将图像数据都转化为Surface对象,每次加载完图像以后就应该做这件事件(事实上因为 它太常用了,如果你不写pygame也会帮你做);convert_alpha相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状。
游戏的主循环是一个无限循环,直到用户跳出。在这个主循环里做的事情就是不停地画背景和更新光标位置,虽然背景是不动的,我们还是需要每次都画它,否则鼠标覆盖过的位置就不能恢复正常了。
blit是个重要函数,第一个参数为一个Surface对象,第二个为左上角位置。画完以后一定记得用update更新一下,否则画面一片漆黑。
这是一个最最大概的Pygame程序的印象,接下来我们会学习更多深层次的东西,并且把各条语句都真正读懂。
本站内容未经许可,禁止任何网站及个人进行转载。